mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
The quoting added by commit8c5221fb1f(try_compile: Preserve special characters in COMPILE_DEFINITIONS, 2019-01-21, v3.14.0-rc1~108^2~3) broke the case that the `COMPILE_DEFINITIONS` value contains a `;`. Without the quoting the `;` would be generated literally in an unquoted argument in the test `CMakeLists.txt` file and would then be expanded. With quoting the `;` is preserved, which is not the old behavior. Fix this by expanding the `;`-list ahead of time. Add test cases for behavior with both `#` and `;`. This was noticed with the PGI compiler where we set `CMAKE_CXX*_STANDARD_COMPILE_OPTION` to values like `--c++17;-A`. The symptom had also been observed while preparing commitef8f237686(ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray fix, 2019-01-29, v3.14.0-rc1~26^2~2) but was not recognized at the time as a regression. Revert the workaround added by that commit. Fixes: #18919
24 lines
907 B
CMake
24 lines
907 B
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file Copyright.txt or https://cmake.org/licensing for details.
|
|
|
|
include(Compiler/Cray)
|
|
__compiler_cray(CXX)
|
|
|
|
string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
|
|
string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
|
|
|
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
|
|
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION -h conform)
|
|
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -h gnu)
|
|
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.4)
|
|
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION -h std=c++11)
|
|
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -h std=c++11,gnu)
|
|
endif()
|
|
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.6)
|
|
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION -h std=c++14)
|
|
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -h std=c++14,gnu)
|
|
endif ()
|
|
endif ()
|
|
|
|
__compiler_check_default_language_standard(CXX 8.1 98)
|