summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2021-10-07 13:21:55 (GMT)
committerKitware Robot <kwrobot@kitware.com>2021-10-07 13:22:11 (GMT)
commit6e037a04e780f8516dd0a2b5221f2af4e6b20e1d (patch)
treea0a8bfacef7e4ece039a1b9054d42434f0c87247
parenteb724e938ae82e50f2b45a1d3dd9c4571fc4fec0 (diff)
parent6e8754c6251bc2f7edfb0d71303e1b85fce93f5e (diff)
downloadCMake-6e037a04e780f8516dd0a2b5221f2af4e6b20e1d.zip
CMake-6e037a04e780f8516dd0a2b5221f2af4e6b20e1d.tar.gz
CMake-6e037a04e780f8516dd0a2b5221f2af4e6b20e1d.tar.bz2
Merge topic 'FindJasper-imported-target'
6e8754c625 FindJasper: Add IMPORTED target bdbce845cd FindJasper: Add JASPER_INCLUDE_DIRS result variable 7f8413c309 FindJasper: Modernize documentation layout 524205a7a5 FindJasper: Modernize code layout Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4633
-rw-r--r--Help/release/dev/FindJasper-imported-target.rst4
-rw-r--r--Modules/FindJasper.cmake95
-rw-r--r--Tests/CMakeLists.txt1
-rw-r--r--Tests/FindJasper/CMakeLists.txt10
-rw-r--r--Tests/FindJasper/Test/CMakeLists.txt16
-rw-r--r--Tests/FindJasper/Test/main.c17
6 files changed, 117 insertions, 26 deletions
diff --git a/Help/release/dev/FindJasper-imported-target.rst b/Help/release/dev/FindJasper-imported-target.rst
new file mode 100644
index 0000000..33ee885
--- /dev/null
+++ b/Help/release/dev/FindJasper-imported-target.rst
@@ -0,0 +1,4 @@
+FindJasper-imported-target
+--------------------------
+
+* The :module:`FindJasper` module now provides an imported target.
diff --git a/Modules/FindJasper.cmake b/Modules/FindJasper.cmake
index 729a503..9a62669 100644
--- a/Modules/FindJasper.cmake
+++ b/Modules/FindJasper.cmake
@@ -5,43 +5,86 @@
FindJasper
----------
-Try to find the Jasper JPEG2000 library
+Find the Jasper JPEG2000 library.
-Once done this will define
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
-::
+``Jasper::Jasper``
+ The jasper library, if found.
- JASPER_FOUND - system has Jasper
- JASPER_INCLUDE_DIR - the Jasper include directory
- JASPER_LIBRARIES - the libraries needed to use Jasper
- JASPER_VERSION_STRING - the version of Jasper found (since CMake 2.8.8)
-#]=======================================================================]
+Result Variables
+^^^^^^^^^^^^^^^^
-find_path(JASPER_INCLUDE_DIR jasper/jasper.h)
+This module defines the following variables:
+
+``JASPER_FOUND``
+ system has Jasper
+``JASPER_INCLUDE_DIRS``
+ .. versionadded:: 3.22
+
+ the Jasper include directory
+``JASPER_LIBRARIES``
+ the libraries needed to use Jasper
+``JASPER_VERSION_STRING``
+ the version of Jasper found
+
+Cache variables
+^^^^^^^^^^^^^^^
-if (NOT JASPER_LIBRARIES)
- find_package(JPEG)
+The following cache variables may also be set:
- find_library(JASPER_LIBRARY_RELEASE NAMES jasper libjasper)
- find_library(JASPER_LIBRARY_DEBUG NAMES jasperd)
+``JASPER_INCLUDE_DIR``
+ where to find jasper/jasper.h, etc.
+``JASPER_LIBRARY_RELEASE``
+ where to find the Jasper library (optimized).
+``JASPER_LIBARRY_DEBUG``
+ where to find the Jasper library (debug).
+#]=======================================================================]
- include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
- SELECT_LIBRARY_CONFIGURATIONS(JASPER)
-endif ()
+find_path(JASPER_INCLUDE_DIR jasper/jasper.h)
+mark_as_advanced(JASPER_INCLUDE_DIR)
-if (JASPER_INCLUDE_DIR AND EXISTS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h")
- file(STRINGS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" jasper_version_str REGEX "^#define[\t ]+JAS_VERSION[\t ]+\".*\".*")
+if(NOT JASPER_LIBRARIES)
+ find_package(JPEG)
+ find_library(JASPER_LIBRARY_RELEASE NAMES jasper libjasper)
+ find_library(JASPER_LIBRARY_DEBUG NAMES jasperd)
+ include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+ select_library_configurations(JASPER)
+endif()
- string(REGEX REPLACE "^#define[\t ]+JAS_VERSION[\t ]+\"([^\"]+)\".*" "\\1" JASPER_VERSION_STRING "${jasper_version_str}")
-endif ()
+if(JASPER_INCLUDE_DIR AND EXISTS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h")
+ file(STRINGS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" jasper_version_str REGEX "^#define[\t ]+JAS_VERSION[\t ]+\".*\".*")
+ string(REGEX REPLACE "^#define[\t ]+JAS_VERSION[\t ]+\"([^\"]+)\".*" "\\1" JASPER_VERSION_STRING "${jasper_version_str}")
+endif()
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Jasper
+find_package_handle_standard_args(Jasper
REQUIRED_VARS JASPER_LIBRARIES JASPER_INCLUDE_DIR JPEG_LIBRARIES
VERSION_VAR JASPER_VERSION_STRING)
-if (JASPER_FOUND)
- set(JASPER_LIBRARIES ${JASPER_LIBRARIES} ${JPEG_LIBRARIES} )
-endif ()
-
-mark_as_advanced(JASPER_INCLUDE_DIR)
+if(JASPER_FOUND)
+ set(JASPER_LIBRARIES ${JASPER_LIBRARIES} ${JPEG_LIBRARIES})
+ set(JASPER_INCLUDE_DIRS ${JASPER_INCLUDE_DIR})
+ if(NOT TARGET Jasper::Jasper)
+ add_library(Jasper::Jasper UNKNOWN IMPORTED)
+ if(JASPER_INCLUDE_DIRS)
+ set_target_properties(Jasper::Jasper PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${JASPER_INCLUDE_DIRS}")
+ endif()
+ if(EXISTS "${JASPER_LIBRARY_RELEASE}")
+ set_property(TARGET Jasper::Jasper APPEND PROPERTY
+ IMPORTED CONFIGURATION RELEASE)
+ set_target_properties(Jasper::Jasper PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+ IMPORTED_LOCATION "${JASPER_LIBRARY_RELEASE}")
+ endif()
+ if(EXISTS "${JASPER_LIBRARY_DEBUG}")
+ set_property(TARGET Jasper::Jasper APPEND PROPERTY
+ IMPORTED CONFIGURATION DEBUG)
+ set_target_properties(Jasper::Jasper PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+ IMPORTED_LOCATION "${JASPER_LIBRARY_DEBUG}")
+ endif()
+ endif()
+endif()
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 20b6e25..d1f7b69 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1466,6 +1466,7 @@ if(BUILD_TESTING)
Iconv
ICU
Intl
+ Jasper
JPEG
JsonCpp
LAPACK
diff --git a/Tests/FindJasper/CMakeLists.txt b/Tests/FindJasper/CMakeLists.txt
new file mode 100644
index 0000000..1bfae78
--- /dev/null
+++ b/Tests/FindJasper/CMakeLists.txt
@@ -0,0 +1,10 @@
+add_test(NAME FindJasper.Test COMMAND
+ ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+ --build-and-test
+ "${CMake_SOURCE_DIR}/Tests/FindJasper/Test"
+ "${CMake_BINARY_DIR}/Tests/FindJasper/Test"
+ ${build_generator_args}
+ --build-project TestFindJasper
+ --build-options ${build_options}
+ --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+ )
diff --git a/Tests/FindJasper/Test/CMakeLists.txt b/Tests/FindJasper/Test/CMakeLists.txt
new file mode 100644
index 0000000..1e9467d
--- /dev/null
+++ b/Tests/FindJasper/Test/CMakeLists.txt
@@ -0,0 +1,16 @@
+cmake_minimum_required(VERSION 3.21)
+project(TestFindJasper C)
+include(CTest)
+
+find_package(Jasper)
+
+add_definitions(-DCMAKE_EXPECTED_JASPER_VERSION=${JASPER_VERSION_STRING})
+
+add_executable(test_jasper_tgt main.c)
+target_link_libraries(test_jasper_tgt Jasper::Jasper)
+add_test(NAME test_jasper_tgt COMMAND test_jasper_tgt)
+
+add_executable(test_jasper_var main.c)
+target_include_directories(test_jasper_var PRIVATE ${JASPER_INCLUDE_DIRS})
+target_link_libraries(test_jasper_var PRIVATE ${JASPER_LIBRARIES})
+add_test(NAME test_jasper_var COMMAND test_jasper_var)
diff --git a/Tests/FindJasper/Test/main.c b/Tests/FindJasper/Test/main.c
new file mode 100644
index 0000000..771344d
--- /dev/null
+++ b/Tests/FindJasper/Test/main.c
@@ -0,0 +1,17 @@
+#include <assert.h>
+// clang-format off
+#include <stdio.h>
+#include <jasper/jasper.h>
+// clang-format on
+
+int main()
+{
+ /* Without any JPEG file to open, test that the call fails as
+ expected. This tests that linking worked. */
+ jas_init();
+ jas_image_t* img = jas_image_create0();
+ jas_image_destroy(img);
+ jas_cleanup();
+
+ return (JAS_VERSION != CMAKE_EXPECTED_JASPER_VERSION);
+}