summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-06-10 14:39:42 (GMT)
committerKitware Robot <kwrobot@kitware.com>2022-06-10 14:40:06 (GMT)
commit99a0f1b1b26283a6de308c604ddc9436f900ca36 (patch)
treec305be8cfdc73b93b6998f0e8036dc7d482fdc11
parent5ed9232d781ccfa3a9fae709e12999c6649aca2f (diff)
parent7d73e88d3a7490cf1047369da8292a57c0b60bce (diff)
downloadCMake-99a0f1b1b26283a6de308c604ddc9436f900ca36.zip
CMake-99a0f1b1b26283a6de308c604ddc9436f900ca36.tar.gz
CMake-99a0f1b1b26283a6de308c604ddc9436f900ca36.tar.bz2
Merge topic 'revert-msvc-compilers-default-to-ZI'
7d73e88d3a MSVC: Revert "Default to -ZI instead of /Zi for x86 and x64" Acked-by: Kitware Robot <kwrobot@kitware.com> Tested-by: buildbot <buildbot@kitware.com> Merge-request: !7344
-rw-r--r--Help/manual/cmake-policies.7.rst2
-rw-r--r--Help/policy/CMP0138.rst32
-rw-r--r--Help/release/3.24.rst3
-rw-r--r--Modules/Platform/Windows-MSVC-C.cmake9
-rw-r--r--Modules/Platform/Windows-MSVC-CXX.cmake9
-rw-r--r--Modules/Platform/Windows-MSVC.cmake9
-rw-r--r--Source/cmPolicies.h5
-rw-r--r--Tests/RunCMake/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-NEW.cmake2
-rw-r--r--Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-OLD.cmake2
-rw-r--r--Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-WARN.cmake2
-rw-r--r--Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-common.cmake20
-rw-r--r--Tests/RunCMake/MSVCDebugInformationFormat/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/MSVCDebugInformationFormat/RunCMakeTest.cmake5
14 files changed, 6 insertions, 100 deletions
diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst
index 1447c17..d99afe3 100644
--- a/Help/manual/cmake-policies.7.rst
+++ b/Help/manual/cmake-policies.7.rst
@@ -59,7 +59,7 @@ Policies Introduced by CMake 3.24
:maxdepth: 1
CMP0139: The if() command supports path comparisons using PATH_EQUAL operator. </policy/CMP0139>
- CMP0138: MSVC compilers use -ZI instead of /Zi for x86 and x64 by default. </policy/CMP0138>
+ CMP0138: Placeholder for reverted policy. </policy/CMP0138>
CMP0137: try_compile() passes platform variables in project mode. </policy/CMP0137>
CMP0136: Watcom runtime library flags are selected by an abstraction. </policy/CMP0136>
CMP0135: ExternalProject ignores timestamps in archives by default for the URL download method. </policy/CMP0135>
diff --git a/Help/policy/CMP0138.rst b/Help/policy/CMP0138.rst
index 5cf3948..c7f0e2d 100644
--- a/Help/policy/CMP0138.rst
+++ b/Help/policy/CMP0138.rst
@@ -3,37 +3,7 @@ CMP0138
.. versionadded:: 3.24
-MSVC compilers use ``-ZI`` instead of ``/Zi`` for x86 and x64 by default.
-
-When using MSVC C/C++ compilers in CMake 3.23 and below, debug information
-format flag ``/Zi`` is added to :variable:`CMAKE_<LANG>_FLAGS_DEBUG` and
-:variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO` by default. The ``/Zi`` flag
-produces a separate PDB file that contains all the symbolic debugging
-information for use with the debugger, however, it does not support Edit
-and Continue feature in a debugging session.
-
-CMake 3.24 and above adds ``-ZI`` to :variable:`CMAKE_<LANG>_FLAGS_DEBUG`
-and :variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO` instead to enable Edit
-and Continue by default.
-
-This policy provides compatibility with projects that have not been updated
-to expect the lack of warning flags. The policy setting takes effect as of
-the first :command:`project` or :command:`enable_language` command that
-initializes :variable:`CMAKE_<LANG>_FLAGS_DEBUG` and
-:variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO` for a given language
-``<LANG>`` using MSVC compilers.
-
-.. note::
-
- Once the policy has taken effect at the top of a project for a given
- language, that choice must be used throughout the tree for that language.
- In projects that have nested projects in subdirectories, be sure to
- convert everything together.
-
-The ``OLD`` behavior for this policy is to place ``/Zi`` in the default
-:variable:`CMAKE_<LANG>_FLAGS_DEBUG` and
-:variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO` cache entries. The ``NEW``
-behavior for this policy is to place ``-ZI`` in the default cache entries.
+Placeholder for reverted policy.
This policy was introduced in CMake version 3.24. Use the
:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
diff --git a/Help/release/3.24.rst b/Help/release/3.24.rst
index 05fd848..f347acb 100644
--- a/Help/release/3.24.rst
+++ b/Help/release/3.24.rst
@@ -319,9 +319,6 @@ Deprecated and Removed Features
Other Changes
=============
-* With MSVC compilers, debug configurations now use ``-ZI`` by default
- instead of ``/Zi``. See policy :policy:`CMP0138`.
-
* CMake no longer sets environment variables like :envvar:`CC`, :envvar:`CXX`,
etc. when enabling the corresponding language during the first CMake run in
a build directory. See policy :policy:`CMP0132`.
diff --git a/Modules/Platform/Windows-MSVC-C.cmake b/Modules/Platform/Windows-MSVC-C.cmake
index 7dfc033..67b6827 100644
--- a/Modules/Platform/Windows-MSVC-C.cmake
+++ b/Modules/Platform/Windows-MSVC-C.cmake
@@ -2,15 +2,6 @@ include(Platform/Windows-MSVC)
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 18.0)
set(_FS_C " /FS")
endif()
-
-cmake_policy(GET CMP0138 _cmp0138)
-if(_cmp0138 STREQUAL "NEW")
- if(NOT _MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" AND NOT _MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64")
- set(_ZiOrZI "-ZI")
- endif()
-endif()
-unset(_cmp0138)
-
__windows_compiler_msvc(C)
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
diff --git a/Modules/Platform/Windows-MSVC-CXX.cmake b/Modules/Platform/Windows-MSVC-CXX.cmake
index ba9a260..6fea617 100644
--- a/Modules/Platform/Windows-MSVC-CXX.cmake
+++ b/Modules/Platform/Windows-MSVC-CXX.cmake
@@ -3,15 +3,6 @@ set(_COMPILE_CXX " /TP")
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0)
set(_FS_CXX " /FS")
endif()
-
-cmake_policy(GET CMP0138 _cmp0138)
-if(_cmp0138 STREQUAL "NEW")
- if(NOT _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM" AND NOT _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64")
- set(_ZiOrZI "-ZI")
- endif()
-endif()
-unset(_cmp0138)
-
__windows_compiler_msvc(CXX)
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake
index acfd0d8..e74ec9e 100644
--- a/Modules/Platform/Windows-MSVC.cmake
+++ b/Modules/Platform/Windows-MSVC.cmake
@@ -441,10 +441,6 @@ macro(__windows_compiler_msvc lang)
endif()
unset(_cmp0092)
- if(NOT DEFINED _ZiOrZI)
- set(_ZiOrZI "/Zi")
- endif()
-
if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
# note: MSVC 14 2015 Update 1 sets -fno-ms-compatibility by default, but this does not allow one to compile many projects
# that include MS's own headers. CMake itself is affected project too.
@@ -455,16 +451,15 @@ macro(__windows_compiler_msvc lang)
string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "${_MD} -DNDEBUG") # TODO: Add '-Os' once VS generator maps it properly for Clang
else()
string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS${_W3}${_FLAGS_${lang}}")
- string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT "${_MDd} ${_ZiOrZI} /Ob0 /Od ${_RTC1}")
+ string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT "${_MDd} /Zi /Ob0 /Od ${_RTC1}")
string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT "${_MD} /O2 /Ob2 /DNDEBUG")
- string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "${_MD} ${_ZiOrZI} /O2 /Ob1 /DNDEBUG")
+ string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "${_MD} /Zi /O2 /Ob1 /DNDEBUG")
string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "${_MD} /O1 /Ob1 /DNDEBUG")
endif()
unset(_Wall)
unset(_W3)
unset(_MDd)
unset(_MD)
- unset(_ZiOrZI)
set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded -MT)
set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL -MD)
diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h
index 256d483..72a169a 100644
--- a/Source/cmPolicies.h
+++ b/Source/cmPolicies.h
@@ -415,9 +415,8 @@ class cmMakefile;
SELECT(POLICY, CMP0137, \
"try_compile() passes platform variables in project mode", 3, 24, 0, \
cmPolicies::WARN) \
- SELECT(POLICY, CMP0138, \
- "MSVC compilers use -ZI instead of /Zi for x86 and x64 by default.", \
- 3, 24, 0, cmPolicies::WARN) \
+ SELECT(POLICY, CMP0138, "Placeholder for reverted policy.", 3, 24, 0, \
+ cmPolicies::WARN) \
SELECT( \
POLICY, CMP0139, \
"The if() command supports path comparisons using PATH_EQUAL operator.", \
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 4b00212..5325a3a 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -355,9 +355,6 @@ if(MSVC)
add_RunCMake_test(MSVCRuntimeLibrary)
add_RunCMake_test(MSVCRuntimeTypeInfo)
add_RunCMake_test(MSVCWarningFlags)
- if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
- add_RunCMake_test(MSVCDebugInformationFormat)
- endif()
endif()
if(XCODE_VERSION)
set(ObjectLibrary_ARGS -DXCODE_VERSION=${XCODE_VERSION})
diff --git a/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-NEW.cmake b/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-NEW.cmake
deleted file mode 100644
index 7dda266..0000000
--- a/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-NEW.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-cmake_policy(SET CMP0138 NEW)
-include(CMP0138-common.cmake)
diff --git a/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-OLD.cmake b/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-OLD.cmake
deleted file mode 100644
index 43e4668..0000000
--- a/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-OLD.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-cmake_policy(SET CMP0138 OLD)
-include(CMP0138-common.cmake)
diff --git a/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-WARN.cmake b/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-WARN.cmake
deleted file mode 100644
index 2a0dd0e..0000000
--- a/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-WARN.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-
-include(CMP0138-common.cmake)
diff --git a/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-common.cmake b/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-common.cmake
deleted file mode 100644
index 89a5ca1..0000000
--- a/Tests/RunCMake/MSVCDebugInformationFormat/CMP0138-common.cmake
+++ /dev/null
@@ -1,20 +0,0 @@
-foreach(lang C CXX)
- enable_language(${lang})
-
- cmake_policy(GET CMP0138 cmp0138)
- if(cmp0138 STREQUAL "NEW")
- if(NOT " ${CMAKE_${lang}_FLAGS_DEBUG} " MATCHES " -ZI ")
- message(SEND_ERROR "CMAKE_${lang}_FLAGS_DEBUG does not have '-ZI' under NEW behavior")
- endif()
- if(NOT " ${CMAKE_${lang}_FLAGS_RELWITHDEBINFO} " MATCHES " -ZI ")
- message(SEND_ERROR "CMAKE_${lang}_FLAGS_RELWITHDEBINFO does not have '-ZI' under NEW behavior")
- endif()
- else()
- if(NOT " ${CMAKE_${lang}_FLAGS_DEBUG} " MATCHES " /Zi ")
- message(SEND_ERROR "CMAKE_${lang}_FLAGS_DEBUG does not have '/Zi' under OLD behavior")
- endif()
- if(NOT " ${CMAKE_${lang}_FLAGS_RELWITHDEBINFO} " MATCHES " /Zi ")
- message(SEND_ERROR "CMAKE_${lang}_FLAGS_RELWITHDEBINFO does not have '/Zi' under OLD behavior")
- endif()
- endif()
-endforeach()
diff --git a/Tests/RunCMake/MSVCDebugInformationFormat/CMakeLists.txt b/Tests/RunCMake/MSVCDebugInformationFormat/CMakeLists.txt
deleted file mode 100644
index 5ff8d3e..0000000
--- a/Tests/RunCMake/MSVCDebugInformationFormat/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-cmake_minimum_required(VERSION 3.23)
-project(${RunCMake_TEST} NONE)
-include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/MSVCDebugInformationFormat/RunCMakeTest.cmake b/Tests/RunCMake/MSVCDebugInformationFormat/RunCMakeTest.cmake
deleted file mode 100644
index 7210fcd..0000000
--- a/Tests/RunCMake/MSVCDebugInformationFormat/RunCMakeTest.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-include(RunCMake)
-
-run_cmake(CMP0138-WARN)
-run_cmake(CMP0138-OLD)
-run_cmake(CMP0138-NEW)