1# Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2# file Copyright.txt or https://cmake.org/licensing for details. 3 4#[=======================================================================[.rst: 5FindJPEG 6-------- 7 8Find the Joint Photographic Experts Group (JPEG) library (``libjpeg``) 9 10Imported targets 11^^^^^^^^^^^^^^^^ 12 13.. versionadded:: 3.12 14 15This module defines the following :prop_tgt:`IMPORTED` targets: 16 17``JPEG::JPEG`` 18 The JPEG library, if found. 19 20Result variables 21^^^^^^^^^^^^^^^^ 22 23This module will set the following variables in your project: 24 25``JPEG_FOUND`` 26 If false, do not try to use JPEG. 27``JPEG_INCLUDE_DIRS`` 28 where to find jpeglib.h, etc. 29``JPEG_LIBRARIES`` 30 the libraries needed to use JPEG. 31``JPEG_VERSION`` 32 .. versionadded:: 3.12 33 the version of the JPEG library found 34 35Cache variables 36^^^^^^^^^^^^^^^ 37 38The following cache variables may also be set: 39 40``JPEG_INCLUDE_DIRS`` 41 where to find jpeglib.h, etc. 42``JPEG_LIBRARY_RELEASE`` 43 where to find the JPEG library (optimized). 44``JPEG_LIBRARY_DEBUG`` 45 where to find the JPEG library (debug). 46 47.. versionadded:: 3.12 48 Debug and Release variand are found separately. 49 50Obsolete variables 51^^^^^^^^^^^^^^^^^^ 52 53``JPEG_INCLUDE_DIR`` 54 where to find jpeglib.h, etc. (same as JPEG_INCLUDE_DIRS) 55``JPEG_LIBRARY`` 56 where to find the JPEG library. 57#]=======================================================================] 58 59find_path(JPEG_INCLUDE_DIR jpeglib.h) 60 61set(jpeg_names ${JPEG_NAMES} jpeg jpeg-static libjpeg libjpeg-static) 62foreach(name ${jpeg_names}) 63 list(APPEND jpeg_names_debug "${name}d") 64endforeach() 65 66if(NOT JPEG_LIBRARY) 67 find_library(JPEG_LIBRARY_RELEASE NAMES ${jpeg_names} NAMES_PER_DIR) 68 find_library(JPEG_LIBRARY_DEBUG NAMES ${jpeg_names_debug} NAMES_PER_DIR) 69 include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) 70 select_library_configurations(JPEG) 71 mark_as_advanced(JPEG_LIBRARY_RELEASE JPEG_LIBRARY_DEBUG) 72endif() 73unset(jpeg_names) 74unset(jpeg_names_debug) 75 76if(JPEG_INCLUDE_DIR) 77 file(GLOB _JPEG_CONFIG_HEADERS_FEDORA "${JPEG_INCLUDE_DIR}/jconfig*.h") 78 file(GLOB _JPEG_CONFIG_HEADERS_DEBIAN "${JPEG_INCLUDE_DIR}/*/jconfig.h") 79 set(_JPEG_CONFIG_HEADERS 80 "${JPEG_INCLUDE_DIR}/jpeglib.h" 81 ${_JPEG_CONFIG_HEADERS_FEDORA} 82 ${_JPEG_CONFIG_HEADERS_DEBIAN}) 83 foreach (_JPEG_CONFIG_HEADER IN LISTS _JPEG_CONFIG_HEADERS) 84 if (NOT EXISTS "${_JPEG_CONFIG_HEADER}") 85 continue () 86 endif () 87 file(STRINGS "${_JPEG_CONFIG_HEADER}" 88 jpeg_lib_version REGEX "^#define[\t ]+JPEG_LIB_VERSION[\t ]+.*") 89 90 if (NOT jpeg_lib_version) 91 continue () 92 endif () 93 94 string(REGEX REPLACE "^#define[\t ]+JPEG_LIB_VERSION[\t ]+([0-9]+).*" 95 "\\1" JPEG_VERSION "${jpeg_lib_version}") 96 break () 97 endforeach () 98 unset(jpeg_lib_version) 99 unset(_JPEG_CONFIG_HEADER) 100 unset(_JPEG_CONFIG_HEADERS) 101 unset(_JPEG_CONFIG_HEADERS_FEDORA) 102 unset(_JPEG_CONFIG_HEADERS_DEBIAN) 103endif() 104 105include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) 106find_package_handle_standard_args(JPEG 107 REQUIRED_VARS JPEG_LIBRARY JPEG_INCLUDE_DIR 108 VERSION_VAR JPEG_VERSION) 109 110if(JPEG_FOUND) 111 set(JPEG_LIBRARIES ${JPEG_LIBRARY}) 112 set(JPEG_INCLUDE_DIRS "${JPEG_INCLUDE_DIR}") 113 114 if(NOT TARGET JPEG::JPEG) 115 add_library(JPEG::JPEG UNKNOWN IMPORTED) 116 if(JPEG_INCLUDE_DIRS) 117 set_target_properties(JPEG::JPEG PROPERTIES 118 INTERFACE_INCLUDE_DIRECTORIES "${JPEG_INCLUDE_DIRS}") 119 endif() 120 if(EXISTS "${JPEG_LIBRARY}") 121 set_target_properties(JPEG::JPEG PROPERTIES 122 IMPORTED_LINK_INTERFACE_LANGUAGES "C" 123 IMPORTED_LOCATION "${JPEG_LIBRARY}") 124 endif() 125 if(EXISTS "${JPEG_LIBRARY_RELEASE}") 126 set_property(TARGET JPEG::JPEG APPEND PROPERTY 127 IMPORTED_CONFIGURATIONS RELEASE) 128 set_target_properties(JPEG::JPEG PROPERTIES 129 IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" 130 IMPORTED_LOCATION_RELEASE "${JPEG_LIBRARY_RELEASE}") 131 endif() 132 if(EXISTS "${JPEG_LIBRARY_DEBUG}") 133 set_property(TARGET JPEG::JPEG APPEND PROPERTY 134 IMPORTED_CONFIGURATIONS DEBUG) 135 set_target_properties(JPEG::JPEG PROPERTIES 136 IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C" 137 IMPORTED_LOCATION_DEBUG "${JPEG_LIBRARY_DEBUG}") 138 endif() 139 endif() 140endif() 141 142mark_as_advanced(JPEG_LIBRARY JPEG_INCLUDE_DIR) 143