mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
Merge topic 'revert-explicit-LANGUAGE-flag' into release-3.19
30aa715fac
Revert "specify language flag when source LANGUAGE property is set"
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5519
This commit is contained in:
@@ -330,3 +330,19 @@ Other Changes
|
||||
* If ``CUDA`` compiler detection fails with user-specified
|
||||
:variable:`CMAKE_CUDA_ARCHITECTURES` or
|
||||
:variable:`CMAKE_CUDA_HOST_COMPILER`, an error is raised.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.19.0 include the following.
|
||||
|
||||
3.19.1
|
||||
------
|
||||
|
||||
* CMake 3.19.0 compiles source files with the :prop_sf:`LANGUAGE`
|
||||
property by passing an explicit language flag such as ``-x c``.
|
||||
This is consistent with the property's documented meaning that
|
||||
the source file is written in the specified language. However,
|
||||
it can break projects that were using the property only to
|
||||
cause the specified language's compiler to be used. This has
|
||||
been reverted to restore behavior from CMake 3.18 and below.
|
||||
|
@@ -1,8 +1,6 @@
|
||||
include(Compiler/Clang)
|
||||
__compiler_clang(C)
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
|
@@ -1,8 +1,6 @@
|
||||
include(Compiler/Clang)
|
||||
__compiler_clang(CXX)
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
||||
|
||||
if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
||||
endif()
|
||||
|
@@ -8,8 +8,6 @@ endif()
|
||||
|
||||
if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
elseif("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
|
@@ -2,9 +2,7 @@ include(Compiler/Clang)
|
||||
__compiler_clang(CXX)
|
||||
__compiler_clang_cxx_standards(CXX)
|
||||
|
||||
|
||||
if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
||||
endif()
|
||||
|
||||
|
@@ -1,8 +1,6 @@
|
||||
include(Compiler/GNU)
|
||||
__compiler_gnu(C)
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
|
@@ -1,8 +1,6 @@
|
||||
include(Compiler/GNU)
|
||||
__compiler_gnu(CXX)
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
||||
|
||||
if (WIN32)
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fno-keep-inline-dllexport")
|
||||
|
@@ -28,8 +28,6 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
|
||||
else()
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
|
@@ -42,8 +42,6 @@ if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
|
||||
else()
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
|
||||
|
@@ -6,8 +6,6 @@ string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
|
||||
# -qthreaded = Ensures that all optimizations will be thread-safe
|
||||
string(APPEND CMAKE_C_FLAGS_INIT " -qthreaded")
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -qsourcetype=c)
|
||||
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-qlanglvl=stdc89")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-qlanglvl=extc89")
|
||||
|
@@ -6,8 +6,6 @@ string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
|
||||
# -qthreaded = Ensures that all optimizations will be thread-safe
|
||||
string(APPEND CMAKE_CXX_FLAGS_INIT " -qthreaded")
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -+)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1)
|
||||
if(CMAKE_SYSTEM MATCHES "Linux")
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
|
||||
@@ -34,3 +32,6 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1)
|
||||
endif ()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 10.1 98)
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OBJECT
|
||||
"<CMAKE_CXX_COMPILER> -+ <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
|
||||
|
@@ -1,8 +1,6 @@
|
||||
include(Compiler/XLClang)
|
||||
__compiler_xlclang(C)
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89")
|
||||
|
@@ -1,8 +1,6 @@
|
||||
include(Compiler/XLClang)
|
||||
__compiler_xlclang(CXX)
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
|
||||
|
@@ -349,13 +349,6 @@ std::string cmExtraSublimeTextGenerator::ComputeFlagsForObject(
|
||||
if (language.empty()) {
|
||||
language = "C";
|
||||
}
|
||||
|
||||
// explicitly add the explicit language flag before any other flag
|
||||
// this way backwards compatibility with user flags is maintained
|
||||
if (source->GetProperty("LANGUAGE")) {
|
||||
lg->AppendFeatureOptions(flags, language, "EXPLICIT_LANGUAGE");
|
||||
}
|
||||
|
||||
std::string const& config =
|
||||
lg->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE");
|
||||
|
||||
|
@@ -937,14 +937,6 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeSourceFile(
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// explicitly add the explicit language flag before any other flag
|
||||
// this way backwards compatibility with user flags is maintained
|
||||
if (sf->GetProperty("LANGUAGE")) {
|
||||
this->CurrentLocalGenerator->AppendFeatureOptions(flags, lang,
|
||||
"EXPLICIT_LANGUAGE");
|
||||
}
|
||||
|
||||
const std::string COMPILE_FLAGS("COMPILE_FLAGS");
|
||||
if (cmProp cflags = sf->GetProperty(COMPILE_FLAGS)) {
|
||||
lg->AppendFlags(flags, genexInterpreter.Evaluate(*cflags, COMPILE_FLAGS));
|
||||
|
@@ -573,13 +573,6 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
|
||||
// Build the set of compiler flags.
|
||||
std::string flags;
|
||||
|
||||
// explicitly add the explicit language flag before any other flag
|
||||
// this way backwards compatibility with user flags is maintained
|
||||
if (source.GetProperty("LANGUAGE")) {
|
||||
this->LocalGenerator->AppendFeatureOptions(flags, lang,
|
||||
"EXPLICIT_LANGUAGE");
|
||||
}
|
||||
|
||||
// Add language-specific flags.
|
||||
std::string langFlags = cmStrCat("$(", lang, "_FLAGS", filterArch, ")");
|
||||
this->LocalGenerator->AppendFlags(flags, langFlags);
|
||||
|
@@ -190,16 +190,7 @@ std::string cmNinjaTargetGenerator::ComputeFlagsForObject(
|
||||
}
|
||||
}
|
||||
|
||||
std::string flags;
|
||||
// explicitly add the explicit language flag before any other flag
|
||||
// this way backwards compatibility with user flags is maintained
|
||||
if (source->GetProperty("LANGUAGE")) {
|
||||
this->LocalGenerator->AppendFeatureOptions(flags, language,
|
||||
"EXPLICIT_LANGUAGE");
|
||||
flags += " ";
|
||||
}
|
||||
|
||||
flags += this->GetFlags(language, config, filterArch);
|
||||
std::string flags = this->GetFlags(language, config, filterArch);
|
||||
|
||||
// Add Fortran format flags.
|
||||
if (language == "Fortran") {
|
||||
|
@@ -15,10 +15,3 @@ if(CMAKE_GENERATOR MATCHES "^Visual Studio" AND "x${CMAKE_C_COMPILER_ID}" STREQU
|
||||
add_library(stay stay_c.c stay_cxx.cxx)
|
||||
set_property(TARGET stay PROPERTY COMPILE_OPTIONS "-TP")
|
||||
endif()
|
||||
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "(GNU|Clang|MSVC|Borland|Embarcadero|Intel|TI|XL)"))
|
||||
add_library(zoom zoom.zzz)
|
||||
set_source_files_properties(zoom.zzz PROPERTIES LANGUAGE CXX)
|
||||
target_link_libraries(SetLang zoom)
|
||||
target_compile_definitions(SetLang PRIVATE WITH_ZOOM)
|
||||
endif()
|
||||
|
@@ -1,22 +1,10 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int foo();
|
||||
|
||||
#ifdef WITH_ZOOM
|
||||
int zoom();
|
||||
#endif
|
||||
|
||||
class A
|
||||
{
|
||||
public:
|
||||
A()
|
||||
{
|
||||
this->i = foo();
|
||||
#ifdef WITH_ZOOM
|
||||
i += zoom();
|
||||
i -= zoom();
|
||||
#endif
|
||||
}
|
||||
A() { this->i = foo(); }
|
||||
int i;
|
||||
};
|
||||
|
||||
|
@@ -1,7 +0,0 @@
|
||||
int zoom()
|
||||
{
|
||||
int r = 10;
|
||||
r++;
|
||||
int ret = r + 10;
|
||||
return ret;
|
||||
}
|
Reference in New Issue
Block a user