summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml50
-rw-r--r--.gitlab/ci/configure_windows_vs2022_x64.cmake (renamed from .gitlab/ci/configure_windows_vs2019_x64.cmake)0
-rw-r--r--.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake (renamed from .gitlab/ci/configure_windows_vs2019_x64_ninja.cmake)0
-rw-r--r--.gitlab/ci/download_qt.cmake3
-rw-r--r--.gitlab/os-windows.yml35
-rw-r--r--Help/policy/CMP0128.rst39
-rw-r--r--Help/prop_tgt/XCODE_EMBED_type.rst6
-rw-r--r--Help/prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY.rst3
-rw-r--r--Help/prop_tgt/XCODE_EMBED_type_PATH.rst3
-rw-r--r--Help/prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY.rst3
-rw-r--r--Help/release/dev/xcode-embed-plugins.rst6
-rw-r--r--Modules/CMakeCheckCompilerFlagCommonPatterns.cmake1
-rw-r--r--Modules/CMakeFindBinUtils.cmake2
-rw-r--r--Modules/CMakeFortranCompiler.cmake.in1
-rw-r--r--Modules/FindThreads.cmake19
-rw-r--r--Modules/FindVulkan.cmake13
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx9
-rw-r--r--Source/cmGlobalXCodeGenerator.h1
-rw-r--r--Source/cmOutputConverter.cxx20
-rw-r--r--Source/cmOutputConverter.h5
-rw-r--r--Source/cmStandardLevelResolver.cxx3
-rw-r--r--Tests/RunCMake/CompileFeatures/ExtensionsStandardDefault-build-check.cmake12
-rw-r--r--Tests/RunCMake/CompileFeatures/ExtensionsStandardDefault.cmake9
-rw-r--r--Tests/RunCMake/CompileFeatures/ExtensionsStandardUnset-build-check.cmake (renamed from Tests/RunCMake/CompileFeatures/UnsetStandard-build-check.cmake)0
-rw-r--r--Tests/RunCMake/CompileFeatures/ExtensionsStandardUnset.cmake (renamed from Tests/RunCMake/CompileFeatures/UnsetStandard.cmake)0
-rw-r--r--Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake16
-rw-r--r--Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns-macOS-check.cmake4
-rw-r--r--Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns-macOS.cmake1
-rw-r--r--Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns.cmake20
30 files changed, 198 insertions, 88 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6dc9dcf..d4b7c5c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -723,49 +723,49 @@ upload:macos10.10-package:
# Windows builds
-build:windows-vs2019-x64-ninja:
+build:windows-vs2022-x64-ninja:
extends:
- - .windows_vs2019_x64_ninja
+ - .windows_vs2022_x64_ninja
- .cmake_build_windows
- .cmake_build_artifacts
- - .windows_builder_tags
+ - .windows_tags_nonconcurrent_vs2022
- .run_manually
-test:windows-vs2019-x64-ninja:
+test:windows-vs2022-x64-ninja:
extends:
- - .windows_vs2019_x64_ninja
+ - .windows_vs2022_x64_ninja
- .cmake_test_windows
- - .windows_builder_tags
+ - .windows_tags_nonconcurrent_vs2022
- .cmake_test_artifacts
- .run_dependent
dependencies:
- - build:windows-vs2019-x64-ninja
+ - build:windows-vs2022-x64-ninja
needs:
- - build:windows-vs2019-x64-ninja
+ - build:windows-vs2022-x64-ninja
-test:windows-vs2019-x64:
+test:windows-vs2022-x64:
extends:
- - .windows_vs2019_x64
+ - .windows_vs2022_x64
- .cmake_test_windows_external
- - .windows_builder_ext_tags
+ - .windows_tags_concurrent_vs2022
- .cmake_junit_artifacts
- .run_dependent
dependencies:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
needs:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
test:windows-borland5.5:
extends:
- .windows_borland5.5
- .cmake_test_windows_borland
- - .windows_builder_ext_tags
+ - .windows_tags_concurrent
- .cmake_junit_artifacts
- .run_dependent
dependencies:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
needs:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
@@ -773,13 +773,13 @@ test:windows-borland5.8:
extends:
- .windows_borland5.8
- .cmake_test_windows_borland
- - .windows_builder_ext_tags
+ - .windows_tags_concurrent
- .cmake_junit_artifacts
- .run_dependent
dependencies:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
needs:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
@@ -787,13 +787,13 @@ test:windows-msvc-v71-nmake:
extends:
- .windows_msvc_v71_nmake
- .cmake_test_windows_nmake
- - .windows_builder_ext_tags
+ - .windows_tags_concurrent
- .cmake_junit_artifacts
- .run_dependent
dependencies:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
needs:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
@@ -801,12 +801,12 @@ test:windows-openwatcom1.9:
extends:
- .windows_openwatcom1.9
- .cmake_test_windows_openwatcom
- - .windows_builder_ext_tags
+ - .windows_tags_concurrent
- .cmake_junit_artifacts
- .run_dependent
dependencies:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
needs:
- - test:windows-vs2019-x64-ninja
+ - test:windows-vs2022-x64-ninja
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
diff --git a/.gitlab/ci/configure_windows_vs2019_x64.cmake b/.gitlab/ci/configure_windows_vs2022_x64.cmake
index f6ece57..f6ece57 100644
--- a/.gitlab/ci/configure_windows_vs2019_x64.cmake
+++ b/.gitlab/ci/configure_windows_vs2022_x64.cmake
diff --git a/.gitlab/ci/configure_windows_vs2019_x64_ninja.cmake b/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake
index e1ae81e..e1ae81e 100644
--- a/.gitlab/ci/configure_windows_vs2019_x64_ninja.cmake
+++ b/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake
diff --git a/.gitlab/ci/download_qt.cmake b/.gitlab/ci/download_qt.cmake
index 3990430..5940a28 100644
--- a/.gitlab/ci/download_qt.cmake
+++ b/.gitlab/ci/download_qt.cmake
@@ -18,7 +18,8 @@ if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "windows")
set(msvc_year "2015")
set(qt_abi "win64_msvc${msvc_year}_64")
elseif ("$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2017" OR
- "$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2019")
+ "$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2019" OR
+ "$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2022")
set(qt_platform "windows_x86")
set(msvc_year "2019")
set(qt_abi "win64_msvc${msvc_year}_64")
diff --git a/.gitlab/os-windows.yml b/.gitlab/os-windows.yml
index 7e12496..f781c56 100644
--- a/.gitlab/os-windows.yml
+++ b/.gitlab/os-windows.yml
@@ -31,25 +31,25 @@
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
-.windows_vs2019_x64_ninja:
+.windows_vs2022_x64_ninja:
extends: .windows_ninja
variables:
- CMAKE_CONFIGURATION: windows_vs2019_x64_ninja
- VCVARSALL: "${VS160COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+ CMAKE_CONFIGURATION: windows_vs2022_x64_ninja
+ VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
VCVARSPLATFORM: "x64"
- VCVARSVERSION: "14.29.30133"
+ VCVARSVERSION: "14.30.30705"
### External testing
-.windows_vs2019_x64:
+.windows_vs2022_x64:
extends: .windows
variables:
- CMAKE_CONFIGURATION: windows_vs2019_x64
- CMAKE_GENERATOR: "Visual Studio 16 2019"
+ CMAKE_CONFIGURATION: windows_vs2022_x64
+ CMAKE_GENERATOR: "Visual Studio 17 2022"
CMAKE_GENERATOR_PLATFORM: "x64"
- CMAKE_GENERATOR_TOOLSET: "v142,version=14.29.30133"
+ CMAKE_GENERATOR_TOOLSET: "v143,version=14.30.30705"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_borland:
@@ -104,22 +104,29 @@
## Tags
-.windows_builder_tags:
+.windows_tags_nonconcurrent_vs2022:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows
- shell
- - vs2019
- - msvc-19.29-16.11
+ - vs2022
+ - msvc-19.30
- nonconcurrent
-.windows_builder_ext_tags:
+.windows_tags_concurrent_vs2022:
+ tags:
+ - cmake # Since this is a bare runner, pin to a project.
+ - windows
+ - shell
+ - vs2022
+ - msvc-19.30
+ - concurrent
+
+.windows_tags_concurrent:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows
- shell
- - vs2019
- - msvc-19.29-16.11
- concurrent
## Windows-specific scripts
diff --git a/Help/policy/CMP0128.rst b/Help/policy/CMP0128.rst
index f341f24..604a146 100644
--- a/Help/policy/CMP0128.rst
+++ b/Help/policy/CMP0128.rst
@@ -6,17 +6,19 @@ CMP0128
When this policy is set to ``NEW``:
* :prop_tgt:`<LANG>_EXTENSIONS` is initialized to
+ :variable:`CMAKE_<LANG>_EXTENSIONS` if set, otherwise falling back to
:variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT`.
-* Extensions are correctly disabled/enabled if :prop_tgt:`<LANG>_STANDARD` is
- unset.
+* Extensions are correctly enabled/disabled if :prop_tgt:`<LANG>_STANDARD` is
+ unset or satisfied by the default.
* Standard mode-affecting flags aren't added unless necessary to achieve the
specified mode.
The ``OLD`` behavior:
-* Initializes :prop_tgt:`<LANG>_EXTENSIONS` to ``ON``.
+* Initializes :prop_tgt:`<LANG>_EXTENSIONS` to
+ :variable:`CMAKE_<LANG>_EXTENSIONS` if set, otherwise falling back to ``ON``.
* Always adds a flag if :prop_tgt:`<LANG>_STANDARD` is set and
:prop_tgt:`<LANG>_STANDARD_REQUIRED` is ``OFF``.
@@ -31,26 +33,6 @@ The ``OLD`` behavior:
Code may need to be updated for the ``NEW`` behavior in the following cases:
-* If :prop_tgt:`<LANG>_EXTENSIONS` matches
- :variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT` or is unset and the compiler's
- default satisfies :prop_tgt:`<LANG>_STANDARD` but the compiled code requires
- the exact standard specified.
- Such code should set :prop_tgt:`<LANG>_STANDARD_REQUIRED` to ``ON``.
-
- For example:
-
- .. code-block:: cmake
-
- cmake_minimum_required(VERSION |release|)
- project(example C)
-
- add_executable(exe main.c)
- set_property(TARGET exe PROPERTY C_STANDARD 99)
-
- If the compiler defaults to C11 then the standard specification for C99 is
- satisfied and CMake will pass no flags. ``main.c`` will no longer compile if
- it is incompatible with C11.
-
* If a standard mode flag previously overridden by CMake's and not used during
compiler detection now takes effect due to CMake no longer adding one as the
default detected is appropriate.
@@ -62,6 +44,17 @@ Code may need to be updated for the ``NEW`` behavior in the following cases:
* Or ensure the manually-specified flags are used during compiler detection.
+* If extensions were disabled without :prop_tgt:`<LANG>_STANDARD` being set
+ CMake previously wouldn't actually disable extensions.
+
+ Such code should be updated to not disable extensions if they are required.
+
+* If extensions were enabled/disabled when :prop_tgt:`<LANG>_STANDARD` was
+ satisfied by the compiler's default CMake previously wouldn't actually
+ enable/disable extensions.
+
+ Such code should be updated to set the correct extensions mode.
+
If compiler flags affecting the standard mode are used during compiler
detection (for example in :manual:`a toolchain file <cmake-toolchains(7)>`
using :variable:`CMAKE_<LANG>_FLAGS_INIT`) then they will affect the detected
diff --git a/Help/prop_tgt/XCODE_EMBED_type.rst b/Help/prop_tgt/XCODE_EMBED_type.rst
index a1af56f..e8383c2 100644
--- a/Help/prop_tgt/XCODE_EMBED_type.rst
+++ b/Help/prop_tgt/XCODE_EMBED_type.rst
@@ -19,6 +19,12 @@ The supported values for ``<type>`` are:
The specified items will be added to the ``Embed App Extensions`` build phase.
They must be CMake target names.
+``PLUGINS``
+ .. versionadded:: 3.23
+
+ The specified items will be added to the ``Embed PlugIns`` build phase.
+ They must be CMake target names.
+
See also :prop_tgt:`XCODE_EMBED_<type>_PATH`,
:prop_tgt:`XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY` and
:prop_tgt:`XCODE_EMBED_<type>_CODE_SIGN_ON_COPY`.
diff --git a/Help/prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY.rst b/Help/prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY.rst
index 7ec0385..cb449ac 100644
--- a/Help/prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY.rst
+++ b/Help/prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY.rst
@@ -14,5 +14,8 @@ The supported values for ``<type>`` are:
``APP_EXTENSIONS``
.. versionadded:: 3.21
+``PLUGINS``
+ .. versionadded:: 3.23
+
If a ``XCODE_EMBED_<type>_CODE_SIGN_ON_COPY`` property is not defined on the
target, no code signing on copy will be performed for that ``<type>``.
diff --git a/Help/prop_tgt/XCODE_EMBED_type_PATH.rst b/Help/prop_tgt/XCODE_EMBED_type_PATH.rst
index a6f980d..160f765 100644
--- a/Help/prop_tgt/XCODE_EMBED_type_PATH.rst
+++ b/Help/prop_tgt/XCODE_EMBED_type_PATH.rst
@@ -16,3 +16,6 @@ The supported values for ``<type>`` are:
``APP_EXTENSIONS``
.. versionadded:: 3.21
+
+``PLUGINS``
+ .. versionadded:: 3.23
diff --git a/Help/prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY.rst b/Help/prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY.rst
index 75c8eae..e3a7ced 100644
--- a/Help/prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY.rst
+++ b/Help/prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY.rst
@@ -18,3 +18,6 @@ The supported values for ``<type>`` are:
If the ``XCODE_EMBED_APP_EXTENSIONS_REMOVE_HEADERS_ON_COPY`` property is not
defined, headers WILL be removed on copy by default.
+
+``PLUGINS``
+ .. versionadded:: 3.23
diff --git a/Help/release/dev/xcode-embed-plugins.rst b/Help/release/dev/xcode-embed-plugins.rst
new file mode 100644
index 0000000..10f91f6
--- /dev/null
+++ b/Help/release/dev/xcode-embed-plugins.rst
@@ -0,0 +1,6 @@
+xcode-embed-plugins
+-------------------
+
+* The :prop_tgt:`XCODE_EMBED_PLUGINS <XCODE_EMBED_<type>>` target property
+ was added to tell the :generator:`Xcode` generator what targets to put in
+ the ``Embed PlugIns`` build phase.
diff --git a/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake b/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake
index 05174de..bda1d71 100644
--- a/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake
+++ b/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake
@@ -32,5 +32,6 @@ macro (CHECK_COMPILER_FLAG_COMMON_PATTERNS _VAR)
FAIL_REGEX "Warning: illegal option" # SunStudio 12
FAIL_REGEX "[Ww]arning: Invalid suboption" # Fujitsu
FAIL_REGEX "An invalid option .* appears on the command line" # Cray
+ FAIL_REGEX "WARNING: invalid compiler option" # TI armcl
)
endmacro ()
diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake
index 6033ef6..6c81754 100644
--- a/Modules/CMakeFindBinUtils.cmake
+++ b/Modules/CMakeFindBinUtils.cmake
@@ -85,7 +85,7 @@ if(("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC" AND
list(PREPEND _CMAKE_MT_NAMES "llvm-mt")
list(PREPEND _CMAKE_LINKER_NAMES "lld-link")
list(APPEND _CMAKE_TOOL_VARS NM)
- elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^xIntel")
+ elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xIntel")
list(PREPEND _CMAKE_AR_NAMES "xilib")
list(PREPEND _CMAKE_LINKER_NAMES "xilink")
endif()
diff --git a/Modules/CMakeFortranCompiler.cmake.in b/Modules/CMakeFortranCompiler.cmake.in
index f690eb2..97f891e 100644
--- a/Modules/CMakeFortranCompiler.cmake.in
+++ b/Modules/CMakeFortranCompiler.cmake.in
@@ -5,6 +5,7 @@ set(CMAKE_Fortran_COMPILER_VERSION "@CMAKE_Fortran_COMPILER_VERSION@")
set(CMAKE_Fortran_COMPILER_WRAPPER "@CMAKE_Fortran_COMPILER_WRAPPER@")
set(CMAKE_Fortran_PLATFORM_ID "@CMAKE_Fortran_PLATFORM_ID@")
set(CMAKE_Fortran_SIMULATE_ID "@CMAKE_Fortran_SIMULATE_ID@")
+set(CMAKE_Fortran_COMPILER_FRONTEND_VARIANT "@CMAKE_Fortran_COMPILER_FRONTEND_VARIANT@")
set(CMAKE_Fortran_SIMULATE_VERSION "@CMAKE_Fortran_SIMULATE_VERSION@")
@_SET_CMAKE_Fortran_XL_CPP@
@_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID@
diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake
index e4d6cf3..4198374 100644
--- a/Modules/FindThreads.cmake
+++ b/Modules/FindThreads.cmake
@@ -164,18 +164,21 @@ if(CMAKE_HAVE_PTHREAD_H)
elseif(CMAKE_CXX_COMPILER_LOADED)
CHECK_CXX_SOURCE_COMPILES("${PTHREAD_C_CXX_TEST_SOURCE}" CMAKE_HAVE_LIBC_PTHREAD)
endif()
- if(CMAKE_HAVE_LIBC_PTHREAD)
+
+ # Check for -pthread first if enabled. This is the recommended
+ # way, but not backwards compatible as one must also pass -pthread
+ # as compiler flag then.
+ if(THREADS_PREFER_PTHREAD_FLAG)
+ _check_pthreads_flag()
+ endif()
+
+ if(Threads_FOUND)
+ # do nothing, we are done
+ elseif(CMAKE_HAVE_LIBC_PTHREAD)
set(CMAKE_THREAD_LIBS_INIT "")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(Threads_FOUND TRUE)
else()
- # Check for -pthread first if enabled. This is the recommended
- # way, but not backwards compatible as one must also pass -pthread
- # as compiler flag then.
- if (THREADS_PREFER_PTHREAD_FLAG)
- _check_pthreads_flag()
- endif ()
-
if(CMAKE_SYSTEM MATCHES "GHS-MULTI")
_check_threads_lib(posix pthread_create CMAKE_HAVE_PTHREADS_CREATE)
endif()
diff --git a/Modules/FindVulkan.cmake b/Modules/FindVulkan.cmake
index 078e367..527ca8b 100644
--- a/Modules/FindVulkan.cmake
+++ b/Modules/FindVulkan.cmake
@@ -143,10 +143,15 @@ if(Vulkan_INCLUDE_DIR)
if(EXISTS ${VULKAN_CORE_H})
file(STRINGS ${VULKAN_CORE_H} VulkanHeaderVersionLine REGEX "^#define VK_HEADER_VERSION ")
string(REGEX MATCHALL "[0-9]+" VulkanHeaderVersion "${VulkanHeaderVersionLine}")
- file(STRINGS ${VULKAN_CORE_H} VulkanHeaderVersionLine REGEX "^#define VK_HEADER_VERSION_COMPLETE ")
- # "#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 2, VK_HEADER_VERSION)"
- string(REGEX REPLACE ".*\\([0_9]+[, ]+([0-9]+)[, ]+([0-9]+)[, ].*\\)"
- "\\1.\\2.${VulkanHeaderVersion}" Vulkan_VERSION "${VulkanHeaderVersionLine}")
+ file(STRINGS ${VULKAN_CORE_H} VulkanHeaderVersionLine2 REGEX "^#define VK_HEADER_VERSION_COMPLETE ")
+ string(REGEX MATCHALL "[0-9]+" VulkanHeaderVersion2 "${VulkanHeaderVersionLine2}")
+ list(LENGTH VulkanHeaderVersion2 _len)
+ # versions >= 1.2.175 have an additional numbers in front of e.g. '0, 1, 2' instead of '1, 2'
+ if(_len EQUAL 3)
+ list(REMOVE_AT VulkanHeaderVersion2 0)
+ endif()
+ list(APPEND VulkanHeaderVersion2 ${VulkanHeaderVersion})
+ list(JOIN VulkanHeaderVersion2 "." Vulkan_VERSION)
endif()
endif()
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 7b3d170..29e7899 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 22)
-set(CMake_VERSION_PATCH 20211109)
+set(CMake_VERSION_PATCH 20211112)
#set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0)
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index c8df0a7..6fa15e6 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -3910,6 +3910,14 @@ void cmGlobalXCodeGenerator::AddEmbeddedFrameworks(cmXCodeObject* target)
NoActionOnCopyByDefault);
}
+void cmGlobalXCodeGenerator::AddEmbeddedPlugIns(cmXCodeObject* target)
+{
+ static const auto dstSubfolderSpec = "13";
+
+ this->AddEmbeddedObjects(target, "Embed PlugIns", "XCODE_EMBED_PLUGINS",
+ dstSubfolderSpec, NoActionOnCopyByDefault);
+}
+
void cmGlobalXCodeGenerator::AddEmbeddedAppExtensions(cmXCodeObject* target)
{
static const auto dstSubfolderSpec = "13";
@@ -4298,6 +4306,7 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
for (auto t : targets) {
this->AddDependAndLinkInformation(t);
this->AddEmbeddedFrameworks(t);
+ this->AddEmbeddedPlugIns(t);
this->AddEmbeddedAppExtensions(t);
// Inherit project-wide values for any target-specific search paths.
this->InheritBuildSettingAttribute(t, "HEADER_SEARCH_PATHS");
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h
index 4d7ee90..910c946 100644
--- a/Source/cmGlobalXCodeGenerator.h
+++ b/Source/cmGlobalXCodeGenerator.h
@@ -216,6 +216,7 @@ private:
const std::string& dstSubfolderSpec,
int actionsOnByDefault);
void AddEmbeddedFrameworks(cmXCodeObject* target);
+ void AddEmbeddedPlugIns(cmXCodeObject* target);
void AddEmbeddedAppExtensions(cmXCodeObject* target);
void AddPositionIndependentLinkAttribute(cmGeneratorTarget* target,
cmXCodeObject* buildSettings,
diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx
index 02b4821..4503038 100644
--- a/Source/cmOutputConverter.cxx
+++ b/Source/cmOutputConverter.cxx
@@ -143,7 +143,7 @@ std::string cmOutputConverter::ConvertToOutputFormat(cm::string_view source,
result = this->EscapeForShell(result, true, false, output == WATCOMQUOTE,
output == NINJAMULTI);
} else if (output == RESPONSE) {
- result = this->EscapeForShell(result, false, false, false);
+ result = this->EscapeForShell(result, false, false, false, false, true);
}
return result;
}
@@ -175,9 +175,11 @@ static bool cmOutputConverterIsShellOperator(cm::string_view str)
return (shellOperators.count(str) != 0);
}
-std::string cmOutputConverter::EscapeForShell(
- cm::string_view str, bool makeVars, bool forEcho, bool useWatcomQuote,
- bool unescapeNinjaConfiguration) const
+std::string cmOutputConverter::EscapeForShell(cm::string_view str,
+ bool makeVars, bool forEcho,
+ bool useWatcomQuote,
+ bool unescapeNinjaConfiguration,
+ bool forResponse) const
{
// Do not escape shell operators.
if (cmOutputConverterIsShellOperator(str)) {
@@ -203,6 +205,9 @@ std::string cmOutputConverter::EscapeForShell(
if (useWatcomQuote) {
flags |= Shell_Flag_WatcomQuote;
}
+ if (forResponse) {
+ flags |= Shell_Flag_IsResponse;
+ }
if (this->GetState()->UseWatcomWMake()) {
flags |= Shell_Flag_WatcomWMake;
}
@@ -360,6 +365,13 @@ bool cmOutputConverter::Shell_CharNeedsQuotes(char c, int flags)
return true;
}
+ /* Quote hyphens in response files */
+ if (flags & Shell_Flag_IsResponse) {
+ if (c == '-') {
+ return true;
+ }
+ }
+
if (flags & Shell_Flag_IsUnix) {
/* On UNIX several special characters need quotes to preserve them. */
if (Shell_CharNeedsQuotesOnUnix(c)) {
diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h
index 53ec247..335442d 100644
--- a/Source/cmOutputConverter.h
+++ b/Source/cmOutputConverter.h
@@ -88,11 +88,14 @@ public:
Shell_Flag_IsUnix = (1 << 8),
Shell_Flag_UnescapeNinjaConfiguration = (1 << 9),
+
+ Shell_Flag_IsResponse = (1 << 10)
};
std::string EscapeForShell(cm::string_view str, bool makeVars = false,
bool forEcho = false, bool useWatcomQuote = false,
- bool unescapeNinjaConfiguration = false) const;
+ bool unescapeNinjaConfiguration = false,
+ bool forResponse = false) const;
enum class WrapQuotes
{
diff --git a/Source/cmStandardLevelResolver.cxx b/Source/cmStandardLevelResolver.cxx
index 957f4ca..61416e0 100644
--- a/Source/cmStandardLevelResolver.cxx
+++ b/Source/cmStandardLevelResolver.cxx
@@ -206,7 +206,8 @@ struct StandardLevelComputer
// If the standard requested is older than the compiler's default or the
// extension mode doesn't match then we need to use a flag.
- if (stdIt < defaultStdIt) {
+ if (stdIt < defaultStdIt ||
+ (cmp0128 == cmPolicies::NEW && ext != defaultExt)) {
auto offset = std::distance(cm::cbegin(stds), stdIt);
return cmStrCat("CMAKE_", this->Language, stdsStrings[offset], "_", type,
"_COMPILE_OPTION");
diff --git a/Tests/RunCMake/CompileFeatures/ExtensionsStandardDefault-build-check.cmake b/Tests/RunCMake/CompileFeatures/ExtensionsStandardDefault-build-check.cmake
new file mode 100644
index 0000000..4e85397
--- /dev/null
+++ b/Tests/RunCMake/CompileFeatures/ExtensionsStandardDefault-build-check.cmake
@@ -0,0 +1,12 @@
+foreach(flag @flags@)
+ string(FIND "${actual_stdout}" "${flag}" position)
+
+ if(NOT position EQUAL -1)
+ set(found TRUE)
+ break()
+ endif()
+endforeach()
+
+if(NOT found)
+ set(RunCMake_TEST_FAILED "No compile flags from \"@flags@\" found for LANG_STANDARD=default and @lang@_EXTENSIONS=@extensions_opposite@.")
+endif()
diff --git a/Tests/RunCMake/CompileFeatures/ExtensionsStandardDefault.cmake b/Tests/RunCMake/CompileFeatures/ExtensionsStandardDefault.cmake
new file mode 100644
index 0000000..32578d1
--- /dev/null
+++ b/Tests/RunCMake/CompileFeatures/ExtensionsStandardDefault.cmake
@@ -0,0 +1,9 @@
+enable_language(@lang@)
+
+# Make sure the compile command is not hidden.
+string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_@lang@_COMPILE_OBJECT "${CMAKE_@lang@_COMPILE_OBJECT}")
+string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_@lang@_COMPILE_OBJECT "${CMAKE_@lang@_COMPILE_OBJECT}")
+
+set(CMAKE_@lang@_EXTENSIONS @extensions_opposite@)
+set(CMAKE_@lang@_STANDARD @standard_default@)
+add_library(foo "@RunCMake_SOURCE_DIR@/empty.@ext@")
diff --git a/Tests/RunCMake/CompileFeatures/UnsetStandard-build-check.cmake b/Tests/RunCMake/CompileFeatures/ExtensionsStandardUnset-build-check.cmake
index abe293c..abe293c 100644
--- a/Tests/RunCMake/CompileFeatures/UnsetStandard-build-check.cmake
+++ b/Tests/RunCMake/CompileFeatures/ExtensionsStandardUnset-build-check.cmake
diff --git a/Tests/RunCMake/CompileFeatures/UnsetStandard.cmake b/Tests/RunCMake/CompileFeatures/ExtensionsStandardUnset.cmake
index 99bb3f0..99bb3f0 100644
--- a/Tests/RunCMake/CompileFeatures/UnsetStandard.cmake
+++ b/Tests/RunCMake/CompileFeatures/ExtensionsStandardUnset.cmake
diff --git a/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake b/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
index 3bfd211..ebd981b 100644
--- a/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
@@ -36,7 +36,7 @@ endif()
configure_file("${RunCMake_SOURCE_DIR}/CMakeLists.txt" "${RunCMake_BINARY_DIR}/CMakeLists.txt" COPYONLY)
-macro(test_build)
+function(test_build)
set(test ${name}-${lang})
configure_file("${RunCMake_SOURCE_DIR}/${name}.cmake" "${RunCMake_BINARY_DIR}/${test}.cmake" @ONLY)
@@ -52,7 +52,7 @@ macro(test_build)
run_cmake(${test})
set(RunCMake_TEST_NO_CLEAN 1)
run_cmake_command(${test}-build ${CMAKE_COMMAND} --build . ${ARGN})
-endmacro()
+endfunction()
# Mangle flags such as they're in verbose build output.
macro(mangle_flags variable)
@@ -68,7 +68,7 @@ macro(mangle_flags variable)
list(APPEND flags "${result}")
endmacro()
-function(test_unset_standard)
+function(test_extensions_opposite)
if(extensions_opposite)
set(flag_ext "_EXT")
endif()
@@ -81,9 +81,15 @@ function(test_unset_standard)
mangle_flags(flag)
- set(name UnsetStandard)
+ # Make sure we enable/disable extensions when:
+ # 1. LANG_STANDARD is unset.
+ set(name ExtensionsStandardUnset)
set(RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0128=NEW)
test_build(--verbose)
+
+ # 2. LANG_STANDARD matches CMAKE_LANG_STANDARD_DEFAULT.
+ set(name ExtensionsStandardDefault)
+ test_build(--verbose)
endfunction()
function(test_no_unnecessary_flag)
@@ -138,7 +144,7 @@ function(test_lang lang ext)
set(extensions_opposite ON)
endif()
- test_unset_standard()
+ test_extensions_opposite()
test_no_unnecessary_flag()
test_cmp0128_warn_match()
test_cmp0128_warn_unset()
diff --git a/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns-macOS-check.cmake b/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns-macOS-check.cmake
new file mode 100644
index 0000000..576be11
--- /dev/null
+++ b/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns-macOS-check.cmake
@@ -0,0 +1,4 @@
+include(${CMAKE_CURRENT_LIST_DIR}/findAttribute.cmake)
+
+findAttribute(${test} "RemoveHeadersOnCopy" TRUE)
+findAttribute(${test} "CodeSignOnCopy" FALSE)
diff --git a/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns-macOS.cmake b/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns-macOS.cmake
new file mode 100644
index 0000000..57f8fbe
--- /dev/null
+++ b/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns-macOS.cmake
@@ -0,0 +1 @@
+include(${CMAKE_CURRENT_LIST_DIR}/EmbedPlugIns.cmake)
diff --git a/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns.cmake b/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns.cmake
new file mode 100644
index 0000000..1bd1bd0
--- /dev/null
+++ b/Tests/RunCMake/XcodeProject-Embed/EmbedPlugIns.cmake
@@ -0,0 +1,20 @@
+add_executable(plug_in MACOS_BUNDLE Empty.txt)
+set_target_properties(plug_in PROPERTIES
+ LINKER_LANGUAGE CXX
+ XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
+ XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
+ XCODE_ATTRIBUTE_ENABLE_BITCODE "NO"
+ MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in"
+ MACOSX_BUNDLE_GUI_IDENTIFIER "com.example.app.plug_in"
+ XCODE_EXPLICIT_FILE_TYPE "wrapper.cfbundle"
+ XCODE_ATTRIBUTE_MACH_O_TYPE "mh_bundle"
+)
+
+add_executable(app MACOSX_BUNDLE main.m)
+add_dependencies(app plug_in)
+set_target_properties(app PROPERTIES
+ XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
+ XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
+ XCODE_EMBED_PLUGINS plug_in
+ MACOSX_BUNDLE_GUI_IDENTIFIER "com.example.app"
+)