Merge topic 'cxx-checks-tolerate-unused-arguments'
[kiteware-cmake.git] / Modules / FindJasper.cmake
blob79afcd508d6d2aa8e5c07d3291ca8f403fd4335c
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:
5 FindJasper
6 ----------
8 Find the Jasper JPEG2000 library.
10 IMPORTED Targets
11 ^^^^^^^^^^^^^^^^
13 ``Jasper::Jasper``
14   The jasper library, if found.
16 Result Variables
17 ^^^^^^^^^^^^^^^^
19 This module defines the following variables:
21 ``JASPER_FOUND``
22   system has Jasper
23 ``JASPER_INCLUDE_DIRS``
24   .. versionadded:: 3.22
26   the Jasper include directory
27 ``JASPER_LIBRARIES``
28   the libraries needed to use Jasper
29 ``JASPER_VERSION_STRING``
30   the version of Jasper found
32 Cache variables
33 ^^^^^^^^^^^^^^^
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 #]=======================================================================]
45 cmake_policy(PUSH)
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)
52   find_package(JPEG)
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)
57 endif()
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}")
62 endif()
64 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
65 find_package_handle_standard_args(Jasper
66                                   REQUIRED_VARS JASPER_LIBRARIES JASPER_INCLUDE_DIR JPEG_LIBRARIES
67                                   VERSION_VAR JASPER_VERSION_STRING)
69 if(JASPER_FOUND)
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}")
77     endif()
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}")
84     endif()
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}")
91     endif()
92   endif()
93 endif()
95 cmake_policy(POP)