1 # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
4 #[=======================================================================[.rst:
8 Find the Jasper JPEG2000 library.
14 The jasper library, if found.
19 This module defines the following variables:
23 ``JASPER_INCLUDE_DIRS``
24 .. versionadded:: 3.22
26 the Jasper include directory
28 the libraries needed to use Jasper
29 ``JASPER_VERSION_STRING``
30 the version of Jasper found
35 The following cache variables may also be set:
37 ``JASPER_INCLUDE_DIR``
38 where to find jasper/jasper.h, etc.
39 ``JASPER_LIBRARY_RELEASE``
40 where to find the Jasper library (optimized).
41 ``JASPER_LIBARRY_DEBUG``
42 where to find the Jasper library (debug).
43 #]=======================================================================]
46 cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
48 find_path(JASPER_INCLUDE_DIR jasper/jasper.h)
49 mark_as_advanced(JASPER_INCLUDE_DIR)
51 if(NOT JASPER_LIBRARIES)
53 find_library(JASPER_LIBRARY_RELEASE NAMES jasper libjasper)
54 find_library(JASPER_LIBRARY_DEBUG NAMES jasperd)
55 include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
56 select_library_configurations(JASPER)
59 if(JASPER_INCLUDE_DIR AND EXISTS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h")
60 file(STRINGS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" jasper_version_str REGEX "^#define[\t ]+JAS_VERSION[\t ]+\".*\".*")
61 string(REGEX REPLACE "^#define[\t ]+JAS_VERSION[\t ]+\"([^\"]+)\".*" "\\1" JASPER_VERSION_STRING "${jasper_version_str}")
64 include(FindPackageHandleStandardArgs)
65 find_package_handle_standard_args(Jasper
66 REQUIRED_VARS JASPER_LIBRARIES JASPER_INCLUDE_DIR JPEG_LIBRARIES
67 VERSION_VAR JASPER_VERSION_STRING)
70 set(JASPER_LIBRARIES ${JASPER_LIBRARIES} ${JPEG_LIBRARIES})
71 set(JASPER_INCLUDE_DIRS ${JASPER_INCLUDE_DIR})
72 if(NOT TARGET Jasper::Jasper)
73 add_library(Jasper::Jasper UNKNOWN IMPORTED)
74 if(JASPER_INCLUDE_DIRS)
75 set_target_properties(Jasper::Jasper PROPERTIES
76 INTERFACE_INCLUDE_DIRECTORIES "${JASPER_INCLUDE_DIRS}")
78 if(EXISTS "${JASPER_LIBRARY_RELEASE}")
79 set_property(TARGET Jasper::Jasper APPEND PROPERTY
80 IMPORTED_CONFIGURATIONS RELEASE)
81 set_target_properties(Jasper::Jasper PROPERTIES
82 IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
83 IMPORTED_LOCATION "${JASPER_LIBRARY_RELEASE}")
85 if(EXISTS "${JASPER_LIBRARY_DEBUG}")
86 set_property(TARGET Jasper::Jasper APPEND PROPERTY
87 IMPORTED_CONFIGURATIONS DEBUG)
88 set_target_properties(Jasper::Jasper PROPERTIES
89 IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
90 IMPORTED_LOCATION "${JASPER_LIBRARY_DEBUG}")