diff options
| -rw-r--r-- | .gitlab-ci.yml | 6 | ||||
| -rwxr-xr-x | .gitlab/ci/ninja-nightly.sh | 11 | ||||
| -rwxr-xr-x | .gitlab/ci/ninja.sh | 4 | ||||
| -rw-r--r-- | .gitlab/os-linux.yml | 3 | ||||
| -rw-r--r-- | .gitlab/os-macos.yml | 3 | ||||
| -rw-r--r-- | Help/release/dev/FindJasper-imported-target.rst | 4 | ||||
| -rw-r--r-- | Modules/CMakeDetermineCompilerId.cmake | 13 | ||||
| -rw-r--r-- | Modules/Compiler/NVHPC-C.cmake | 11 | ||||
| -rw-r--r-- | Modules/Compiler/NVHPC-CXX.cmake | 10 | ||||
| -rw-r--r-- | Modules/Compiler/NVHPC.cmake | 12 | ||||
| -rw-r--r-- | Modules/FindBLAS.cmake | 50 | ||||
| -rw-r--r-- | Modules/FindCUDAToolkit.cmake | 19 | ||||
| -rw-r--r-- | Modules/FindJasper.cmake | 95 | ||||
| -rw-r--r-- | Modules/FindLAPACK.cmake | 10 | ||||
| -rw-r--r-- | Modules/GNUInstallDirs.cmake | 15 | ||||
| -rw-r--r-- | Source/CMakeVersion.cmake | 2 | ||||
| -rw-r--r-- | Tests/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | Tests/FindJasper/CMakeLists.txt | 10 | ||||
| -rw-r--r-- | Tests/FindJasper/Test/CMakeLists.txt | 16 | ||||
| -rw-r--r-- | Tests/FindJasper/Test/main.c | 17 | ||||
| -rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | Tests/RunCMake/GNUInstallDirs/Usr-Debian-stderr.txt | 4 | ||||
| -rw-r--r-- | Tests/RunCMake/file/RunCMakeTest.cmake | 4 |
23 files changed, 230 insertions, 92 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a964b46..3343918 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -166,6 +166,8 @@ test:debian10-ninja: - .cmake_junit_artifacts - .run_dependent - .needs_centos6_x86_64 + variables: + CMAKE_CI_JOB_NIGHTLY_NINJA: "true" test:debian10-aarch64-ninja: extends: @@ -572,7 +574,7 @@ test:fedora34-asan: - .fedora34_asan - .cmake_memcheck_linux - .linux_builder_tags_qt - - .run_automatically + - .run_dependent dependencies: - build:fedora34-asan needs: @@ -611,6 +613,8 @@ test:macos-x86_64-ninja: - build:macos-x86_64-ninja needs: - build:macos-x86_64-ninja + variables: + CMAKE_CI_JOB_NIGHTLY_NINJA: "true" test:macos-arm64-ninja: extends: diff --git a/.gitlab/ci/ninja-nightly.sh b/.gitlab/ci/ninja-nightly.sh new file mode 100755 index 0000000..b78b64e --- /dev/null +++ b/.gitlab/ci/ninja-nightly.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +cd .gitlab + +git clone https://github.com/ninja-build/ninja.git ninja-src +cmake -S ninja-src -B ninja-src/build -DCMAKE_BUILD_TYPE=Release +cmake --build ninja-src/build --parallel --target ninja +mv ninja-src/build/ninja . +rm -rf ninja-src diff --git a/.gitlab/ci/ninja.sh b/.gitlab/ci/ninja.sh index 8ead670..866d1d5 100755 --- a/.gitlab/ci/ninja.sh +++ b/.gitlab/ci/ninja.sh @@ -2,6 +2,10 @@ set -e +if test "$CMAKE_CI_JOB_NIGHTLY_NINJA" = "true" -a "$CMAKE_CI_NIGHTLY" = "true"; then + exec .gitlab/ci/ninja-nightly.sh +fi + readonly version="1.10.2" baseurl="https://github.com/ninja-build/ninja/releases/download/v$version" diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index de370db..7fce177 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -321,8 +321,9 @@ .before_script_linux: &before_script_linux - source .gitlab/ci/env.sh - .gitlab/ci/cmake.sh + - export PATH=$PWD/.gitlab/cmake/bin:$PATH - .gitlab/ci/ninja.sh - - export PATH=$PWD/.gitlab:$PWD/.gitlab/cmake/bin:$PATH + - export PATH=$PWD/.gitlab:$PATH - cmake --version - ninja --version diff --git a/.gitlab/os-macos.yml b/.gitlab/os-macos.yml index b79d46d..3ffd9d7 100644 --- a/.gitlab/os-macos.yml +++ b/.gitlab/os-macos.yml @@ -127,8 +127,9 @@ .before_script_macos: &before_script_macos - .gitlab/ci/cmake.sh + - export PATH=$PWD/.gitlab/cmake/bin:$PATH - .gitlab/ci/ninja.sh - - export PATH=$PWD/.gitlab:$PWD/.gitlab/cmake/bin:$PATH + - export PATH=$PWD/.gitlab:$PATH - cmake --version - ninja --version # Download Qt 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/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index b38de8a..fa283fe 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -539,7 +539,8 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} else() set(id_toolset "") endif() - if("${lang}" STREQUAL "Swift") + set(id_lang_version "") + if("x${lang}" STREQUAL "xSwift") if(CMAKE_Swift_LANGUAGE_VERSION) set(id_lang_version "SWIFT_VERSION = ${CMAKE_Swift_LANGUAGE_VERSION};") elseif(XCODE_VERSION VERSION_GREATER_EQUAL 10.2) @@ -549,8 +550,14 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} else() set(id_lang_version "SWIFT_VERSION = 2.3;") endif() - else() - set(id_lang_version "") + elseif("x${lang}" STREQUAL "xC" OR "x${lang}" STREQUAL "xOBJC") + if(CMAKE_${lang}_COMPILER_ID_FLAGS MATCHES "(^| )(-std=[^ ]+)( |$)") + set(id_lang_version "OTHER_CFLAGS = \"${CMAKE_MATCH_2}\";") + endif() + elseif("x${lang}" STREQUAL "xCXX" OR "x${lang}" STREQUAL "xOBJCXX") + if(CMAKE_${lang}_COMPILER_ID_FLAGS MATCHES "(^| )(-std=[^ ]+)( |$)") + set(id_lang_version "OTHER_CPLUSPLUSFLAGS = \"${CMAKE_MATCH_2}\";") + endif() endif() if(CMAKE_OSX_DEPLOYMENT_TARGET) set(id_deployment_target diff --git a/Modules/Compiler/NVHPC-C.cmake b/Modules/Compiler/NVHPC-C.cmake index e37aad5..9295abd 100644 --- a/Modules/Compiler/NVHPC-C.cmake +++ b/Modules/Compiler/NVHPC-C.cmake @@ -9,4 +9,15 @@ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 20.11) set(CMAKE_C17_EXTENSION_COMPILE_OPTION -std=gnu17) endif() +if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 21.07) + set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <DEP_TARGET> -MF <DEP_FILE>") + set(CMAKE_C_DEPFILE_FORMAT gcc) + set(CMAKE_C_DEPENDS_USE_COMPILER TRUE) +else() + # Before NVHPC 21.07 the `-MD` flag implicitly + # implies `-E` and therefore compilation and dependency generation + # can't occur in the same invocation + set(CMAKE_C_DEPENDS_EXTRA_COMMANDS "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x c -M <SOURCE> -MT <OBJECT> -MD<DEP_FILE>") +endif() + __compiler_nvhpc(C) diff --git a/Modules/Compiler/NVHPC-CXX.cmake b/Modules/Compiler/NVHPC-CXX.cmake index 534e822..59ba7bf 100644 --- a/Modules/Compiler/NVHPC-CXX.cmake +++ b/Modules/Compiler/NVHPC-CXX.cmake @@ -9,4 +9,14 @@ if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20.11) set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION -std=gnu++20) endif() +if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 21.07) + set(CMAKE_DEPFILE_FLAGS_CXX "-MD -MT <DEP_TARGET> -MF <DEP_FILE>") + set(CMAKE_CXX_DEPFILE_FORMAT gcc) + set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE) +else() + # Before NVHPC 21.07 the `-MD` flag implicitly + # implies `-E` and therefore compilation and dependency generation + # can't occur in the same invocation + set(CMAKE_CXX_DEPENDS_EXTRA_COMMANDS "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x c++ -M <SOURCE> -MT <OBJECT> -MD<DEP_FILE>") +endif() __compiler_nvhpc(CXX) diff --git a/Modules/Compiler/NVHPC.cmake b/Modules/Compiler/NVHPC.cmake index a85df71..7048670 100644 --- a/Modules/Compiler/NVHPC.cmake +++ b/Modules/Compiler/NVHPC.cmake @@ -12,16 +12,4 @@ include(Compiler/PGI) macro(__compiler_nvhpc lang) # Logic specific to NVHPC. - - if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 21.07) - set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <DEP_TARGET> -MF <DEP_FILE>") - set(CMAKE_${lang}_DEPFILE_FORMAT gcc) - set(CMAKE_${lang}_DEPENDS_USE_COMPILER TRUE) - else() - # Before NVHPC 21.07 the `-MD` flag implicitly - # implies `-E` and therefore compilation and dependency generation - # can't occur in the same invocation - set(CMAKE_${lang}_DEPENDS_EXTRA_COMMANDS "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> ${CMAKE_${lang}_COMPILE_OPTIONS_EXPLICIT_LANGUAGE} -M <SOURCE> -MT <OBJECT> -MD<DEP_FILE>") - endif() - endmacro() diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index f16d176..308138f 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -326,9 +326,9 @@ function(CHECK_BLAS_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addlib list(APPEND _libraries "${_library}") else() string(REGEX REPLACE "[^A-Za-z0-9]" "_" _lib_var "${_library}") - set(_combined_name ${_combined_name}_${_lib_var}) + string(APPEND _combined_name "_${_lib_var}") if(NOT "${_deps}" STREQUAL "") - set(_combined_name ${_combined_name}_deps) + string(APPEND _combined_name "_deps") endif() if(_libraries_work) find_library(${_prefix}_${_lib_var}_LIBRARY @@ -346,7 +346,7 @@ function(CHECK_BLAS_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addlib foreach(_flag ${_flags}) string(REGEX REPLACE "[^A-Za-z0-9]" "_" _flag_var "${_flag}") - set(_combined_name ${_combined_name}_${_flag_var}) + string(APPEND _combined_name "_${_flag_var}") endforeach() if(_libraries_work) # Test this combination of libraries. @@ -797,20 +797,20 @@ if(BLA_VENDOR MATCHES "Arm" OR BLA_VENDOR STREQUAL "All") # Check for OpenMP support, VIA BLA_VENDOR of Arm_mp or Arm_ipl64_mp if(BLA_VENDOR MATCHES "_mp") - set(_blas_armpl_lib "${_blas_armpl_lib}_mp") + string(APPEND _blas_armpl_lib "_mp") endif() if(NOT BLAS_LIBRARIES) - check_blas_libraries( - BLAS_LIBRARIES - BLAS - sgemm - "" - "${_blas_armpl_lib}" - "" - "" - "" - ) + check_blas_libraries( + BLAS_LIBRARIES + BLAS + sgemm + "" + "${_blas_armpl_lib}" + "" + "" + "" + ) endif() unset(_blas_armpl_lib) endif() @@ -942,7 +942,7 @@ if(BLA_VENDOR MATCHES "SCSL" OR BLA_VENDOR STREQUAL "All") string(APPEND _blas_scsl_lib "_i8") endif() if(BLA_VENDOR MATCHES "_mp") - set(_blas_scsl_lib "${_blas_scsl_lib}_mp") + string(APPEND _blas_scsl_lib "_mp") endif() if(NOT BLAS_LIBRARIES) @@ -982,7 +982,7 @@ if(BLA_VENDOR MATCHES "IBMESSL" OR BLA_VENDOR STREQUAL "All") set(_blas_essl_lib "essl") if(BLA_VENDOR MATCHES "_SMP") - set(_blas_essl_lib "${_blas_essl_lib}smp") + string(APPEND _blas_essl_lib "smp") endif() if(_blas_sizeof_integer EQUAL 8) string(APPEND _blas_essl_lib "6464") @@ -1197,17 +1197,17 @@ endif() # Elbrus Math Library? if(BLA_VENDOR MATCHES "EML" OR BLA_VENDOR STREQUAL "All") - set(_blas_eml_lib "eml") + set(_blas_eml_lib "eml") - if(_blas_sizeof_integer EQUAL 8) - string(APPEND _blas_eml_lib "_ilp64") - endif() - # Check for OpenMP support, VIA BLA_VENDOR of eml_mt - if(BLA_VENDOR MATCHES "_mt") - set(_blas_eml_lib "${_blas_eml_lib}_mt") - endif() + if(_blas_sizeof_integer EQUAL 8) + string(APPEND _blas_eml_lib "_ilp64") + endif() + # Check for OpenMP support, VIA BLA_VENDOR of eml_mt + if(BLA_VENDOR MATCHES "_mt") + string(APPEND _blas_eml_lib "_mt") + endif() - if(NOT BLAS_LIBRARIES) + if(NOT BLAS_LIBRARIES) check_blas_libraries( BLAS_LIBRARIES BLAS diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake index 92042d2..d22a676 100644 --- a/Modules/FindCUDAToolkit.cmake +++ b/Modules/FindCUDAToolkit.cmake @@ -742,6 +742,19 @@ elseif(NOT CUDAToolkit_FIND_QUIETLY) message(STATUS "Unable to find cuda_runtime.h in \"${CUDAToolkit_TARGET_DIR}/include\" for CUDAToolkit_INCLUDE_DIR.") endif() +# The NVHPC layout moves math library headers and libraries to a sibling directory. +# Create a separate variable so this directory can be selectively added to math targets. +if(NOT EXISTS "${CUDAToolkit_INCLUDE_DIR}/cublas_v2.h") + set(CUDAToolkit_MATH_INCLUDE_DIR "${CUDAToolkit_TARGET_DIR}/../../math_libs/include") + cmake_path(NORMAL_PATH CUDAToolkit_MATH_INCLUDE_DIR) + if(NOT EXISTS "${CUDAToolkit_MATH_INCLUDE_DIR}/cublas_v2.h") + if(NOT CUDAToolkit_FIND_QUIETLY) + message(STATUS "Unable to find cublas_v2.h in either \"${CUDAToolkit_INCLUDE_DIR}\" or \"${CUDAToolkit_MATH_INCLUDE_DIR}\"") + endif() + unset(CUDAToolkit_MATH_INCLUDE_DIR) + endif() +endif() + if(CUDAToolkit_NVCC_EXECUTABLE AND CMAKE_CUDA_COMPILER_VERSION AND CUDAToolkit_NVCC_EXECUTABLE STREQUAL CMAKE_CUDA_COMPILER) @@ -854,6 +867,12 @@ if(CUDAToolkit_FOUND) if (NOT TARGET CUDA::${lib_name} AND CUDA_${lib_name}_LIBRARY) add_library(CUDA::${lib_name} UNKNOWN IMPORTED) target_include_directories(CUDA::${lib_name} SYSTEM INTERFACE "${CUDAToolkit_INCLUDE_DIRS}") + if(DEFINED CUDAToolkit_MATH_INCLUDE_DIR) + string(FIND ${CUDA_${lib_name}_LIBRARY} "math_libs" math_libs) + if(NOT ${math_libs} EQUAL -1) + target_include_directories(CUDA::${lib_name} SYSTEM INTERFACE "${CUDAToolkit_MATH_INCLUDE_DIR}") + endif() + endif() set_property(TARGET CUDA::${lib_name} PROPERTY IMPORTED_LOCATION "${CUDA_${lib_name}_LIBRARY}") foreach(dep ${arg_DEPS}) if(TARGET CUDA::${dep}) 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/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index 32d15db..5540965 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -181,9 +181,9 @@ function(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addl list(APPEND _libraries "${_library}") else() string(REGEX REPLACE "[^A-Za-z0-9]" "_" _lib_var "${_library}") - set(_combined_name ${_combined_name}_${_lib_var}) + string(APPEND _combined_name "_${_lib_var}") if(NOT "${_deps}" STREQUAL "") - set(_combined_name ${_combined_name}_deps) + string(APPEND _combined_name "_deps") endif() if(_libraries_work) find_library(${_prefix}_${_lib_var}_LIBRARY @@ -201,7 +201,7 @@ function(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addl foreach(_flag ${_flags}) string(REGEX REPLACE "[^A-Za-z0-9]" "_" _flag_var "${_flag}") - set(_combined_name ${_combined_name}_${_flag_var}) + string(APPEND _combined_name "_${_flag_var}") endforeach() if(_libraries_work) # Test this combination of libraries. @@ -511,7 +511,7 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) # Check for OpenMP support, VIA BLA_VENDOR of Arm_mp or Arm_ipl64_mp if(BLA_VENDOR MATCHES "_mp") - set(LAPACK_armpl_LIB "${LAPACK_armpl_LIB}_mp") + string(APPEND LAPACK_armpl_LIB "_mp") endif() check_lapack_libraries( @@ -559,7 +559,7 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) endif() # Check for OpenMP support, VIA BLA_VENDOR of scs_mp if(BLA_VENDOR MATCHES "_mp") - set(_lapack_scsl_lib "${_lapack_scsl_lib}_mp") + string(APPEND _lapack_scsl_lib "_mp") endif() check_lapack_libraries( diff --git a/Modules/GNUInstallDirs.cmake b/Modules/GNUInstallDirs.cmake index 1b9cfce..6ca424a 100644 --- a/Modules/GNUInstallDirs.cmake +++ b/Modules/GNUInstallDirs.cmake @@ -180,6 +180,8 @@ _GNUInstallDirs_cache_path(CMAKE_INSTALL_BINDIR "bin" "User executables (bin)") _GNUInstallDirs_cache_path(CMAKE_INSTALL_SBINDIR "sbin" "System admin executables (sbin)") +_GNUInstallDirs_cache_path(CMAKE_INSTALL_LIBEXECDIR "libexec" + "Program executables (libexec)") _GNUInstallDirs_cache_path(CMAKE_INSTALL_SYSCONFDIR "etc" "Read-only single-machine data (etc)") _GNUInstallDirs_cache_path(CMAKE_INSTALL_SHAREDSTATEDIR "com" @@ -301,19 +303,6 @@ set(_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE IN unset(_libdir_set) unset(__LAST_LIBDIR_DEFAULT) -if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$" - AND NOT CMAKE_CROSSCOMPILING - AND NOT EXISTS "/etc/arch-release" - AND EXISTS "/etc/debian_version" # is this a debian system ? - AND "${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$") - # see https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html#usrlibexec - # and https://www.debian.org/doc/debian-policy/ch-opersys#file-system-structure (section 9.1.1 bullet point 4) - _GNUInstallDirs_cache_path(CMAKE_INSTALL_LIBEXECDIR "${CMAKE_INSTALL_LIBDIR}" - "Program executables (${CMAKE_INSTALL_LIBDIR})") -else() - _GNUInstallDirs_cache_path(CMAKE_INSTALL_LIBEXECDIR "libexec" - "Program executables (libexec)") -endif() _GNUInstallDirs_cache_path(CMAKE_INSTALL_INCLUDEDIR "include" "C header files (include)") _GNUInstallDirs_cache_path(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index cff4806..8d06bc7 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 21) -set(CMake_VERSION_PATCH 20211006) +set(CMake_VERSION_PATCH 20211008) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0) 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); +} diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index b7d38fb..e24ef58 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -419,7 +419,7 @@ add_RunCMake_test(ctest_update) add_RunCMake_test(ctest_upload) add_RunCMake_test(ctest_environment) add_RunCMake_test(ctest_fixtures) -add_RunCMake_test(file -DMSYS=${MSYS}) +add_RunCMake_test(file -DCYGWIN=${CYGWIN} -DMSYS=${MSYS}) add_RunCMake_test(file-CHMOD -DMSYS=${MSYS}) add_RunCMake_test(file-RPATH -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}) add_RunCMake_test(find_file) diff --git a/Tests/RunCMake/GNUInstallDirs/Usr-Debian-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Usr-Debian-stderr.txt index 89578ee..c38006c 100644 --- a/Tests/RunCMake/GNUInstallDirs/Usr-Debian-stderr.txt +++ b/Tests/RunCMake/GNUInstallDirs/Usr-Debian-stderr.txt @@ -5,7 +5,7 @@ CMAKE_INSTALL_DOCDIR='share/doc/Usr' CMAKE_INSTALL_INCLUDEDIR='include' CMAKE_INSTALL_INFODIR='share/info' CMAKE_INSTALL_LIBDIR='lib/arch' -CMAKE_INSTALL_LIBEXECDIR='lib/arch' +CMAKE_INSTALL_LIBEXECDIR='libexec' CMAKE_INSTALL_LOCALEDIR='share/locale' CMAKE_INSTALL_LOCALSTATEDIR='var' CMAKE_INSTALL_RUNSTATEDIR='var/run' @@ -20,7 +20,7 @@ CMAKE_INSTALL_FULL_DOCDIR='/usr/share/doc/Usr' CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/include' CMAKE_INSTALL_FULL_INFODIR='/usr/share/info' CMAKE_INSTALL_FULL_LIBDIR='/usr/lib/arch' -CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/lib/arch' +CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/libexec' CMAKE_INSTALL_FULL_LOCALEDIR='/usr/share/locale' CMAKE_INSTALL_FULL_LOCALSTATEDIR='/var' CMAKE_INSTALL_FULL_RUNSTATEDIR='/var/run' diff --git a/Tests/RunCMake/file/RunCMakeTest.cmake b/Tests/RunCMake/file/RunCMakeTest.cmake index 9efd3f4..aff4735 100644 --- a/Tests/RunCMake/file/RunCMakeTest.cmake +++ b/Tests/RunCMake/file/RunCMakeTest.cmake @@ -97,7 +97,9 @@ if(NOT WIN32 run_cmake(READ_SYMLINK) run_cmake(READ_SYMLINK-noexist) run_cmake(READ_SYMLINK-notsymlink) - run_cmake(INSTALL-FOLLOW_SYMLINK_CHAIN) + if(NOT CYGWIN) + run_cmake(INSTALL-FOLLOW_SYMLINK_CHAIN) + endif() endif() run_cmake(REAL_PATH-unexpected-arg) |
