mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
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.
56 lines
2.2 KiB
CMake
56 lines
2.2 KiB
CMake
set(CMAKE_BUILD_WITH_INSTALL_RPATH 1)
|
|
|
|
# Some compilers do not add build id to binaries by default.
|
|
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()
|
|
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
|
|
# for rpm packages execute flag must be set for shared libs if debuginfo
|
|
# packages are generated
|
|
set(CPACK_RPM_INSTALL_WITH_EXEC TRUE)
|
|
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_lib.hpp"
|
|
"int test_lib();\n")
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_lib.cpp"
|
|
"#include \"test_lib.hpp\"\nint test_lib() {return 0;}\n")
|
|
add_library(test_lib SHARED "${CMAKE_CURRENT_BINARY_DIR}/test_lib.cpp")
|
|
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
|
|
"#include \"test_lib.hpp\"\nint main() {return test_lib();}\n")
|
|
add_executable(test_prog "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
|
|
target_link_libraries(test_prog test_lib)
|
|
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/test_lib.hpp" DESTINATION include COMPONENT appheaders)
|
|
install(TARGETS test_prog DESTINATION foo COMPONENT applications)
|
|
install(FILES CMakeLists.txt DESTINATION bar COMPONENT headers)
|
|
install(TARGETS test_lib DESTINATION bas COMPONENT libs)
|
|
|
|
set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON)
|
|
|
|
set(CPACK_RPM_APPLICATIONS_FILE_NAME "RPM-DEFAULT")
|
|
set(CPACK_RPM_APPLICATIONS_DEBUGINFO_PACKAGE ON)
|
|
set(CPACK_DEBIAN_APPLICATIONS_FILE_NAME "DEB-DEFAULT")
|
|
set(CPACK_DEBIAN_APPLICATIONS_DEBUGINFO_PACKAGE ON)
|
|
|
|
# test that components with debuginfo enabled still honor
|
|
# CPACK_PACKAGE_FILE_NAME setting
|
|
set(CPACK_RPM_PACKAGE_NAME "Debuginfo")
|
|
set(CPACK_PACKAGE_FILE_NAME "TestDinfo-pkg")
|
|
set(CPACK_RPM_LIBS_DEBUGINFO_PACKAGE ON)
|
|
set(CPACK_DEBIAN_PACKAGE_NAME "Debuginfo")
|
|
set(CPACK_DEBIAN_LIBS_DEBUGINFO_PACKAGE ON)
|
|
|
|
# Test that a component with debug info requested but without any debug info produces none
|
|
set(CPACK_RPM_APPHEADERS_DEBUGINFO_PACKAGE ON)
|
|
set(CPACK_DEBIAN_APPHEADERS_DEBUGINFO_PACKAGE ON)
|
|
|
|
# test debuginfo package rename
|
|
set(CPACK_RPM_DEBUGINFO_FILE_NAME
|
|
"@cpack_component@-DebugInfoPackage.rpm")
|
|
set(CPACK_RPM_APPLICATIONS_DEBUGINFO_FILE_NAME "RPM-DEFAULT")
|
|
|
|
set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/src")
|