mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 05:10:10 -05:00
LCC: Add dedicated support for MCST LCC compiler
Divert LCC compiler as a new one, instead of treating it as GNU. Since old times, Elbrus C/C++/Fortran Compiler (LCC) by MCST has been passing checks for GNU compilers, so it has been identified as GNU. Now, with intent of seriously upstreaming its support, it has been added as a separate LCC compiler, and its version displays not a supported GCC version, but LCC version itself (e.g. LCC 1.25.19 instead of GNU 7.3.0). This commit adds its support for detection, and also converts basically every check like 'is this compiler GNU?' to 'is this compiler GNU or LCC?'. The only places where this check is untouched, is where it regards other platforms where LCC is unavailable (primarily non-Linux), and where it REALLY differs from GNU compiler. Note: this transition may break software that are already ported to Elbrus, but hardly relies that LCC will be detected as GNU; still such software is not known.
This commit is contained in:
@@ -9,7 +9,7 @@ set(SRCS)
|
||||
# and also generate assembler files from C:
|
||||
if("${CMAKE_GENERATOR}" MATCHES "Makefile|Xcode|Ninja" AND
|
||||
NOT CMAKE_OSX_ARCHITECTURES MATCHES ";")
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang|HP|SunPro|XL)$") OR (CMAKE_C_COMPILER_ID MATCHES "Intel" AND UNIX)
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "^(GNU|LCC|Clang|AppleClang|HP|SunPro|XL)$") OR (CMAKE_C_COMPILER_ID MATCHES "Intel" AND UNIX)
|
||||
AND NOT (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC"))
|
||||
set(C_FLAGS "${CMAKE_C_FLAGS}")
|
||||
separate_arguments(C_FLAGS)
|
||||
|
||||
@@ -6,7 +6,7 @@ add_compile_options(-DTEST_OPTION)
|
||||
|
||||
add_executable(add_compile_options main.cpp)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
|
||||
target_compile_definitions(add_compile_options
|
||||
PRIVATE
|
||||
"DO_GNU_TESTS"
|
||||
|
||||
@@ -7,14 +7,14 @@ add_executable(target_compile_options
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
|
||||
)
|
||||
target_compile_options(target_compile_options
|
||||
PRIVATE $<$<CXX_COMPILER_ID:AppleClang,Clang,GNU>:-DMY_PRIVATE_DEFINE>
|
||||
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-DMY_PUBLIC_DEFINE>
|
||||
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,Clang,AppleClang>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU>:-DMY_INTERFACE_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
|
||||
PRIVATE $<$<CXX_COMPILER_ID:AppleClang,Clang,GNU,LCC>:-DMY_PRIVATE_DEFINE>
|
||||
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC>:-DMY_PUBLIC_DEFINE>
|
||||
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC,Clang,AppleClang>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC>:-DMY_INTERFACE_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
|
||||
)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
|
||||
target_compile_definitions(target_compile_options
|
||||
PRIVATE
|
||||
"DO_GNU_TESTS"
|
||||
@@ -47,10 +47,10 @@ if(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
endif()
|
||||
|
||||
target_compile_options(consumer
|
||||
PRIVATE $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
|
||||
PRIVATE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
|
||||
)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
|
||||
target_compile_definitions(consumer
|
||||
PRIVATE
|
||||
"DO_GNU_TESTS"
|
||||
|
||||
@@ -25,7 +25,7 @@ target_link_libraries(staticlib1 LINK_PUBLIC staticlib2)
|
||||
|
||||
# Try adding a private link item to be propagated out of a static lib.
|
||||
set(private_link "")
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES GNU OR CMAKE_CXX_COMPILER_ID MATCHES Clang)
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES GNU OR CMAKE_CXX_COMPILER_ID MATCHES Clang OR CMAKE_CXX_COMPILER_ID MATCHES LCC)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
set(private_link "-Wl,-V")
|
||||
else()
|
||||
|
||||
@@ -531,8 +531,8 @@ if(BUILD_TESTING)
|
||||
if (NOT CMAKE_GENERATOR STREQUAL "Xcode")
|
||||
ADD_TEST_MACRO(SourceFileIncludeDirProperty SourceFileIncludeDirProperty)
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU
|
||||
AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "LCC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
|
||||
AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7))
|
||||
set(runCxxDialectTest 1)
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL Clang
|
||||
@@ -670,7 +670,7 @@ if(BUILD_TESTING)
|
||||
|
||||
ADD_TEST_MACRO(Module.WriteCompilerDetectionHeader WriteCompilerDetectionHeader)
|
||||
|
||||
if (APPLE OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if (APPLE OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "LCC")
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-fPIE run_pic_test)
|
||||
else()
|
||||
@@ -687,9 +687,10 @@ if(BUILD_TESTING)
|
||||
ADD_TEST_MACRO(PositionIndependentTargets PositionIndependentTargets)
|
||||
endif()
|
||||
|
||||
if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "LCC" OR
|
||||
((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND
|
||||
(NOT "${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 4.2) AND
|
||||
(CMAKE_SYSTEM_NAME MATCHES "Linux"))
|
||||
(CMAKE_SYSTEM_NAME MATCHES "Linux")))
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(
|
||||
@@ -2004,7 +2005,7 @@ if(BUILD_TESTING)
|
||||
set_tests_properties ( linkorder2 PROPERTIES DEPENDS linkorder1)
|
||||
|
||||
# Test static linking on toolchains known to support it.
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU"
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "LCC")
|
||||
AND NOT APPLE AND NOT WIN32 AND NOT CYGWIN
|
||||
AND EXISTS "/usr/lib/libm.a")
|
||||
add_test(LinkStatic ${CMAKE_CTEST_COMMAND}
|
||||
@@ -3657,6 +3658,7 @@ if(BUILD_TESTING)
|
||||
if(CMAKE_GENERATOR MATCHES "^((Unix|MSYS) Makefiles|Ninja)$" AND
|
||||
((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.4)
|
||||
OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
OR (CMAKE_CXX_COMPILER_ID STREQUAL "LCC")
|
||||
OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")))
|
||||
add_test(IncludeDirectoriesCPATH ${CMAKE_CTEST_COMMAND}
|
||||
--build-and-test
|
||||
|
||||
@@ -57,7 +57,7 @@ else()
|
||||
message("Unhandled Platform")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC|Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
check_cxx_compiler_flag("-x c++" HAVE_X_CXX)
|
||||
if(NOT HAVE_X_CXX)
|
||||
message(FATAL_ERROR "${CMAKE_CXX_COMPILER_ID} compiler flag '-x c++' check failed")
|
||||
|
||||
@@ -11,8 +11,11 @@ class initializer_list
|
||||
const _E* __begin_;
|
||||
size_t __size_;
|
||||
|
||||
#ifdef __INTEL_COMPILER
|
||||
// The Intel compiler internally asserts the constructor overloads, so
|
||||
#if defined(__INTEL_COMPILER) || \
|
||||
(defined(__LCC__) && \
|
||||
(defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)))
|
||||
// Compilers based on EDG, such as Intel compiler and MCST LCC,
|
||||
// internally assert the constructor overloads, so
|
||||
// reproduce the constructor used in its <initializer_list> header.
|
||||
initializer_list(const _E*, size_t) {}
|
||||
#else
|
||||
|
||||
@@ -30,8 +30,8 @@ endif()
|
||||
set_property(TARGET CompileOptions PROPERTY COMPILE_OPTIONS
|
||||
"-DTEST_DEFINE"
|
||||
"-DNEEDS_ESCAPE=\"E$CAPE\""
|
||||
"$<$<CXX_COMPILER_ID:GNU>:-DTEST_DEFINE_GNU>"
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-DTEST_DEFINE_CXX_AND_GNU>"
|
||||
"$<$<CXX_COMPILER_ID:GNU,LCC>:-DTEST_DEFINE_GNU>"
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC>:-DTEST_DEFINE_CXX_AND_GNU>"
|
||||
"SHELL:" # produces no options
|
||||
${c_tests}
|
||||
${cxx_tests}
|
||||
@@ -49,15 +49,15 @@ else()
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|Borland|Embarcadero" AND NOT "${CMAKE_GENERATOR}" MATCHES "NMake Makefiles")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC|Clang|Borland|Embarcadero" AND NOT "${CMAKE_GENERATOR}" MATCHES "NMake Makefiles")
|
||||
set_property(TARGET CompileOptions APPEND PROPERTY COMPILE_OPTIONS
|
||||
"-DTEST_OCTOTHORPE=\"#\""
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|AppleClang|MSVC)$")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|LCC|AppleClang|MSVC)$")
|
||||
target_compile_definitions(CompileOptions PRIVATE "DO_FLAG_TESTS")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|AppleClang)$")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|LCC|AppleClang)$")
|
||||
string(APPEND CMAKE_CXX_FLAGS " -w")
|
||||
endif()
|
||||
string(APPEND CMAKE_CXX_FLAGS " -DFLAG_A=1 -DFLAG_B=1")
|
||||
@@ -79,7 +79,7 @@ endif()
|
||||
|
||||
target_link_libraries(CompileOptions testlib)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
|
||||
target_compile_definitions(CompileOptions
|
||||
PRIVATE
|
||||
"DO_GNU_TESTS"
|
||||
|
||||
@@ -286,6 +286,7 @@ set_property(TARGET testSharedLibRequired
|
||||
set_property(TARGET testSharedLibRequired APPEND PROPERTY
|
||||
INTERFACE_COMPILE_OPTIONS
|
||||
$<$<CXX_COMPILER_ID:GNU>:-DCUSTOM_COMPILE_OPTION>
|
||||
$<$<CXX_COMPILER_ID:LCC>:-DCUSTOM_COMPILE_OPTION>
|
||||
)
|
||||
|
||||
add_library(testSharedLibRequiredUser SHARED testSharedLibRequiredUser.cpp)
|
||||
|
||||
@@ -325,14 +325,14 @@ target_compile_definitions(deps_shared_iface
|
||||
$<$<STREQUAL:$<TARGET_PROPERTY:CUSTOM_STRING>,testcontent>:CUSTOM_STRING_IS_MATCH>
|
||||
)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "LCC")
|
||||
target_compile_definitions(deps_shared_iface
|
||||
PRIVATE
|
||||
"DO_GNU_TESTS"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (APPLE OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if (APPLE OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "LCC")
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-fPIE run_pic_test)
|
||||
else()
|
||||
@@ -365,7 +365,7 @@ endif()
|
||||
|
||||
add_executable(deps_shared_iface2 deps_shared_iface.cpp)
|
||||
target_link_libraries(deps_shared_iface2 bld_testSharedLibDepends bld_subdirlib)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "LCC")
|
||||
target_compile_definitions(deps_shared_iface2
|
||||
PRIVATE
|
||||
"DO_GNU_TESTS"
|
||||
@@ -413,6 +413,7 @@ endforeach()
|
||||
unset(_configs)
|
||||
|
||||
if (((CMAKE_C_COMPILER_ID STREQUAL GNU AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.4)
|
||||
OR CMAKE_C_COMPILER_ID MATCHES "LCC"
|
||||
OR (CMAKE_C_COMPILER_ID STREQUAL Clang AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC"))
|
||||
AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "Ninja"))
|
||||
include(CheckCXXCompilerFlag)
|
||||
|
||||
@@ -14,7 +14,7 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(XL|VisualAge)$")
|
||||
# We do not implement SHARED Fortran libs on AIX yet!
|
||||
# Workaround: Set LINKER_LANGUAGE to C, which uses 'xlc' and Fortran implicits.
|
||||
set(_SHARED STATIC)
|
||||
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
|
||||
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "GNU|LCC")
|
||||
# g77 2.96 does not support shared libs on Itanium because g2c is not -fPIC
|
||||
execute_process(COMMAND ${CMAKE_Fortran_COMPILER} --version
|
||||
OUTPUT_VARIABLE output ERROR_VARIABLE output)
|
||||
@@ -26,7 +26,7 @@ endif()
|
||||
# Pick a module .def file with the properly mangled symbol name.
|
||||
set(world_def "")
|
||||
if(WIN32 AND NOT CYGWIN)
|
||||
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
|
||||
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU|LCC")
|
||||
set(world_def world_gnu.def)
|
||||
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel" OR
|
||||
CMAKE_GENERATOR MATCHES "Visual Studio") # Intel plugin
|
||||
|
||||
@@ -4,6 +4,7 @@ project(IncludeDirectories)
|
||||
if (((CMAKE_C_COMPILER_ID STREQUAL GNU AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.4)
|
||||
OR (CMAKE_C_COMPILER_ID STREQUAL Clang AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL AppleClang
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL LCC
|
||||
OR ("x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC" AND
|
||||
CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "19.29.30036.3" AND
|
||||
NOT CMAKE_GENERATOR MATCHES "Visual Studio")) # No support for VS generators yet.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
cmake_minimum_required(VERSION 2.8.4.20110303 FATAL_ERROR)
|
||||
project(LinkStatic C)
|
||||
|
||||
if(NOT CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||
message(FATAL_ERROR "This test works only with the GNU compiler!")
|
||||
if(NOT CMAKE_C_COMPILER_ID MATCHES "GNU|LCC")
|
||||
message(FATAL_ERROR "This test works only with the GNU or LCC compiler!")
|
||||
endif()
|
||||
|
||||
find_library(MATH_LIBRARY NAMES libm.a)
|
||||
|
||||
@@ -52,7 +52,7 @@ endmacro()
|
||||
# detailed features tables, not just meta-features
|
||||
|
||||
if (CMAKE_C_COMPILE_FEATURES)
|
||||
if (NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
if (NOT CMAKE_C_COMPILER_ID MATCHES "^(LCC|Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
set(C_expected_features ${CMAKE_C_COMPILE_FEATURES})
|
||||
list(FILTER C_expected_features EXCLUDE REGEX "^c_std_[0-9][0-9]")
|
||||
endif()
|
||||
@@ -95,7 +95,7 @@ if (C_expected_features)
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX_COMPILE_FEATURES)
|
||||
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "^(LCC|Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
set(CXX_expected_features ${CMAKE_CXX_COMPILE_FEATURES})
|
||||
list(FILTER CXX_expected_features EXCLUDE REGEX "^cxx_std_[0-9][0-9]")
|
||||
endif()
|
||||
|
||||
@@ -159,6 +159,7 @@ endif()
|
||||
|
||||
if ((RunCMake_GENERATOR STREQUAL "Unix Makefiles"
|
||||
AND (CMAKE_C_COMPILER_ID STREQUAL "GNU"
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL "LCC"
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL "Clang"
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang"))
|
||||
OR (RunCMake_GENERATOR STREQUAL "NMake Makefiles"
|
||||
|
||||
@@ -12,6 +12,6 @@ if(NOT RunCMake_GENERATOR MATCHES "Visual Studio|Xcode" AND
|
||||
run_CMP0119(WARN)
|
||||
run_CMP0119(OLD)
|
||||
endif()
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "(GNU|Clang|MSVC|Borland|Embarcadero|Intel|TI)"))
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "(GNU|LCC|Clang|MSVC|Borland|Embarcadero|Intel|TI)"))
|
||||
run_CMP0119(NEW)
|
||||
endif()
|
||||
|
||||
@@ -256,7 +256,7 @@ endif()
|
||||
add_RunCMake_test(ArtifactOutputDirs)
|
||||
|
||||
if(NOT DEFINED CMake_TEST_BuildDepends_GNU_AS
|
||||
AND CMAKE_C_COMPILER_ID STREQUAL "GNU"
|
||||
AND (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "LCC")
|
||||
AND CMAKE_GENERATOR MATCHES "^Ninja"
|
||||
)
|
||||
execute_process(COMMAND "${CMAKE_C_COMPILER}" -print-prog-name=as
|
||||
@@ -682,7 +682,7 @@ set_property(TEST RunCMake.CheckCompilerFlag
|
||||
add_RunCMake_test(CheckModules)
|
||||
add_RunCMake_test(CheckIPOSupported)
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "(Linux|Darwin)"
|
||||
AND (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU" OR CMAKE_Fortran_COMPILER_ID MATCHES "GNU"))
|
||||
AND (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU|LCC" OR CMAKE_Fortran_COMPILER_ID MATCHES "GNU|LCC"))
|
||||
add_RunCMake_test(CheckLinkerFlag -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}
|
||||
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID}
|
||||
-DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH 1)
|
||||
|
||||
# Some compilers do not add build id to binaries by default.
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(IntelLLVM|PGI|NVHPC)$")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(LCC|IntelLLVM|PGI|NVHPC)$")
|
||||
string(APPEND CMAKE_EXE_LINKER_FLAGS "-Wl,--build-id")
|
||||
string(APPEND CMAKE_SHARED_LINKER_FLAGS "-Wl,--build-id")
|
||||
endif()
|
||||
|
||||
@@ -9,14 +9,14 @@ if(SHOULD_FAIL)
|
||||
message(SEND_ERROR "invalid C compile flag didn't fail.")
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang" AND NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU|LCC|Clang" AND NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
check_compiler_flag(C "-x c" SHOULD_WORK)
|
||||
if(NOT SHOULD_WORK)
|
||||
message(SEND_ERROR "${CMAKE_C_COMPILER_ID} compiler flag '-x c' check failed")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU") # LCC C compiler silently ignore -frtti instead of failing, so skip it here.
|
||||
check_compiler_flag(C "-frtti" SHOULD_FAIL_RTTI)
|
||||
if(SHOULD_FAIL_RTTI)
|
||||
message(SEND_ERROR "${CMAKE_C_COMPILER_ID} compiler flag '-frtti' check passed but should have failed")
|
||||
|
||||
@@ -9,7 +9,7 @@ if(SHOULD_FAIL)
|
||||
message(SEND_ERROR "invalid CXX compile flag didn't fail.")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC|Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
check_compiler_flag(CXX "-x c++" SHOULD_WORK)
|
||||
if(NOT SHOULD_WORK)
|
||||
message(SEND_ERROR "${CMAKE_CXX_COMPILER_ID} compiler flag '-x c++' check failed")
|
||||
|
||||
@@ -8,7 +8,7 @@ if(SHOULD_FAIL)
|
||||
message(SEND_ERROR "invalid Fortran compile flag didn't fail.")
|
||||
endif()
|
||||
|
||||
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
|
||||
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU|LCC")
|
||||
check_compiler_flag(Fortran "-Wall" SHOULD_WORK)
|
||||
if(NOT SHOULD_WORK)
|
||||
message(SEND_ERROR "${CMAKE_Fortran_COMPILER_ID} compiler flag '-Wall' check failed")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
include(RunCMake)
|
||||
|
||||
if (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU")
|
||||
if (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU|LCC")
|
||||
run_cmake(CheckCLinkerFlag)
|
||||
run_cmake(CheckCXXLinkerFlag)
|
||||
if (APPLE)
|
||||
@@ -9,7 +9,7 @@ if (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
|
||||
if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU|LCC")
|
||||
run_cmake(CheckFortranLinkerFlag)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -731,7 +731,7 @@ def gen_check_targets(c, g, inSource):
|
||||
read_codemodel_json_data("targets/generated_exe.json"),
|
||||
]
|
||||
|
||||
if cxx_compiler_id in ['Clang', 'AppleClang', 'GNU', 'Intel', 'IntelLLVM', 'MSVC', 'Embarcadero'] and g["name"] != "Xcode":
|
||||
if cxx_compiler_id in ['Clang', 'AppleClang', 'LCC', 'GNU', 'Intel', 'IntelLLVM', 'MSVC', 'Embarcadero'] and g["name"] != "Xcode":
|
||||
for e in expected:
|
||||
if e["name"] == "cxx_exe":
|
||||
if matches(g["name"], "^(Visual Studio |Ninja Multi-Config)"):
|
||||
|
||||
@@ -26,6 +26,7 @@ if (PIE_SUPPORTED OR NO_PIE_SUPPORTED)
|
||||
|
||||
if ((READELF OR OTOOL) AND
|
||||
(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
|
||||
OR CMAKE_CXX_COMPILER_ID STREQUAL "LCC"
|
||||
OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
|
||||
OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
|
||||
macro(run_cmake_target test subtest)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
if (NOT CMAKE_C_COMPILER_ID MATCHES "GNU|Intel" OR
|
||||
if (NOT CMAKE_C_COMPILER_ID MATCHES "GNU|LCC|Intel" OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "Intel" AND CMAKE_HOST_WIN32))
|
||||
return()
|
||||
endif()
|
||||
|
||||
@@ -2,7 +2,7 @@ include(RunCMake)
|
||||
|
||||
run_cmake(empty_keyword_args)
|
||||
|
||||
if (CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
|
||||
if (CMAKE_C_COMPILER_ID MATCHES "GNU|LCC|Clang")
|
||||
macro(run_cmake_target test subtest target)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
|
||||
set(RunCMake_TEST_OUTPUT_MERGE 1)
|
||||
@@ -28,7 +28,7 @@ function(run_Order)
|
||||
run_cmake_command(Order-build ${CMAKE_COMMAND} --build . --verbose --config Custom)
|
||||
endfunction()
|
||||
if(RunCMake_GENERATOR MATCHES "Ninja|Make" AND
|
||||
CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$" AND
|
||||
CMAKE_C_COMPILER_ID MATCHES "^(GNU|LCC|Clang|AppleClang)$" AND
|
||||
NOT CMAKE_C_SIMULATE_ID STREQUAL "MSVC")
|
||||
run_Order()
|
||||
endif()
|
||||
|
||||
@@ -26,7 +26,7 @@ run_cmake(TargetTypeInvalid)
|
||||
run_cmake(TargetTypeStatic)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "^(Linux|Darwin|Windows)$" AND
|
||||
CMAKE_C_COMPILER_ID MATCHES "^(MSVC|GNU|Clang|AppleClang)$")
|
||||
CMAKE_C_COMPILER_ID MATCHES "^(MSVC|GNU|LCC|Clang|AppleClang)$")
|
||||
set (RunCMake_TEST_OPTIONS -DRunCMake_C_COMPILER_ID=${CMAKE_C_COMPILER_ID})
|
||||
run_cmake(LinkOptions)
|
||||
unset (RunCMake_TEST_OPTIONS)
|
||||
@@ -60,10 +60,10 @@ if(CMake_TEST_ISPC)
|
||||
endif()
|
||||
run_cmake(ISPCDuplicateTarget${ninja})
|
||||
endif()
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.4)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU|LCC" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.4)
|
||||
run_cmake(CStandardGNU)
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4)
|
||||
run_cmake(CxxStandardGNU)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ include(RunCMake)
|
||||
run_cmake(BadLinkLibraries)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "^(Linux|Darwin|Windows)$" AND
|
||||
CMAKE_C_COMPILER_ID MATCHES "^(MSVC|GNU|Clang|AppleClang)$")
|
||||
CMAKE_C_COMPILER_ID MATCHES "^(MSVC|GNU|LCC|Clang|AppleClang)$")
|
||||
set (RunCMake_TEST_OPTIONS -DRunCMake_C_COMPILER_ID=${CMAKE_C_COMPILER_ID})
|
||||
run_cmake(LinkOptions)
|
||||
unset (RunCMake_TEST_OPTIONS)
|
||||
|
||||
@@ -20,7 +20,7 @@ if(CMAKE_GENERATOR MATCHES "^Visual Studio" AND "x${CMAKE_C_COMPILER_ID}" STREQU
|
||||
set_property(TARGET stay PROPERTY COMPILE_OPTIONS "-TP")
|
||||
endif()
|
||||
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "(GNU|Clang|MSVC|Borland|Embarcadero|Intel|TI|XL)"))
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "(GNU|LCC|Clang|MSVC|Borland|Embarcadero|Intel|TI|XL)"))
|
||||
cmake_policy(SET CMP0119 NEW)
|
||||
add_library(zoom zoom.zzz)
|
||||
set_source_files_properties(zoom.zzz PROPERTIES LANGUAGE CXX)
|
||||
|
||||
@@ -321,7 +321,7 @@ if(DEFINED CXX_BOGUS_FLAG)
|
||||
message(SEND_ERROR "CHECK_CXX_COMPILER_FLAG shouldn't construct CXX_BOGUS_FLAG as a normal variable")
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "LCC")
|
||||
unset(C_STRICT_PROTOTYPES CACHE)
|
||||
CHECK_C_COMPILER_FLAG("-Werror;-Wstrict-prototypes" C_STRICT_PROTOTYPES)
|
||||
TEST_ASSERT(C_STRICT_PROTOTYPES "CHECK_C_COMPILER_FLAG failed -Werror -Wstrict-prototypes")
|
||||
|
||||
Reference in New Issue
Block a user