summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml223
-rw-r--r--.gitlab/ci/configure_intelclassic_makefiles.cmake1
-rw-r--r--.gitlab/ci/configure_inteloneapi_makefiles.cmake1
-rw-r--r--.gitlab/ci/env.sh14
-rw-r--r--.gitlab/ci/env_intelclassic_common.sh9
-rw-r--r--.gitlab/ci/env_intelclassic_makefiles.sh1
-rw-r--r--.gitlab/ci/env_intelcompiler_license.sh8
-rw-r--r--.gitlab/ci/env_inteloneapi_common.sh7
-rw-r--r--.gitlab/ci/env_inteloneapi_makefiles.sh1
-rw-r--r--.gitlab/ci/gitlab_ci.cmake6
-rw-r--r--.gitlab/os-linux.yml55
-rw-r--r--.gitlab/rules.yml6
-rw-r--r--Help/variable/CMAKE_LANG_FLAGS.rst3
-rw-r--r--Help/variable/CMAKE_LANG_FLAGS_INIT.rst2
-rw-r--r--Modules/CMakeDetermineCUDACompiler.cmake2
-rw-r--r--Modules/CMakeDetermineCompiler.cmake10
-rw-r--r--Modules/FindOpenMP.cmake7
-rw-r--r--Modules/FindPkgConfig.cmake5
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/cmCMakePresetsFile.cxx16
-rw-r--r--Source/cmCMakePresetsFile.h1
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx5
-rw-r--r--Tests/RunCMake/CMakePresetsBuild/Invalid.json.in4
-rw-r--r--Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-build-badConfigurePreset-result.txt1
-rw-r--r--Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-build-badConfigurePreset-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-configure-default-result.txt1
-rw-r--r--Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-configure-default-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset.cmake0
-rw-r--r--Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset.json.in16
-rw-r--r--Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake3
-rw-r--r--Tests/RunCMake/CMakePresetsTest/Invalid.json.in4
-rw-r--r--Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-configure-default-result.txt1
-rw-r--r--Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-configure-default-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-test-badConfigurePreset-result.txt1
-rw-r--r--Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-test-badConfigurePreset-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset.cmake0
-rw-r--r--Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset.json.in16
-rw-r--r--Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake4
38 files changed, 408 insertions, 36 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8e76e41..9f996e8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -115,10 +115,7 @@ test:debian10-ninja:
- .cmake_test_linux_release
- .linux_builder_tags_qt
- .run_dependent
- dependencies:
- - build:centos6-x86_64
- needs:
- - build:centos6-x86_64
+ - .needs_centos6_x86_64
test:debian10-aarch64-ninja:
extends:
@@ -126,10 +123,7 @@ test:debian10-aarch64-ninja:
- .cmake_test_linux_release
- .linux_builder_tags_aarch64_qt
- .run_dependent
- dependencies:
- - build:centos7-aarch64
- needs:
- - build:centos7-aarch64
+ - .needs_centos7_aarch64
variables:
CMAKE_CI_NO_MR: "true"
@@ -139,10 +133,7 @@ test:fedora33-makefiles:
- .cmake_test_linux_release
- .linux_builder_tags_qt
- .run_dependent
- dependencies:
- - build:centos6-x86_64
- needs:
- - build:centos6-x86_64
+ - .needs_centos6_x86_64
test:cuda10.2-nvidia:
extends:
@@ -150,10 +141,7 @@ test:cuda10.2-nvidia:
- .cmake_test_linux_release
- .linux_builder_tags_cuda
- .run_dependent
- dependencies:
- - build:centos6-x86_64
- needs:
- - build:centos6-x86_64
+ - .needs_centos6_x86_64
build:fedora33-ninja:
extends:
@@ -186,6 +174,209 @@ test:fedora33-ninja-multi:
needs:
- test:fedora33-ninja
+test:intel2016-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2016_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2016-centos7
+
+test:intel2016u1-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2016u1_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2016u1-centos7
+
+test:intel2016u2-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2016u2_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2016u2-centos7
+
+test:intel2017-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017-centos7
+
+test:intel2017u1-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017u1_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u1-centos7
+
+test:intel2017u2-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017u2_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u2-centos7
+
+test:intel2017u3-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017u3_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u3-centos7
+
+test:intel2017u4-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017u4_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u4-centos7
+
+test:intel2017u5-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017u5_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u5-centos7
+
+test:intel2017u6-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017u6_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u6-centos7
+
+test:intel2017u7-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017u7_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u7-centos7
+
+test:intel2017u8-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2017u8_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u8-centos7
+
+test:intel2018-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2018_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018-centos7
+
+test:intel2018u1-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2018u1_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018u1-centos7
+
+test:intel2018u2-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2018u2_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018u2-centos7
+
+test:intel2018u3-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2018u3_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018u3-centos7
+
+test:intel2018u4-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2018u4_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018u4-centos7
+
+test:intel2019-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2019_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019-centos7
+
+test:intel2019u1-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2019u1_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019u1-centos7
+
+test:intel2019u2-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2019u2_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019u2-centos7
+
+test:intel2019u3-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2019u3_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019u3-centos7
+
+test:intel2019u4-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2019u4_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019u4-centos7
+
+test:intel2020-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2020_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2020-rhel8
+
+test:intel2020u2-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2020u2_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2020u2-rhel8
+
+test:intel2020u4-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2020u4_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2020u4-rhel8
+
+test:intel2021.1.1-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2021.1.1_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2021.1.1-rhel8
+
+test:intel2021.1.2-makefiles:
+ extends:
+ - .cmake_test_linux_intelclassic_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: intel2021.1.2_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2021.1.2-rhel8
+
+test:oneapi2021.1.1-makefiles:
+ extends:
+ - .cmake_test_linux_inteloneapi_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: oneapi2021.1.1_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2021.1.1-rhel8
+
+test:oneapi2021.1.2-makefiles:
+ extends:
+ - .cmake_test_linux_inteloneapi_makefiles
+ variables:
+ CMAKE_CI_BUILD_NAME: oneapi2021.1.2_makefiles
+ CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2021.1.2-rhel8
+
build:linux-x86_64-package:
extends:
- .linux_package
diff --git a/.gitlab/ci/configure_intelclassic_makefiles.cmake b/.gitlab/ci/configure_intelclassic_makefiles.cmake
new file mode 100644
index 0000000..20863a2
--- /dev/null
+++ b/.gitlab/ci/configure_intelclassic_makefiles.cmake
@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")
diff --git a/.gitlab/ci/configure_inteloneapi_makefiles.cmake b/.gitlab/ci/configure_inteloneapi_makefiles.cmake
new file mode 100644
index 0000000..20863a2
--- /dev/null
+++ b/.gitlab/ci/configure_inteloneapi_makefiles.cmake
@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")
diff --git a/.gitlab/ci/env.sh b/.gitlab/ci/env.sh
new file mode 100644
index 0000000..7634f5d
--- /dev/null
+++ b/.gitlab/ci/env.sh
@@ -0,0 +1,14 @@
+quietly() {
+ readonly log="/tmp/quietly-$RANDOM.log"
+ if ! "$@" >"$log" 2>&1; then
+ ret=$?
+ cat "$log"
+ rm -f "$log"
+ exit $ret
+ fi
+ rm -f "$log"
+}
+
+if test -r ".gitlab/ci/env_${CMAKE_CONFIGURATION}.sh"; then
+ source ".gitlab/ci/env_${CMAKE_CONFIGURATION}.sh"
+fi
diff --git a/.gitlab/ci/env_intelclassic_common.sh b/.gitlab/ci/env_intelclassic_common.sh
new file mode 100644
index 0000000..22b1d03
--- /dev/null
+++ b/.gitlab/ci/env_intelclassic_common.sh
@@ -0,0 +1,9 @@
+source .gitlab/ci/env_intelcompiler_license.sh
+
+if test -r /opt/intel/oneapi/setvars.sh; then
+ source /opt/intel/oneapi/setvars.sh
+elif test -r /opt/intel/bin/compilervars.sh; then
+ source /opt/intel/bin/compilervars.sh intel64
+fi
+
+export CC=icc CXX=icpc FC=ifort
diff --git a/.gitlab/ci/env_intelclassic_makefiles.sh b/.gitlab/ci/env_intelclassic_makefiles.sh
new file mode 100644
index 0000000..d1ff85e
--- /dev/null
+++ b/.gitlab/ci/env_intelclassic_makefiles.sh
@@ -0,0 +1 @@
+source .gitlab/ci/env_intelclassic_common.sh
diff --git a/.gitlab/ci/env_intelcompiler_license.sh b/.gitlab/ci/env_intelcompiler_license.sh
new file mode 100644
index 0000000..54743b2
--- /dev/null
+++ b/.gitlab/ci/env_intelcompiler_license.sh
@@ -0,0 +1,8 @@
+if test -n "$CMAKE_CI_INTELCOMPILER_LICENSE"; then
+ if test -d /opt/intel/licenses; then
+ mv "$CMAKE_CI_INTELCOMPILER_LICENSE" /opt/intel/licenses/ci.lic
+ else
+ rm "$CMAKE_CI_INTELCOMPILER_LICENSE"
+ fi
+ unset CMAKE_CI_INTELCOMPILER_LICENSE
+fi
diff --git a/.gitlab/ci/env_inteloneapi_common.sh b/.gitlab/ci/env_inteloneapi_common.sh
new file mode 100644
index 0000000..beaf3fe
--- /dev/null
+++ b/.gitlab/ci/env_inteloneapi_common.sh
@@ -0,0 +1,7 @@
+source .gitlab/ci/env_intelcompiler_license.sh
+
+if test -r /opt/intel/oneapi/setvars.sh; then
+ source /opt/intel/oneapi/setvars.sh
+fi
+
+export CC=icx CXX=icpx FC=ifx
diff --git a/.gitlab/ci/env_inteloneapi_makefiles.sh b/.gitlab/ci/env_inteloneapi_makefiles.sh
new file mode 100644
index 0000000..eefcdda
--- /dev/null
+++ b/.gitlab/ci/env_inteloneapi_makefiles.sh
@@ -0,0 +1 @@
+source .gitlab/ci/env_inteloneapi_common.sh
diff --git a/.gitlab/ci/gitlab_ci.cmake b/.gitlab/ci/gitlab_ci.cmake
index f863a27..f166215 100644
--- a/.gitlab/ci/gitlab_ci.cmake
+++ b/.gitlab/ci/gitlab_ci.cmake
@@ -17,7 +17,11 @@ if ("$ENV{CMAKE_CONFIGURATION}" STREQUAL "")
endif ()
# Set the build metadata.
-set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CONFIGURATION}")
+if(NOT "$ENV{CMAKE_CI_BUILD_NAME}" STREQUAL "")
+ set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CI_BUILD_NAME}")
+else()
+ set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CONFIGURATION}")
+endif()
set(CTEST_SITE "gitlab-ci")
set(ctest_model "Experimental")
diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml
index e40760e..0229bc0 100644
--- a/.gitlab/os-linux.yml
+++ b/.gitlab/os-linux.yml
@@ -30,6 +30,18 @@
variables:
BOOTSTRAP_ARGS: '-- "-DCMake_DOC_ARTIFACT_PREFIX=$CI_PROJECT_DIR/build/install-doc"'
+.needs_centos6_x86_64:
+ dependencies:
+ - build:centos6-x86_64
+ needs:
+ - build:centos6-x86_64
+
+.needs_centos7_aarch64:
+ dependencies:
+ - build:centos7-aarch64
+ needs:
+ - build:centos7-aarch64
+
### Debian
.debian10:
@@ -128,6 +140,27 @@
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
+### Intel Compiler
+
+.intelcompiler:
+ image: "kitware/intelcompiler:$CMAKE_CI_INTELCOMPILER_IMAGE_TAG"
+ environment:
+ name: intel-compiler
+ variables:
+ CMAKE_ARCH: x86_64
+
+.intelclassic_makefiles:
+ extends: .intelcompiler
+ variables:
+ CMAKE_CONFIGURATION: intelclassic_makefiles
+ CMAKE_GENERATOR: "Unix Makefiles"
+
+.inteloneapi_makefiles:
+ extends: .intelcompiler
+ variables:
+ CMAKE_CONFIGURATION: inteloneapi_makefiles
+ CMAKE_GENERATOR: "Unix Makefiles"
+
### CUDA builds
.cuda10.2:
@@ -195,6 +228,7 @@
## Linux-specific scripts
.before_script_linux: &before_script_linux
+ - source .gitlab/ci/env.sh
- .gitlab/ci/cmake.sh
- .gitlab/ci/ninja.sh
- export PATH=$PWD/.gitlab:$PWD/.gitlab/cmake/bin:$PATH
@@ -251,6 +285,7 @@
stage: build
script:
+ - source .gitlab/ci/env.sh
# Bootstrap.
- mkdir -p build/
# Exclude documentation. A job dependency provides it for packaging.
@@ -313,3 +348,23 @@
- sccache --show-stats
interruptible: true
+
+.cmake_test_linux_intelclassic_makefiles:
+ extends:
+ - .intelclassic_makefiles
+ - .cmake_test_linux_release
+ - .linux_builder_tags_qt
+ - .run_manually
+ - .needs_centos6_x86_64
+ variables:
+ CMAKE_CI_JOB_NIGHTLY: "true"
+
+.cmake_test_linux_inteloneapi_makefiles:
+ extends:
+ - .inteloneapi_makefiles
+ - .cmake_test_linux_release
+ - .linux_builder_tags_qt
+ - .run_manually
+ - .needs_centos6_x86_64
+ variables:
+ CMAKE_CI_JOB_NIGHTLY: "true"
diff --git a/.gitlab/rules.yml b/.gitlab/rules.yml
index b3e5342..5685463 100644
--- a/.gitlab/rules.yml
+++ b/.gitlab/rules.yml
@@ -6,6 +6,8 @@
when: never
- if: '$CMAKE_CI_NIGHTLY == "true"'
when: on_success
+ - if: '$CMAKE_CI_JOB_NIGHTLY == "true"'
+ when: never
- if: '($CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != "" && $CI_COMMIT_BRANCH == $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true")'
when: delayed
start_in: 5 minutes
@@ -24,6 +26,8 @@
when: never
- if: '$CMAKE_CI_NIGHTLY == "true"'
when: on_success
+ - if: '$CMAKE_CI_JOB_NIGHTLY == "true"'
+ when: never
- if: '($CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != "" && $CI_COMMIT_BRANCH == $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true")'
when: on_success
- if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)'
@@ -42,6 +46,8 @@
when: always
- if: '$CMAKE_CI_NIGHTLY == "true"'
when: on_success
+ - if: '$CMAKE_CI_JOB_NIGHTLY == "true"'
+ when: never
- if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)'
when: never
- if: '$CI_MERGE_REQUEST_ID'
diff --git a/Help/variable/CMAKE_LANG_FLAGS.rst b/Help/variable/CMAKE_LANG_FLAGS.rst
index 14b2694..11864f8 100644
--- a/Help/variable/CMAKE_LANG_FLAGS.rst
+++ b/Help/variable/CMAKE_LANG_FLAGS.rst
@@ -15,3 +15,6 @@ This is initialized for each language from environment variables:
Initialized by the :envvar:`CUDAFLAGS` environment variable.
* ``CMAKE_Fortran_FLAGS``:
Initialized by the :envvar:`FFLAGS` environment variable.
+
+This value is a command-line string fragment. Therefore, multiple options
+should be separated by spaces, and options with spaces should be quoted.
diff --git a/Help/variable/CMAKE_LANG_FLAGS_INIT.rst b/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
index 67ff2cb..ca13a29 100644
--- a/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
+++ b/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
@@ -12,6 +12,8 @@ the contents of a ``xxxFLAGS`` environment variable will be prepended,
where ``xxx`` will be language-specific but not necessarily the same as
``<LANG>`` (e.g. :envvar:`CXXFLAGS` for ``CXX``, :envvar:`FFLAGS` for
``Fortran``, and so on).
+This value is a command-line string fragment. Therefore, multiple options
+should be separated by spaces, and options with spaces should be quoted.
See also the configuration-specific
:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/Modules/CMakeDetermineCUDACompiler.cmake b/Modules/CMakeDetermineCUDACompiler.cmake
index 1ba537a..0f507ea 100644
--- a/Modules/CMakeDetermineCUDACompiler.cmake
+++ b/Modules/CMakeDetermineCUDACompiler.cmake
@@ -31,7 +31,9 @@ else()
set(CMAKE_CUDA_COMPILER_LIST nvcc)
endif()
+ set(_CMAKE_CUDA_COMPILER_PATHS "$ENV{CUDA_PATH}/bin")
_cmake_find_compiler(CUDA)
+ unset(_CMAKE_CUDA_COMPILER_PATHS)
else()
_cmake_find_compiler_path(CUDA)
endif()
diff --git a/Modules/CMakeDetermineCompiler.cmake b/Modules/CMakeDetermineCompiler.cmake
index 2780399..6430793 100644
--- a/Modules/CMakeDetermineCompiler.cmake
+++ b/Modules/CMakeDetermineCompiler.cmake
@@ -68,6 +68,16 @@ macro(_cmake_find_compiler lang)
)
endif()
find_program(CMAKE_${lang}_COMPILER NAMES ${CMAKE_${lang}_COMPILER_LIST} DOC "${lang} compiler")
+ if(_CMAKE_${lang}_COMPILER_PATHS)
+ # As a last fall-back, search in language-specific paths
+ find_program(CMAKE_${lang}_COMPILER
+ NAMES ${CMAKE_${lang}_COMPILER_LIST}
+ NAMES_PER_DIR
+ PATHS ${_CMAKE_${lang}_COMPILER_PATHS}
+ DOC "${lang} compiler"
+ NO_DEFAULT_PATH
+ )
+ endif()
if(CMAKE_${lang}_COMPILER_INIT AND NOT CMAKE_${lang}_COMPILER)
set_property(CACHE CMAKE_${lang}_COMPILER PROPERTY VALUE "${CMAKE_${lang}_COMPILER_INIT}")
endif()
diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake
index a1ffc25..52330a4 100644
--- a/Modules/FindOpenMP.cmake
+++ b/Modules/FindOpenMP.cmake
@@ -113,7 +113,12 @@ function(_OPENMP_FLAG_CANDIDATES LANG)
else()
set(OMP_FLAG_Intel "-qopenmp")
endif()
- set(OMP_FLAG_IntelLLVM "-fiopenmp")
+ if(CMAKE_${LANG}_COMPILER_ID STREQUAL "IntelLLVM" AND
+ "x${CMAKE_${LANG}_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
+ set(OMP_FLAG_IntelLLVM "-Qiopenmp")
+ else()
+ set(OMP_FLAG_IntelLLVM "-fiopenmp")
+ endif()
set(OMP_FLAG_MSVC "-openmp")
set(OMP_FLAG_PathScale "-openmp")
set(OMP_FLAG_NAG "-openmp")
diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake
index b41c2c3..38c8da7 100644
--- a/Modules/FindPkgConfig.cmake
+++ b/Modules/FindPkgConfig.cmake
@@ -37,7 +37,10 @@ if(CMAKE_HOST_WIN32)
list(PREPEND PKG_CONFIG_NAMES "pkg-config.bat")
endif()
-find_program(PKG_CONFIG_EXECUTABLE NAMES ${PKG_CONFIG_NAMES} DOC "pkg-config executable")
+find_program(PKG_CONFIG_EXECUTABLE
+ NAMES ${PKG_CONFIG_NAMES}
+ NAMES_PER_DIR
+ DOC "pkg-config executable")
mark_as_advanced(PKG_CONFIG_EXECUTABLE)
set(_PKG_CONFIG_FAILURE_MESSAGE "")
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 7c6d284..163224c 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 20210316)
+set(CMake_VERSION_PATCH 20210318)
#set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0)
diff --git a/Source/cmCMakePresetsFile.cxx b/Source/cmCMakePresetsFile.cxx
index 7726927..c73ca9a 100644
--- a/Source/cmCMakePresetsFile.cxx
+++ b/Source/cmCMakePresetsFile.cxx
@@ -1470,8 +1470,11 @@ cmCMakePresetsFile::ReadProjectPresetsInternal(bool allowNoFiles)
if (!it.second.Unexpanded.Hidden) {
const auto configurePreset =
this->ConfigurePresets.find(it.second.Unexpanded.ConfigurePreset);
- if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true) &&
- configurePreset != this->ConfigurePresets.end()) {
+ if (configurePreset == this->ConfigurePresets.end()) {
+ return ReadFileResult::INVALID_CONFIGURE_PRESET;
+ }
+
+ if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
it.second.Unexpanded.Environment.insert(
configurePreset->second.Unexpanded.Environment.begin(),
configurePreset->second.Unexpanded.Environment.end());
@@ -1487,8 +1490,11 @@ cmCMakePresetsFile::ReadProjectPresetsInternal(bool allowNoFiles)
if (!it.second.Unexpanded.Hidden) {
const auto configurePreset =
this->ConfigurePresets.find(it.second.Unexpanded.ConfigurePreset);
- if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true) &&
- configurePreset != this->ConfigurePresets.end()) {
+ if (configurePreset == this->ConfigurePresets.end()) {
+ return ReadFileResult::INVALID_CONFIGURE_PRESET;
+ }
+
+ if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
it.second.Unexpanded.Environment.insert(
configurePreset->second.Unexpanded.Environment.begin(),
configurePreset->second.Unexpanded.Environment.end());
@@ -1541,6 +1547,8 @@ const char* cmCMakePresetsFile::ResultToString(ReadFileResult result)
case ReadFileResult::BUILD_TEST_PRESETS_UNSUPPORTED:
return "File version must be 2 or higher for build and test preset "
"support.";
+ case ReadFileResult::INVALID_CONFIGURE_PRESET:
+ return "Invalid \"configurePreset\" field";
case ReadFileResult::INSTALL_PREFIX_UNSUPPORTED:
return "File version must be 3 or higher for installDir preset "
"support.";
diff --git a/Source/cmCMakePresetsFile.h b/Source/cmCMakePresetsFile.h
index eed0eab..02e6a32 100644
--- a/Source/cmCMakePresetsFile.h
+++ b/Source/cmCMakePresetsFile.h
@@ -32,6 +32,7 @@ public:
USER_PRESET_INHERITANCE,
INVALID_MACRO_EXPANSION,
BUILD_TEST_PRESETS_UNSUPPORTED,
+ INVALID_CONFIGURE_PRESET,
INSTALL_PREFIX_UNSUPPORTED,
};
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index 36be45c..6937639 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -630,8 +630,9 @@ void cmGlobalNinjaGenerator::CleanMetaData()
// `build.ninja` to load for this in Ninja-Multi. This may be relaxed in the
// future pending further investigation into how Ninja works upstream
// (ninja#1721).
- if (this->NinjaSupportsUnconditionalRecompactTool && expectBuildManifest &&
- !missingBuildManifest) {
+ if (this->NinjaSupportsUnconditionalRecompactTool &&
+ !this->GetCMakeInstance()->GetRegenerateDuringBuild() &&
+ expectBuildManifest && !missingBuildManifest) {
run_ninja_tool({ "recompact" });
}
if (this->NinjaSupportsRestatTool && this->OutputPathPrefix.empty()) {
diff --git a/Tests/RunCMake/CMakePresetsBuild/Invalid.json.in b/Tests/RunCMake/CMakePresetsBuild/Invalid.json.in
index cf56cef..c22fdec 100644
--- a/Tests/RunCMake/CMakePresetsBuild/Invalid.json.in
+++ b/Tests/RunCMake/CMakePresetsBuild/Invalid.json.in
@@ -18,10 +18,6 @@
"environment": {
"TEST": "$vendor{bad.TEST}"
}
- },
- {
- "name": "badConfigurePreset",
- "configurePreset": "dne"
}
]
}
diff --git a/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-build-badConfigurePreset-result.txt b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-build-badConfigurePreset-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-build-badConfigurePreset-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-build-badConfigurePreset-stderr.txt b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-build-badConfigurePreset-stderr.txt
new file mode 100644
index 0000000..303632e
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-build-badConfigurePreset-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset: Invalid "configurePreset" field
diff --git a/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-configure-default-result.txt b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-configure-default-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-configure-default-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-configure-default-stderr.txt b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-configure-default-stderr.txt
new file mode 100644
index 0000000..303632e
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset-configure-default-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset: Invalid "configurePreset" field
diff --git a/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset.cmake b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset.cmake
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset.cmake
diff --git a/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset.json.in b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset.json.in
new file mode 100644
index 0000000..c0429d5
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsBuild/InvalidConfigurePreset.json.in
@@ -0,0 +1,16 @@
+{
+ "version": 2,
+ "configurePresets": [
+ {
+ "name": "default",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir}/build/${presetName}"
+ }
+ ],
+ "buildPresets": [
+ {
+ "name": "badConfigurePreset",
+ "configurePreset": "dne"
+ }
+ ]
+}
diff --git a/Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake
index fd95c2c..2559b12 100644
--- a/Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake
@@ -63,11 +63,12 @@ endfunction()
set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
run_cmake_build_presets(Good "default;other" "build-other;withEnvironment;noEnvironment;macros;vendorObject")
+run_cmake_build_presets(InvalidConfigurePreset "default" "badConfigurePreset")
set(CMakePresetsBuild_BUILD_ONLY 1)
run_cmake_build_presets(ListPresets "x" "x" "--list-presets")
run_cmake_build_presets(NoConfigurePreset "x" "noConfigurePreset")
-run_cmake_build_presets(Invalid "x" "hidden;vendorMacro;badConfigurePreset")
+run_cmake_build_presets(Invalid "x" "hidden;vendorMacro")
set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
run_cmake_build_presets(PresetsUnsupported "x" "x")
diff --git a/Tests/RunCMake/CMakePresetsTest/Invalid.json.in b/Tests/RunCMake/CMakePresetsTest/Invalid.json.in
index c7096f2..cfcf4b7 100644
--- a/Tests/RunCMake/CMakePresetsTest/Invalid.json.in
+++ b/Tests/RunCMake/CMakePresetsTest/Invalid.json.in
@@ -18,10 +18,6 @@
"environment": {
"TEST": "$vendor{bad.TEST}"
}
- },
- {
- "name": "badConfigurePreset",
- "configurePreset": "dne"
}
]
}
diff --git a/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-configure-default-result.txt b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-configure-default-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-configure-default-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-configure-default-stderr.txt b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-configure-default-stderr.txt
new file mode 100644
index 0000000..3d7cdd0
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-configure-default-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset: Invalid "configurePreset" field
diff --git a/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-test-badConfigurePreset-result.txt b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-test-badConfigurePreset-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-test-badConfigurePreset-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-test-badConfigurePreset-stderr.txt b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-test-badConfigurePreset-stderr.txt
new file mode 100644
index 0000000..3d7cdd0
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset-test-badConfigurePreset-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset: Invalid "configurePreset" field
diff --git a/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset.cmake b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset.cmake
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset.cmake
diff --git a/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset.json.in b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset.json.in
new file mode 100644
index 0000000..e305c42
--- /dev/null
+++ b/Tests/RunCMake/CMakePresetsTest/InvalidConfigurePreset.json.in
@@ -0,0 +1,16 @@
+{
+ "version": 2,
+ "configurePresets": [
+ {
+ "name": "default",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir}/build/${presetName}"
+ }
+ ],
+ "testPresets": [
+ {
+ "name": "badConfigurePreset",
+ "configurePreset": "dne"
+ }
+ ]
+}
diff --git a/Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake
index 4ffdfab..c93dff3 100644
--- a/Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake
@@ -85,6 +85,8 @@ run_cmake_test_presets(Good
"${GoodTestPresets}")
unset(CMakePresetsTest_ASSETS)
+run_cmake_test_presets(InvalidConfigurePreset "default" "" "badConfigurePreset")
+
set(CMakePresetsTest_NO_CONFIGURE 1)
set(CMakePresetsTest_FILE "${RunCMake_SOURCE_DIR}/Good.json.in")
run_cmake_test_presets(ListPresets "" "" "x" "--list-presets")
@@ -92,7 +94,7 @@ unset(CMakePresetsTest_FILE)
run_cmake_test_presets(NoConfigurePreset "" "" "noConfigurePreset")
run_cmake_test_presets(NoTestsAction "default" "" "noTestsAction")
-run_cmake_test_presets(Invalid "" "" "hidden;vendorMacro;badConfigurePreset")
+run_cmake_test_presets(Invalid "" "" "hidden;vendorMacro")
set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
run_cmake_test_presets(PresetsUnsupported "" "" "x")