|
1 | 1 | macro(myproject_configure_linker project_name) |
2 | | - include(CheckCXXCompilerFlag) |
3 | | - |
4 | | - set(USER_LINKER_OPTION |
5 | | - "lld" |
| 2 | + set(myproject_USER_LINKER_OPTION |
| 3 | + "DEFAULT" |
6 | 4 | CACHE STRING "Linker to be used") |
7 | | - set(USER_LINKER_OPTION_VALUES "lld" "gold" "bfd" "mold") |
8 | | - set_property(CACHE USER_LINKER_OPTION PROPERTY STRINGS ${USER_LINKER_OPTION_VALUES}) |
| 5 | + set(myproject_USER_LINKER_OPTION_VALUES "DEFAULT" "SYSTEM" "LLD" "GOLD" "BFD" "MOLD" "SOLD" "APPLE_CLASSIC" "MSVC") |
| 6 | + set_property(CACHE myproject_USER_LINKER_OPTION PROPERTY STRINGS ${myproject_USER_LINKER_OPTION_VALUES}) |
9 | 7 | list( |
10 | 8 | FIND |
11 | | - USER_LINKER_OPTION_VALUES |
12 | | - ${USER_LINKER_OPTION} |
13 | | - USER_LINKER_OPTION_INDEX) |
| 9 | + myproject_USER_LINKER_OPTION_VALUES |
| 10 | + ${myproject_USER_LINKER_OPTION} |
| 11 | + myproject_USER_LINKER_OPTION_INDEX) |
14 | 12 |
|
15 | | - if(${USER_LINKER_OPTION_INDEX} EQUAL -1) |
| 13 | + if(${myproject_USER_LINKER_OPTION_INDEX} EQUAL -1) |
16 | 14 | message( |
17 | 15 | STATUS |
18 | | - "Using custom linker: '${USER_LINKER_OPTION}', explicitly supported entries are ${USER_LINKER_OPTION_VALUES}") |
19 | | - endif() |
20 | | - |
21 | | - if(NOT myproject_ENABLE_USER_LINKER) |
22 | | - return() |
| 16 | + "Using custom linker: '${myproject_USER_LINKER_OPTION}', explicitly supported entries are ${myproject_USER_LINKER_OPTION_VALUES}") |
23 | 17 | endif() |
24 | 18 |
|
25 | | - set(LINKER_FLAG "-fuse-ld=${USER_LINKER_OPTION}") |
26 | | - |
27 | | - check_cxx_compiler_flag(${LINKER_FLAG} CXX_SUPPORTS_USER_LINKER) |
28 | | - if(CXX_SUPPORTS_USER_LINKER) |
29 | | - target_compile_options(${project_name} INTERFACE ${LINKER_FLAG}) |
30 | | - endif() |
| 19 | + set_target_properties(${project_name} PROPERTIES LINKER_TYPE "${myproject_USER_LINKER_OPTION}") |
31 | 20 | endmacro() |
0 commit comments