From 524205a7a520abc77283103c01e0098d2d008a8f Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Wed, 6 Oct 2021 09:39:02 +0900 Subject: FindJasper: Modernize code layout --- Modules/FindJasper.cmake | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/Modules/FindJasper.cmake b/Modules/FindJasper.cmake index 729a503..9bb4dd8 100644 --- a/Modules/FindJasper.cmake +++ b/Modules/FindJasper.cmake @@ -18,30 +18,26 @@ Once done this will define #]=======================================================================] find_path(JASPER_INCLUDE_DIR jasper/jasper.h) +mark_as_advanced(JASPER_INCLUDE_DIR) -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 () - -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}) +endif() -- cgit v0.12 From 7f8413c3093220cd26e6196e473cdff00754f7e8 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Wed, 6 Oct 2021 09:39:02 +0900 Subject: FindJasper: Modernize documentation layout --- Modules/FindJasper.cmake | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/Modules/FindJasper.cmake b/Modules/FindJasper.cmake index 9bb4dd8..5eb96e4 100644 --- a/Modules/FindJasper.cmake +++ b/Modules/FindJasper.cmake @@ -5,16 +5,33 @@ FindJasper ---------- -Try to find the Jasper JPEG2000 library +Find the Jasper JPEG2000 library. -Once done this will define +Result Variables +^^^^^^^^^^^^^^^^ -:: +This module defines the following variables: - 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) +``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 + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``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). #]=======================================================================] find_path(JASPER_INCLUDE_DIR jasper/jasper.h) -- cgit v0.12 From bdbce845cd714a1e844976e4cba4734932e89dd5 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Wed, 6 Oct 2021 09:39:02 +0900 Subject: FindJasper: Add JASPER_INCLUDE_DIRS result variable The `JASPER_INCLUDE_DIR` cache entry is not supposed to be the public result variable. --- Modules/FindJasper.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Modules/FindJasper.cmake b/Modules/FindJasper.cmake index 5eb96e4..0ca0f31 100644 --- a/Modules/FindJasper.cmake +++ b/Modules/FindJasper.cmake @@ -14,7 +14,9 @@ This module defines the following variables: ``JASPER_FOUND`` system has Jasper -``JASPER_INCLUDE_DIR`` +``JASPER_INCLUDE_DIRS`` + .. versionadded:: 3.22 + the Jasper include directory ``JASPER_LIBRARIES`` the libraries needed to use Jasper @@ -57,4 +59,5 @@ find_package_handle_standard_args(Jasper if(JASPER_FOUND) set(JASPER_LIBRARIES ${JASPER_LIBRARIES} ${JPEG_LIBRARIES}) + set(JASPER_INCLUDE_DIRS ${JASPER_INCLUDE_DIR}) endif() -- cgit v0.12 From 6e8754c6251bc2f7edfb0d71303e1b85fce93f5e Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Wed, 6 Oct 2021 09:39:02 +0900 Subject: FindJasper: Add IMPORTED target Fixes: #20601 Signed-off-by: Hiroshi Miura --- Help/release/dev/FindJasper-imported-target.rst | 4 ++++ Modules/FindJasper.cmake | 27 +++++++++++++++++++++++++ Tests/CMakeLists.txt | 1 + Tests/FindJasper/CMakeLists.txt | 10 +++++++++ Tests/FindJasper/Test/CMakeLists.txt | 16 +++++++++++++++ Tests/FindJasper/Test/main.c | 17 ++++++++++++++++ 6 files changed, 75 insertions(+) create mode 100644 Help/release/dev/FindJasper-imported-target.rst create mode 100644 Tests/FindJasper/CMakeLists.txt create mode 100644 Tests/FindJasper/Test/CMakeLists.txt create mode 100644 Tests/FindJasper/Test/main.c 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 0ca0f31..9a62669 100644 --- a/Modules/FindJasper.cmake +++ b/Modules/FindJasper.cmake @@ -7,6 +7,12 @@ FindJasper Find the Jasper JPEG2000 library. +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +``Jasper::Jasper`` + The jasper library, if found. + Result Variables ^^^^^^^^^^^^^^^^ @@ -60,4 +66,25 @@ find_package_handle_standard_args(Jasper 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 $ + --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 $ + ) 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 +// clang-format off +#include +#include +// 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); +} -- cgit v0.12