summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab/ci/configure_debian10_aarch64_ninja.cmake2
-rw-r--r--.gitlab/ci/configure_debian10_ninja.cmake2
-rw-r--r--.gitlab/ci/configure_fedora33_common.cmake1
-rw-r--r--.gitlab/ci/configure_fedora33_makefiles.cmake1
-rwxr-xr-x.gitlab/ci/docker/debian10-aarch64/install_deps.sh5
-rwxr-xr-x.gitlab/ci/docker/debian10/install_deps.sh5
-rwxr-xr-x.gitlab/ci/docker/fedora33/install_deps.sh2
-rw-r--r--.gitlab/os-linux.yml6
-rw-r--r--Auxiliary/vim/syntax/cmake.vim1
-rw-r--r--Help/manual/cmake-properties.7.rst1
-rw-r--r--Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst21
-rw-r--r--Help/prop_gbl/AUTOUIC_SOURCE_GROUP.rst9
-rw-r--r--Help/prop_sf/GENERATED.rst7
-rw-r--r--Help/prop_tgt/INSTALL_NAME_DIR.rst8
-rw-r--r--Help/release/3.20.rst6
-rw-r--r--Help/variable/CMAKE_INSTALL_NAME_DIR.rst2
-rw-r--r--Modules/CMakeCUDAInformation.cmake3
-rw-r--r--Modules/CMakeDetermineCompilerId.cmake11
-rw-r--r--Modules/CMakeFindBinUtils.cmake20
-rw-r--r--Modules/Compiler/NVIDIA-CUDA.cmake10
-rw-r--r--Modules/FindBLAS.cmake13
-rw-r--r--Modules/FindHDF5.cmake67
-rw-r--r--Modules/Platform/Darwin.cmake6
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/cmQtAutoGenInitializer.cxx8
-rw-r--r--Tests/RunCMake/CMakeLists.txt1
-rw-r--r--Tests/RunCMake/InitialFlags/C-stdout.txt1
-rw-r--r--Tests/RunCMake/InitialFlags/C.cmake3
-rw-r--r--Tests/RunCMake/InitialFlags/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/InitialFlags/CXX-stdout.txt1
-rw-r--r--Tests/RunCMake/InitialFlags/CXX.cmake3
-rw-r--r--Tests/RunCMake/InitialFlags/RunCMakeTest.cmake7
32 files changed, 174 insertions, 64 deletions
diff --git a/.gitlab/ci/configure_debian10_aarch64_ninja.cmake b/.gitlab/ci/configure_debian10_aarch64_ninja.cmake
index 12d0e02..1ad3ac4 100644
--- a/.gitlab/ci/configure_debian10_aarch64_ninja.cmake
+++ b/.gitlab/ci/configure_debian10_aarch64_ninja.cmake
@@ -5,6 +5,7 @@ set(CMake_TEST_FindBoost_Python "ON" CACHE BOOL "")
set(CMake_TEST_FindBZip2 "ON" CACHE BOOL "")
set(CMake_TEST_FindCups "ON" CACHE BOOL "")
set(CMake_TEST_FindCURL "ON" CACHE BOOL "")
+set(CMake_TEST_FindDevIL "ON" CACHE BOOL "")
set(CMake_TEST_FindDoxygen_Dot "ON" CACHE BOOL "")
set(CMake_TEST_FindDoxygen "ON" CACHE BOOL "")
set(CMake_TEST_FindEXPAT "ON" CACHE BOOL "")
@@ -59,6 +60,7 @@ set(CMake_TEST_Fortran_SUBMODULES "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_C "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_CXX "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_Fortran "ON" CACHE BOOL "")
+set(CMake_TEST_JQ "/usr/bin/jq" CACHE PATH "")
set(CMake_TEST_Qt5 "ON" CACHE BOOL "")
set(CMake_TEST_UseSWIG "ON" CACHE BOOL "")
diff --git a/.gitlab/ci/configure_debian10_ninja.cmake b/.gitlab/ci/configure_debian10_ninja.cmake
index 90556bf..d925387 100644
--- a/.gitlab/ci/configure_debian10_ninja.cmake
+++ b/.gitlab/ci/configure_debian10_ninja.cmake
@@ -5,6 +5,7 @@ set(CMake_TEST_FindBoost_Python "ON" CACHE BOOL "")
set(CMake_TEST_FindBZip2 "ON" CACHE BOOL "")
set(CMake_TEST_FindCups "ON" CACHE BOOL "")
set(CMake_TEST_FindCURL "ON" CACHE BOOL "")
+set(CMake_TEST_FindDevIL "ON" CACHE BOOL "")
set(CMake_TEST_FindDoxygen_Dot "ON" CACHE BOOL "")
set(CMake_TEST_FindDoxygen "ON" CACHE BOOL "")
set(CMake_TEST_FindEXPAT "ON" CACHE BOOL "")
@@ -61,6 +62,7 @@ set(CMake_TEST_Fortran_SUBMODULES "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_C "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_CXX "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_Fortran "ON" CACHE BOOL "")
+set(CMake_TEST_JQ "/usr/bin/jq" CACHE PATH "")
set(CMake_TEST_Qt5 "ON" CACHE BOOL "")
set(CMake_TEST_UseSWIG "ON" CACHE BOOL "")
diff --git a/.gitlab/ci/configure_fedora33_common.cmake b/.gitlab/ci/configure_fedora33_common.cmake
index c343833..dee78ab 100644
--- a/.gitlab/ci/configure_fedora33_common.cmake
+++ b/.gitlab/ci/configure_fedora33_common.cmake
@@ -1,5 +1,6 @@
set(BUILD_CursesDialog ON CACHE BOOL "")
set(BUILD_QtDialog ON CACHE BOOL "")
+set(CMake_TEST_JQ "/usr/bin/jq" CACHE PATH "")
set(CMake_TEST_JSON_SCHEMA ON CACHE BOOL "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake")
diff --git a/.gitlab/ci/configure_fedora33_makefiles.cmake b/.gitlab/ci/configure_fedora33_makefiles.cmake
index db2d005..882ffcd 100644
--- a/.gitlab/ci/configure_fedora33_makefiles.cmake
+++ b/.gitlab/ci/configure_fedora33_makefiles.cmake
@@ -5,6 +5,7 @@ set(CMake_TEST_FindBoost_Python "ON" CACHE BOOL "")
set(CMake_TEST_FindBZip2 "ON" CACHE BOOL "")
set(CMake_TEST_FindCups "ON" CACHE BOOL "")
set(CMake_TEST_FindCURL "ON" CACHE BOOL "")
+set(CMake_TEST_FindDevIL "ON" CACHE BOOL "")
set(CMake_TEST_FindDoxygen_Dot "ON" CACHE BOOL "")
set(CMake_TEST_FindDoxygen "ON" CACHE BOOL "")
set(CMake_TEST_FindEXPAT "ON" CACHE BOOL "")
diff --git a/.gitlab/ci/docker/debian10-aarch64/install_deps.sh b/.gitlab/ci/docker/debian10-aarch64/install_deps.sh
index 3fc67e8..d84b3c8 100755
--- a/.gitlab/ci/docker/debian10-aarch64/install_deps.sh
+++ b/.gitlab/ci/docker/debian10-aarch64/install_deps.sh
@@ -19,6 +19,10 @@ apt-get install -y \
clang-6.0 \
libncurses6
+# Tools needed for the test suite.
+apt-get install -y \
+ jq
+
# Packages needed to test find modules.
apt-get install -y \
alsa-utils \
@@ -34,6 +38,7 @@ apt-get install -y \
libbz2-dev \
libcups2-dev \
libcurl4-gnutls-dev \
+ libdevil-dev \
libfontconfig1-dev \
libfreetype6-dev \
libgdal-dev \
diff --git a/.gitlab/ci/docker/debian10/install_deps.sh b/.gitlab/ci/docker/debian10/install_deps.sh
index e885ae6..e6c9ba0 100755
--- a/.gitlab/ci/docker/debian10/install_deps.sh
+++ b/.gitlab/ci/docker/debian10/install_deps.sh
@@ -19,6 +19,10 @@ apt-get install -y \
clang-6.0 \
libncurses6
+# Tools needed for the test suite.
+apt-get install -y \
+ jq
+
# Packages needed to test find modules.
apt-get install -y \
alsa-utils \
@@ -34,6 +38,7 @@ apt-get install -y \
libbz2-dev \
libcups2-dev \
libcurl4-gnutls-dev \
+ libdevil-dev \
libfontconfig1-dev \
libfreetype6-dev \
libgdal-dev \
diff --git a/.gitlab/ci/docker/fedora33/install_deps.sh b/.gitlab/ci/docker/fedora33/install_deps.sh
index c1391e3..cdfe35e 100755
--- a/.gitlab/ci/docker/fedora33/install_deps.sh
+++ b/.gitlab/ci/docker/fedora33/install_deps.sh
@@ -25,6 +25,7 @@ dnf install --setopt=install_weak_deps=False -y \
dnf install --setopt=install_weak_deps=False -y \
findutils \
file \
+ jq \
which
# Packages needed to test find modules.
@@ -34,6 +35,7 @@ dnf install --setopt=install_weak_deps=False -y \
boost-devel boost-python3-devel \
bzip2-devel \
cups-devel \
+ DevIL-devel \
doxygen \
expat-devel \
fontconfig-devel \
diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml
index 0229bc0..81c4d8d 100644
--- a/.gitlab/os-linux.yml
+++ b/.gitlab/os-linux.yml
@@ -45,7 +45,7 @@
### Debian
.debian10:
- image: "kitware/cmake:ci-debian10-x86_64-2020-10-03"
+ image: "kitware/cmake:ci-debian10-x86_64-2021-04-06"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
@@ -60,7 +60,7 @@
CMake_SKIP_INSTALL: 1
.debian10_aarch64:
- image: "kitware/cmake:ci-debian10-aarch64-2021-01-26"
+ image: "kitware/cmake:ci-debian10-aarch64-2021-04-06"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
@@ -69,7 +69,7 @@
### Fedora
.fedora33:
- image: "kitware/cmake:ci-fedora33-x86_64-2020-11-13"
+ image: "kitware/cmake:ci-fedora33-x86_64-2021-04-06"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes"
diff --git a/Auxiliary/vim/syntax/cmake.vim b/Auxiliary/vim/syntax/cmake.vim
index 955beae..067f80d 100644
--- a/Auxiliary/vim/syntax/cmake.vim
+++ b/Auxiliary/vim/syntax/cmake.vim
@@ -92,6 +92,7 @@ syn keyword cmakeProperty contained
\ AUTOUIC_EXECUTABLE
\ AUTOUIC_OPTIONS
\ AUTOUIC_SEARCH_PATHS
+ \ AUTOUIC_SOURCE_GROUP
\ BINARY_DIR
\ BUILDSYSTEM_TARGETS
\ BUILD_RPATH
diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst
index af170da..60a4028 100644
--- a/Help/manual/cmake-properties.7.rst
+++ b/Help/manual/cmake-properties.7.rst
@@ -21,6 +21,7 @@ Properties of Global Scope
/prop_gbl/AUTOMOC_SOURCE_GROUP
/prop_gbl/AUTOMOC_TARGETS_FOLDER
/prop_gbl/AUTORCC_SOURCE_GROUP
+ /prop_gbl/AUTOUIC_SOURCE_GROUP
/prop_gbl/CMAKE_C_KNOWN_FEATURES
/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES
/prop_gbl/CMAKE_CXX_KNOWN_FEATURES
diff --git a/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst b/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
index 2e32320..07c732b 100644
--- a/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
+++ b/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
@@ -3,15 +3,16 @@ AUTOGEN_SOURCE_GROUP
.. versionadded:: 3.9
-Name of the :command:`source_group` for :prop_tgt:`AUTOMOC` and
-:prop_tgt:`AUTORCC` generated files.
+Name of the :command:`source_group` for :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTORCC` and :prop_tgt:`AUTOUIC` generated files.
-Files generated by :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTORCC` are not always
-known at configure time and therefore can't be passed to
-:command:`source_group`.
-:prop_gbl:`AUTOGEN_SOURCE_GROUP` an be used instead to generate or select
-a source group for :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTORCC` generated files.
+Files generated by :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTORCC` and
+:prop_tgt:`AUTOUIC` are not always known at configure time and therefore can't
+be passed to :command:`source_group`.
+:prop_gbl:`AUTOGEN_SOURCE_GROUP` can be used instead to generate or select
+a source group for :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTORCC` and
+:prop_tgt:`AUTOUIC` generated files.
-For :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTORCC` specific overrides see
-:prop_gbl:`AUTOMOC_SOURCE_GROUP` and :prop_gbl:`AUTORCC_SOURCE_GROUP`
-respectively.
+For :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTORCC` and :prop_tgt:`AUTOUIC` specific
+overrides see :prop_gbl:`AUTOMOC_SOURCE_GROUP`, :prop_gbl:`AUTORCC_SOURCE_GROUP`
+and :prop_gbl:`AUTOUIC_SOURCE_GROUP` respectively.
diff --git a/Help/prop_gbl/AUTOUIC_SOURCE_GROUP.rst b/Help/prop_gbl/AUTOUIC_SOURCE_GROUP.rst
new file mode 100644
index 0000000..79ebfe0
--- /dev/null
+++ b/Help/prop_gbl/AUTOUIC_SOURCE_GROUP.rst
@@ -0,0 +1,9 @@
+AUTOUIC_SOURCE_GROUP
+--------------------
+
+.. versionadded:: 3.21
+
+Name of the :command:`source_group` for :prop_tgt:`AUTOUIC` generated files.
+
+When set this is used instead of :prop_gbl:`AUTOGEN_SOURCE_GROUP` for
+files generated by :prop_tgt:`AUTOUIC`.
diff --git a/Help/prop_sf/GENERATED.rst b/Help/prop_sf/GENERATED.rst
index 6ef4580..216dfe8 100644
--- a/Help/prop_sf/GENERATED.rst
+++ b/Help/prop_sf/GENERATED.rst
@@ -32,9 +32,10 @@ The :ref:`Makefile Generators` will remove ``GENERATED`` files during
``make clean``.
Generated sources may be hidden in some IDE tools, while in others they might
-be shown. For the special case of sources generated by CMake's :prop_tgt:`AUTOMOC`
-or :prop_tgt:`AUTORCC` functionality, the :prop_gbl:`AUTOGEN_SOURCE_GROUP`,
-:prop_gbl:`AUTOMOC_SOURCE_GROUP` and :prop_gbl:`AUTORCC_SOURCE_GROUP` target
+be shown. For the special case of sources generated by CMake's :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTORCC` or :prop_tgt:`AUTOUIC` functionality, the
+:prop_gbl:`AUTOGEN_SOURCE_GROUP`, :prop_gbl:`AUTOMOC_SOURCE_GROUP`,
+:prop_gbl:`AUTORCC_SOURCE_GROUP` and :prop_gbl:`AUTOUIC_SOURCE_GROUP` target
properties may influence where the generated sources are grouped in the project's
file lists.
diff --git a/Help/prop_tgt/INSTALL_NAME_DIR.rst b/Help/prop_tgt/INSTALL_NAME_DIR.rst
index 8faefb7..47a0037 100644
--- a/Help/prop_tgt/INSTALL_NAME_DIR.rst
+++ b/Help/prop_tgt/INSTALL_NAME_DIR.rst
@@ -1,11 +1,13 @@
INSTALL_NAME_DIR
----------------
-macOS directory name for installed targets.
+Directory name for installed targets on Apple platforms.
``INSTALL_NAME_DIR`` is a string specifying the directory portion of the
-"install_name" field of shared libraries on macOS to use in the
-installed targets.
+"install_name" field of shared libraries on Apple platforms for
+installed targets. When not set, the default directory used is determined
+by :prop_tgt:`MACOSX_RPATH`. Policies :policy:`CMP0068` and :policy:`CMP0042`
+are also relevant.
This property is initialized by the value of the variable
:variable:`CMAKE_INSTALL_NAME_DIR` if it is set when a target is
diff --git a/Help/release/3.20.rst b/Help/release/3.20.rst
index 9991eab..e452926 100644
--- a/Help/release/3.20.rst
+++ b/Help/release/3.20.rst
@@ -341,3 +341,9 @@ Changes made since CMake 3.20.0 include the following.
and ``Intl_IS_BUILTIN``, but they were not implemented correctly.
These have been removed and replaced with a single ``Intl_IS_BUILT_IN``
check, whose name is consistent with the :module:`FindIconv` module.
+
+* The ``-rpath`` linker flag is now specified as supported on all Apple
+ platforms, not just macOS. The ``install_name_dir`` used for
+ iOS, tvOS and watchOS should now default to ``@rpath`` instead of using
+ a full absolute path and failing at runtime when the library or framework
+ is embedded in an application bundle (see :prop_tgt:`XCODE_EMBED_<type>`).
diff --git a/Help/variable/CMAKE_INSTALL_NAME_DIR.rst b/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
index 5ba4c04..b07d44f 100644
--- a/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
+++ b/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
@@ -1,7 +1,7 @@
CMAKE_INSTALL_NAME_DIR
----------------------
-macOS directory name for installed targets.
+Directory name for installed targets on Apple platforms.
``CMAKE_INSTALL_NAME_DIR`` is used to initialize the
:prop_tgt:`INSTALL_NAME_DIR` property on all targets. See that target
diff --git a/Modules/CMakeCUDAInformation.cmake b/Modules/CMakeCUDAInformation.cmake
index 2b7d7b2..44e2c2c 100644
--- a/Modules/CMakeCUDAInformation.cmake
+++ b/Modules/CMakeCUDAInformation.cmake
@@ -111,6 +111,9 @@ include(CMakeCommonLanguageInclude)
# CMAKE_CUDA_LINK_EXECUTABLE
if(CMAKE_CUDA_HOST_COMPILER AND CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
+ # FIXME: This is too late for the Platform/Windows-NVIDIA-CUDA module to
+ # see it, so we do not support CMAKE_CUDA_HOST_COMPILER on Windows.
+ # Move this to Compiler/NVIDIA-CUDA and update the VS generator too.
string(APPEND _CMAKE_CUDA_EXTRA_FLAGS " -ccbin=<CMAKE_CUDA_HOST_COMPILER>")
endif()
diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake
index 017c51a..d7b7f26 100644
--- a/Modules/CMakeDetermineCompilerId.cmake
+++ b/Modules/CMakeDetermineCompilerId.cmake
@@ -1,9 +1,9 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
-macro(__determine_compiler_id_test testflags_in userflags)
- separate_arguments(testflags UNIX_COMMAND "${testflags_in}")
- CMAKE_DETERMINE_COMPILER_ID_BUILD("${lang}" "${testflags}" "${userflags}" "${src}")
+macro(__determine_compiler_id_test testflags_var userflags_var)
+ separate_arguments(testflags UNIX_COMMAND "${${testflags_var}}")
+ CMAKE_DETERMINE_COMPILER_ID_BUILD("${lang}" "${testflags}" "${${userflags_var}}" "${src}")
CMAKE_DETERMINE_COMPILER_ID_MATCH_VENDOR("${lang}" "${COMPILER_${lang}_PRODUCED_OUTPUT}")
if(NOT CMAKE_${lang}_COMPILER_ID)
@@ -44,7 +44,8 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
endif()
foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
- __determine_compiler_id_test("${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS_FIRST}" "${userflags}")
+ set(testflags "${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS_FIRST}")
+ __determine_compiler_id_test(testflags userflags)
if(CMAKE_${lang}_COMPILER_ID)
break()
endif()
@@ -55,7 +56,7 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
# of helper flags. Stop when the compiler is identified.
foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
foreach(testflags ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS_FIRST} "" ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS})
- __determine_compiler_id_test("${testflags}" "${userflags}")
+ __determine_compiler_id_test(testflags userflags)
if(CMAKE_${lang}_COMPILER_ID)
break()
endif()
diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake
index e87a16b..f32266f 100644
--- a/Modules/CMakeFindBinUtils.cmake
+++ b/Modules/CMakeFindBinUtils.cmake
@@ -123,19 +123,19 @@ else()
list(APPEND _CMAKE_TOOL_VARS AR RANLIB STRIP LINKER NM OBJDUMP OBJCOPY READELF DLLTOOL ADDR2LINE)
endif()
-foreach(TOOL IN LISTS _CMAKE_TOOL_VARS)
- foreach(NAME IN LISTS _CMAKE_${TOOL}_NAMES)
+foreach(_tool IN LISTS _CMAKE_TOOL_VARS)
+ foreach(_name IN LISTS _CMAKE_${_tool}_NAMES)
if(NOT _CMAKE_TOOLCHAIN_PREFIX STREQUAL "")
if(NOT _CMAKE_TOOLCHAIN_SUFFIX STREQUAL "")
- list(PREPEND _CMAKE_${TOOL}_NAMES ${NAME}${_CMAKE_TOOLCHAIN_SUFFIX})
+ list(PREPEND _CMAKE_${_tool}_NAMES ${_name}${_CMAKE_TOOLCHAIN_SUFFIX})
endif()
- list(PREPEND _CMAKE_${TOOL}_NAMES ${_CMAKE_TOOLCHAIN_PREFIX}${NAME})
+ list(PREPEND _CMAKE_${_tool}_NAMES ${_CMAKE_TOOLCHAIN_PREFIX}${_name})
endif()
if(NOT _CMAKE_TOOLCHAIN_SUFFIX STREQUAL "")
- list(PREPEND _CMAKE_${TOOL}_NAMES ${_CMAKE_TOOLCHAIN_PREFIX}${NAME}${_CMAKE_TOOLCHAIN_SUFFIX})
+ list(PREPEND _CMAKE_${_tool}_NAMES ${_CMAKE_TOOLCHAIN_PREFIX}${_name}${_CMAKE_TOOLCHAIN_SUFFIX})
endif()
endforeach()
- find_program(CMAKE_${TOOL} NAMES ${_CMAKE_${TOOL}_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+ find_program(CMAKE_${_tool} NAMES ${_CMAKE_${_tool}_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
endforeach()
if(NOT CMAKE_RANLIB)
@@ -154,12 +154,12 @@ if(CMAKE_PLATFORM_HAS_INSTALLNAME)
endif()
# Mark any tool cache entries as advanced.
-foreach(var IN LISTS _CMAKE_TOOL_VARS)
- get_property(_CMAKE_TOOL_CACHED CACHE CMAKE_${var} PROPERTY TYPE)
+foreach(_tool IN LISTS _CMAKE_TOOL_VARS)
+ get_property(_CMAKE_TOOL_CACHED CACHE CMAKE_${_tool} PROPERTY TYPE)
if(_CMAKE_TOOL_CACHED)
- mark_as_advanced(CMAKE_${var})
+ mark_as_advanced(CMAKE_${_tool})
endif()
- unset(_CMAKE_${var}_NAMES)
+ unset(_CMAKE_${_tool}_NAMES)
endforeach()
unset(_CMAKE_TOOL_VARS)
unset(_CMAKE_TOOL_CACHED)
diff --git a/Modules/Compiler/NVIDIA-CUDA.cmake b/Modules/Compiler/NVIDIA-CUDA.cmake
index eb80675..a0f7c05 100644
--- a/Modules/Compiler/NVIDIA-CUDA.cmake
+++ b/Modules/Compiler/NVIDIA-CUDA.cmake
@@ -30,7 +30,15 @@ if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
# to get header dependency information
set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
else()
- set(CMAKE_CUDA_DEPENDS_EXTRA_COMMANDS "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -M <SOURCE> -MT <OBJECT> -o <DEP_FILE>")
+ if(CMAKE_CUDA_HOST_COMPILER AND NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ # FIXME: Move the main -ccbin= flag from CMakeCUDAInformation to
+ # a block above, remove this copy, and update the VS generator too.
+ set(_CMAKE_CUDA_EXTRA_FLAGS_LOCAL " -ccbin=<CMAKE_CUDA_HOST_COMPILER>")
+ else()
+ set(_CMAKE_CUDA_EXTRA_FLAGS_LOCAL "")
+ endif()
+ set(CMAKE_CUDA_DEPENDS_EXTRA_COMMANDS "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS}${_CMAKE_CUDA_EXTRA_FLAGS_LOCAL} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -M <SOURCE> -MT <OBJECT> -o <DEP_FILE>")
+ unset(_CMAKE_CUDA_EXTRA_FLAGS_LOCAL)
endif()
set(CMAKE_CUDA_DEPFILE_FORMAT gcc)
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake
index 14a8665..510f47d 100644
--- a/Modules/FindBLAS.cmake
+++ b/Modules/FindBLAS.cmake
@@ -630,8 +630,17 @@ if(BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
endif()
set(_threadlibs "${CMAKE_THREAD_LIBS_INIT}")
if(BLA_STATIC)
- find_package(OpenMP COMPONENTS C)
- list(PREPEND _threadlibs "${OpenMP_C_LIBRARIES}")
+ set(_blas_STATIC_CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES}")
+ set(CMAKE_FIND_LIBRARY_SUFFIXES "${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}")
+ if (CMAKE_C_COMPILER_LOADED)
+ find_package(OpenMP COMPONENTS C)
+ list(PREPEND _threadlibs "${OpenMP_C_LIBRARIES}")
+ elseif(CMAKE_CXX_COMPILER_LOADED)
+ find_package(OpenMP COMPONENTS CXX)
+ list(PREPEND _threadlibs "${OpenMP_CXX_LIBRARIES}")
+ endif()
+ set(CMAKE_FIND_LIBRARY_SUFFIXES "${_blas_STATIC_CMAKE_FIND_LIBRARY_SUFFIXES}")
+ unset(_blas_STATIC_CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
check_blas_libraries(
BLAS_LIBRARIES
diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake
index ec5ebdd..e335355 100644
--- a/Modules/FindHDF5.cmake
+++ b/Modules/FindHDF5.cmake
@@ -811,25 +811,8 @@ if( NOT HDF5_FOUND )
endif()
foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
- # find the HDF5 include directories
- if("${_lang}" STREQUAL "Fortran")
- set(HDF5_INCLUDE_FILENAME hdf5.mod HDF5.mod)
- elseif("${_lang}" STREQUAL "CXX")
- set(HDF5_INCLUDE_FILENAME H5Cpp.h)
- else()
- set(HDF5_INCLUDE_FILENAME hdf5.h)
- endif()
-
- find_path(HDF5_${_lang}_INCLUDE_DIR ${HDF5_INCLUDE_FILENAME}
- HINTS ${HDF5_ROOT}
- PATHS $ENV{HOME}/.local/include
- PATH_SUFFIXES include Include ${_inc_suffixes} ${_lib_suffixes}
- ${_HDF5_SEARCH_OPTS}
- )
- mark_as_advanced(HDF5_${_lang}_INCLUDE_DIR)
- # set the _DIRS variable as this is what the user will normally use
- set(HDF5_${_lang}_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIR})
- list(APPEND HDF5_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIR})
+ # The "main" library.
+ set(_hdf5_main_library "")
# find the HDF5 libraries
foreach(LIB IN LISTS HDF5_${_lang}_LIBRARY_NAMES)
@@ -861,6 +844,15 @@ if( NOT HDF5_FOUND )
${_HDF5_SEARCH_OPTS}
)
+ # Set the "main" library if not already set.
+ if (NOT _hdf5_main_library)
+ if (HDF5_${LIB}_LIBRARY_RELEASE)
+ set(_hdf5_main_library "${HDF5_${LIB}_LIBRARY_RELEASE}")
+ elseif (HDF5_${LIB}_LIBRARY_DEBUG)
+ set(_hdf5_main_library "${HDF5_${LIB}_LIBRARY_DEBUG}")
+ endif ()
+ endif ()
+
select_library_configurations( HDF5_${LIB} )
list(APPEND HDF5_${_lang}_LIBRARIES ${HDF5_${LIB}_LIBRARY})
endforeach()
@@ -872,6 +864,43 @@ if( NOT HDF5_FOUND )
# required libraries.
list(APPEND HDF5_LIBRARIES ${HDF5_${_lang}_LIBRARIES})
+ # find the HDF5 include directories
+ set(_hdf5_inc_extra_paths)
+ set(_hdf5_inc_extra_suffixes)
+ if("${_lang}" STREQUAL "Fortran")
+ set(HDF5_INCLUDE_FILENAME hdf5.mod HDF5.mod)
+
+ # Add library-based search paths for Fortran modules.
+ if (NOT _hdf5_main_library STREQUAL "")
+ # gfortran module directory
+ if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
+ get_filename_component(_hdf5_library_dir "${_hdf5_main_library}" DIRECTORY)
+ list(APPEND _hdf5_inc_extra_paths "${_hdf5_library_dir}")
+ unset(_hdf5_library_dir)
+ list(APPEND _hdf5_inc_extra_suffixes gfortran/modules)
+ endif ()
+ endif ()
+ elseif("${_lang}" STREQUAL "CXX")
+ set(HDF5_INCLUDE_FILENAME H5Cpp.h)
+ else()
+ set(HDF5_INCLUDE_FILENAME hdf5.h)
+ endif()
+
+ unset(_hdf5_main_library)
+
+ find_path(HDF5_${_lang}_INCLUDE_DIR ${HDF5_INCLUDE_FILENAME}
+ HINTS ${HDF5_ROOT}
+ PATHS $ENV{HOME}/.local/include ${_hdf5_inc_extra_paths}
+ PATH_SUFFIXES include Include ${_inc_suffixes} ${_lib_suffixes} ${_hdf5_inc_extra_suffixes}
+ ${_HDF5_SEARCH_OPTS}
+ )
+ mark_as_advanced(HDF5_${_lang}_INCLUDE_DIR)
+ unset(_hdf5_inc_extra_paths)
+ unset(_hdf5_inc_extra_suffixes)
+ # set the _DIRS variable as this is what the user will normally use
+ set(HDF5_${_lang}_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIR})
+ list(APPEND HDF5_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIR})
+
if(HDF5_FIND_HL)
foreach(LIB IN LISTS HDF5_${_lang}_HL_LIBRARY_NAMES)
if(HDF5_USE_STATIC_LIBRARIES)
diff --git a/Modules/Platform/Darwin.cmake b/Modules/Platform/Darwin.cmake
index 80595ea..d9a7894 100644
--- a/Modules/Platform/Darwin.cmake
+++ b/Modules/Platform/Darwin.cmake
@@ -47,11 +47,7 @@ set(CMAKE_SHARED_MODULE_PREFIX "lib")
set(CMAKE_SHARED_MODULE_SUFFIX ".so")
set(CMAKE_MODULE_EXISTS 1)
set(CMAKE_DL_LIBS "")
-
-# Enable rpath support for 10.5 and greater where it is known to work.
-if("${DARWIN_MAJOR_VERSION}" GREATER 8)
- set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
-endif()
+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
foreach(lang C CXX OBJC OBJCXX)
set(CMAKE_${lang}_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index b7ca022..f37f3b9 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 20)
-set(CMake_VERSION_PATCH 20210406)
+set(CMake_VERSION_PATCH 20210408)
#set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0)
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx
index 6528687..e96ec63 100644
--- a/Source/cmQtAutoGenInitializer.cxx
+++ b/Source/cmQtAutoGenInitializer.cxx
@@ -943,8 +943,14 @@ bool cmQtAutoGenInitializer::InitScanFiles()
this->LocalGen->GetCurrentSourceDirectory(),
cmSystemTools::GetFilenamePath(fullPath));
+ // Avoid creating a path containing adjacent slashes
+ if (!uiHeaderRelativePath.empty() &&
+ uiHeaderRelativePath.back() != '/') {
+ uiHeaderRelativePath += '/';
+ }
+
auto uiHeaderFilePath = cmStrCat(
- '/', uiHeaderRelativePath, '/', "ui_"_s,
+ '/', uiHeaderRelativePath, "ui_"_s,
cmSystemTools::GetFilenameWithoutLastExtension(fullPath), ".h"_s);
ConfigString uiHeader;
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index b1bf835..5f23c05 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -248,6 +248,7 @@ add_RunCMake_test(FileAPI -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
add_RunCMake_test(FindBoost)
add_RunCMake_test(FindLua)
add_RunCMake_test(FindOpenGL)
+add_RunCMake_test(InitialFlags)
if(CMake_TEST_FindOpenSSL)
add_RunCMake_test(FindOpenSSL)
endif()
diff --git a/Tests/RunCMake/InitialFlags/C-stdout.txt b/Tests/RunCMake/InitialFlags/C-stdout.txt
new file mode 100644
index 0000000..9a7341d
--- /dev/null
+++ b/Tests/RunCMake/InitialFlags/C-stdout.txt
@@ -0,0 +1 @@
+CMAKE_C_FLAGS='[^']*-Denv="a\\b"[^']+-Dvar="b\\c"[^']*'
diff --git a/Tests/RunCMake/InitialFlags/C.cmake b/Tests/RunCMake/InitialFlags/C.cmake
new file mode 100644
index 0000000..5afc395
--- /dev/null
+++ b/Tests/RunCMake/InitialFlags/C.cmake
@@ -0,0 +1,3 @@
+set(CMAKE_C_FLAGS_INIT [[-Dvar="b\c"]])
+enable_language(C)
+message(STATUS "CMAKE_C_FLAGS='${CMAKE_C_FLAGS}'")
diff --git a/Tests/RunCMake/InitialFlags/CMakeLists.txt b/Tests/RunCMake/InitialFlags/CMakeLists.txt
new file mode 100644
index 0000000..7cabeb6
--- /dev/null
+++ b/Tests/RunCMake/InitialFlags/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.20)
+project(${RunCMake_TEST} NONE)
+include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/InitialFlags/CXX-stdout.txt b/Tests/RunCMake/InitialFlags/CXX-stdout.txt
new file mode 100644
index 0000000..623b74a
--- /dev/null
+++ b/Tests/RunCMake/InitialFlags/CXX-stdout.txt
@@ -0,0 +1 @@
+CMAKE_CXX_FLAGS='[^']*-Denv="a\\b"[^']+-Dvar="b\\c"[^']*'
diff --git a/Tests/RunCMake/InitialFlags/CXX.cmake b/Tests/RunCMake/InitialFlags/CXX.cmake
new file mode 100644
index 0000000..1d7a53c
--- /dev/null
+++ b/Tests/RunCMake/InitialFlags/CXX.cmake
@@ -0,0 +1,3 @@
+set(CMAKE_CXX_FLAGS_INIT [[-Dvar="b\c"]])
+enable_language(CXX)
+message(STATUS "CMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS}'")
diff --git a/Tests/RunCMake/InitialFlags/RunCMakeTest.cmake b/Tests/RunCMake/InitialFlags/RunCMakeTest.cmake
new file mode 100644
index 0000000..d13019e
--- /dev/null
+++ b/Tests/RunCMake/InitialFlags/RunCMakeTest.cmake
@@ -0,0 +1,7 @@
+include(RunCMake)
+
+set(ENV{CFLAGS} "$ENV{CFLAGS} -Denv=\"a\\b\"")
+run_cmake(C)
+
+set(ENV{CXXFLAGS} "$ENV{CXXFLAGS} -Denv=\"a\\b\"")
+run_cmake(CXX)