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:
5FindJasper
6----------
7
8Find the Jasper JPEG2000 library.
9
10IMPORTED Targets
11^^^^^^^^^^^^^^^^
12
13``Jasper::Jasper``
14  The jasper library, if found.
15
16Result Variables
17^^^^^^^^^^^^^^^^
18
19This module defines the following variables:
20
21``JASPER_FOUND``
22  system has Jasper
23``JASPER_INCLUDE_DIRS``
24  .. versionadded:: 3.22
25
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
31
32Cache variables
33^^^^^^^^^^^^^^^
34
35The following cache variables may also be set:
36
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#]=======================================================================]
44
45find_path(JASPER_INCLUDE_DIR jasper/jasper.h)
46mark_as_advanced(JASPER_INCLUDE_DIR)
47
48if(NOT JASPER_LIBRARIES)
49  find_package(JPEG)
50  find_library(JASPER_LIBRARY_RELEASE NAMES jasper libjasper)
51  find_library(JASPER_LIBRARY_DEBUG NAMES jasperd)
52  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
53  select_library_configurations(JASPER)
54endif()
55
56if(JASPER_INCLUDE_DIR AND EXISTS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h")
57  file(STRINGS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" jasper_version_str REGEX "^#define[\t ]+JAS_VERSION[\t ]+\".*\".*")
58  string(REGEX REPLACE "^#define[\t ]+JAS_VERSION[\t ]+\"([^\"]+)\".*" "\\1" JASPER_VERSION_STRING "${jasper_version_str}")
59endif()
60
61include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
62find_package_handle_standard_args(Jasper
63                                  REQUIRED_VARS JASPER_LIBRARIES JASPER_INCLUDE_DIR JPEG_LIBRARIES
64                                  VERSION_VAR JASPER_VERSION_STRING)
65
66if(JASPER_FOUND)
67  set(JASPER_LIBRARIES ${JASPER_LIBRARIES} ${JPEG_LIBRARIES})
68  set(JASPER_INCLUDE_DIRS ${JASPER_INCLUDE_DIR})
69  if(NOT TARGET Jasper::Jasper)
70    add_library(Jasper::Jasper UNKNOWN IMPORTED)
71    if(JASPER_INCLUDE_DIRS)
72      set_target_properties(Jasper::Jasper PROPERTIES
73        INTERFACE_INCLUDE_DIRECTORIES "${JASPER_INCLUDE_DIRS}")
74    endif()
75    if(EXISTS "${JASPER_LIBRARY_RELEASE}")
76      set_property(TARGET Jasper::Jasper APPEND PROPERTY
77        IMPORTED CONFIGURATION RELEASE)
78      set_target_properties(Jasper::Jasper PROPERTIES
79        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
80        IMPORTED_LOCATION "${JASPER_LIBRARY_RELEASE}")
81    endif()
82    if(EXISTS "${JASPER_LIBRARY_DEBUG}")
83      set_property(TARGET Jasper::Jasper APPEND PROPERTY
84        IMPORTED CONFIGURATION DEBUG)
85      set_target_properties(Jasper::Jasper PROPERTIES
86        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
87        IMPORTED_LOCATION "${JASPER_LIBRARY_DEBUG}")
88    endif()
89  endif()
90endif()
91