diff options
Diffstat (limited to 'project/cmake/modules/LDGOLD.cmake')
| -rw-r--r-- | project/cmake/modules/LDGOLD.cmake | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/project/cmake/modules/LDGOLD.cmake b/project/cmake/modules/LDGOLD.cmake new file mode 100644 index 0000000..ad19c6b --- /dev/null +++ b/project/cmake/modules/LDGOLD.cmake | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | option(ENABLE_LDGOLD "Use GNU gold linker" ON) | ||
| 2 | |||
| 3 | set(LDGOLD_FOUND FALSE) | ||
| 4 | if(ENABLE_LDGOLD) | ||
| 5 | execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) | ||
| 6 | if(LD_VERSION MATCHES "GNU gold") | ||
| 7 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold") | ||
| 8 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold") | ||
| 9 | set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold") | ||
| 10 | set(LDGOLD_FOUND TRUE) | ||
| 11 | message(STATUS "Linker: GNU gold") | ||
| 12 | else() | ||
| 13 | message(WARNING "GNU gold linker is not available, falling back to default system linker") | ||
| 14 | endif() | ||
| 15 | else() | ||
| 16 | message(STATUS "Linker: Default system linker") | ||
| 17 | endif() | ||
| 18 | |||
| 19 | set(DEFAULT_ENABLE_DEBUGFISSION FALSE) | ||
| 20 | if(CMAKE_BUILD_TYPE STREQUAL Debug OR | ||
| 21 | CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo AND | ||
| 22 | LDGOLD_FOUND) | ||
| 23 | set(DEFAULT_ENABLE_DEBUGFISSION TRUE) | ||
| 24 | endif() | ||
| 25 | |||
| 26 | include(CMakeDependentOption) | ||
| 27 | cmake_dependent_option(ENABLE_DEBUGFISSION "Enable Debug Fission support" ON | ||
| 28 | "DEFAULT_ENABLE_DEBUGFISSION" OFF) | ||
| 29 | |||
| 30 | set(DEBUGFISSION_FOUND FALSE) | ||
| 31 | if(ENABLE_DEBUGFISSION) | ||
| 32 | include(TestCXXAcceptsFlag) | ||
| 33 | check_cxx_accepts_flag(-gsplit-dwarf CXX_ACCEPTS_GSPLIT_DWARF) | ||
| 34 | if(CXX_ACCEPTS_GSPLIT_DWARF) | ||
| 35 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -gsplit-dwarf") | ||
| 36 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -gsplit-dwarf") | ||
| 37 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gdb-index") | ||
| 38 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gdb-index") | ||
| 39 | set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gdb-index") | ||
| 40 | set(DEBUGFISSION_FOUND TRUE) | ||
| 41 | message(STATUS "Debug Fission enabled") | ||
| 42 | else() | ||
| 43 | message(WARNING "Debug Fission is not available") | ||
| 44 | endif() | ||
| 45 | endif() | ||
