summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-04-19 12:26:28 (GMT)
committerKitware Robot <kwrobot@kitware.com>2018-04-19 12:26:34 (GMT)
commitc14497191bf4412b7b7f5241030f251373e4c0ae (patch)
tree3531b463471a188f58dfa53b43069ba726945230 /Modules
parent1a2eb621053c3f32c6eca2a962af436c0bd1044a (diff)
parent87f2cf3b1ce0ef7b8e71eae0f44cf9753660d423 (diff)
downloadCMake-c14497191bf4412b7b7f5241030f251373e4c0ae.zip
CMake-c14497191bf4412b7b7f5241030f251373e4c0ae.tar.gz
CMake-c14497191bf4412b7b7f5241030f251373e4c0ae.tar.bz2
Merge topic 'FindJPEG-imported-targets'
87f2cf3b1c FindJPEG: Add imported target support and full test 13952a3b7f FindJPEG: Add multi config support and associated docs 1f6649b7d1 FindJPEG: Add version detection and associated test update and docs 8d07408a62 FindJPEG: Cleanup documentation formatting e70da3f0f3 FindJPEG: Clean up whitepaces and lowercase function names Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1974
Diffstat (limited to 'Modules')
-rw-r--r--Modules/FindJPEG.cmake119
1 files changed, 104 insertions, 15 deletions
diff --git a/Modules/FindJPEG.cmake b/Modules/FindJPEG.cmake
index e233714..9542f69 100644
--- a/Modules/FindJPEG.cmake
+++ b/Modules/FindJPEG.cmake
@@ -5,38 +5,127 @@
# FindJPEG
# --------
#
-# Find JPEG
+# Find the JPEG library (libjpeg)
#
-# Find the native JPEG includes and library This module defines
+# Imported targets
+# ^^^^^^^^^^^^^^^^
#
-# ::
+# This module defines the following :prop_tgt:`IMPORTED` targets:
#
-# JPEG_INCLUDE_DIR, where to find jpeglib.h, etc.
-# JPEG_LIBRARIES, the libraries needed to use JPEG.
-# JPEG_FOUND, If false, do not try to use JPEG.
+# ``JPEG::JPEG``
+# The JPEG library, if found.
#
-# also defined, but not for general use are
+# Result variables
+# ^^^^^^^^^^^^^^^^
#
-# ::
+# This module will set the following variables in your project:
#
-# JPEG_LIBRARY, where to find the JPEG library.
+# ``JPEG_FOUND``
+# If false, do not try to use JPEG.
+# ``JPEG_INCLUDE_DIRS``
+# where to find jpeglib.h, etc.
+# ``JPEG_LIBRARIES``
+# the libraries needed to use JPEG.
+# ``JPEG_VERSION``
+# the version of the JPEG library found
+#
+# Cache variables
+# ^^^^^^^^^^^^^^^
+#
+# The following cache variables may also be set:
+#
+# ``JPEG_INCLUDE_DIRS``
+# where to find jpeglib.h, etc.
+# ``JPEG_LIBRARY_RELEASE``
+# where to find the JPEG library (optimized).
+# ``JPEG_LIBRARY_DEBUG``
+# where to find the JPEG library (debug).
+#
+# Obsolete variables
+# ^^^^^^^^^^^^^^^^^^
+#
+# ``JPEG_INCLUDE_DIR``
+# where to find jpeglib.h, etc. (same as JPEG_INCLUDE_DIRS)
+# ``JPEG_LIBRARY``
+# where to find the JPEG library.
find_path(JPEG_INCLUDE_DIR jpeglib.h)
-set(JPEG_NAMES ${JPEG_NAMES} jpeg libjpeg)
-find_library(JPEG_LIBRARY NAMES ${JPEG_NAMES} )
+set(jpeg_names ${JPEG_NAMES} jpeg libjpeg)
+foreach(name ${JPEG_NAMES})
+ list(APPEND jpeg_names_debug "${name}d")
+endforeach()
+
+if(NOT JPEG_LIBRARY)
+ find_library(JPEG_LIBRARY_RELEASE NAMES ${jpeg_names})
+ find_library(JPEG_LIBRARY_DEBUG NAMES ${jpeg_names_debug})
+ include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+ select_library_configurations(JPEG)
+ mark_as_advanced(JPEG_LIBRARY_RELEASE JPEG_LIBRARY_DEBUG)
+endif()
+unset(jpeg_names)
+unset(jpeg_names_debug)
+
+if(JPEG_INCLUDE_DIR AND EXISTS "${JPEG_INCLUDE_DIR}/jpeglib.h")
+ file(STRINGS "${JPEG_INCLUDE_DIR}/jpeglib.h"
+ jpeg_lib_version REGEX "^#define[\t ]+JPEG_LIB_VERSION[\t ]+.*")
+
+ if (NOT jpeg_lib_version)
+ # libjpeg-turbo sticks JPEG_LIB_VERSION in jconfig.h
+ find_path(jconfig_dir jconfig.h)
+ if (jconfig_dir)
+ file(STRINGS "${jconfig_dir}/jconfig.h"
+ jpeg_lib_version REGEX "^#define[\t ]+JPEG_LIB_VERSION[\t ]+.*")
+ endif()
+ unset(jconfig_dir)
+ endif()
+
+ string(REGEX REPLACE "^#define[\t ]+JPEG_LIB_VERSION[\t ]+([0-9]+).*"
+ "\\1" JPEG_VERSION "${jpeg_lib_version}")
+ unset(jpeg_lib_version)
+endif()
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(JPEG DEFAULT_MSG JPEG_LIBRARY JPEG_INCLUDE_DIR)
+find_package_handle_standard_args(JPEG
+ REQUIRED_VARS JPEG_LIBRARY JPEG_INCLUDE_DIR
+ VERSION_VAR JPEG_VERSION)
if(JPEG_FOUND)
set(JPEG_LIBRARIES ${JPEG_LIBRARY})
+ set(JPEG_INCLUDE_DIRS "${JPEG_INCLUDE_DIR}")
+
+ if(NOT TARGET JPEG::JPEG)
+ add_library(JPEG::JPEG UNKNOWN IMPORTED)
+ if(JPEG_INCLUDE_DIRS)
+ set_target_properties(JPEG::JPEG PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${JPEG_INCLUDE_DIRS}")
+ endif()
+ if(EXISTS "${JPEG_LIBRARY}")
+ set_target_properties(JPEG::JPEG PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION "${JPEG_LIBRARY}")
+ endif()
+ if(EXISTS "${JPEG_LIBRARY_RELEASE}")
+ set_property(TARGET JPEG::JPEG APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(JPEG::JPEG PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+ IMPORTED_LOCATION_RELEASE "${JPEG_LIBRARY_RELEASE}")
+ endif()
+ if(EXISTS "${JPEG_LIBRARY_DEBUG}")
+ set_property(TARGET JPEG::JPEG APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(JPEG::JPEG PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+ IMPORTED_LOCATION_DEBUG "${JPEG_LIBRARY_DEBUG}")
+ endif()
+ endif()
endif()
# Deprecated declarations.
-set (NATIVE_JPEG_INCLUDE_PATH ${JPEG_INCLUDE_DIR} )
+set(NATIVE_JPEG_INCLUDE_PATH ${JPEG_INCLUDE_DIR})
if(JPEG_LIBRARY)
- get_filename_component (NATIVE_JPEG_LIB_PATH ${JPEG_LIBRARY} PATH)
+ get_filename_component(NATIVE_JPEG_LIB_PATH ${JPEG_LIBRARY} PATH)
endif()
-mark_as_advanced(JPEG_LIBRARY JPEG_INCLUDE_DIR )
+mark_as_advanced(JPEG_LIBRARY JPEG_INCLUDE_DIR)