5
5
# - LIBCXX_LIBRARIES: libraries to link libc++ to.
6
6
7
7
include (CheckCXXCompilerFlag )
8
+ include (HandleFlags )
8
9
9
10
unset (add_flag_if_supported )
10
11
11
- # Mangle the name of a compiler flag into a valid CMake identifier.
12
- # Ex: --std=c++11 -> STD_EQ_CXX11
13
- macro (mangle_name str output )
14
- string (STRIP "${str} " strippedStr )
15
- string (REGEX REPLACE "^/" "" strippedStr "${strippedStr} " )
16
- string (REGEX REPLACE "^-+" "" strippedStr "${strippedStr} " )
17
- string (REGEX REPLACE "-+$" "" strippedStr "${strippedStr} " )
18
- string (REPLACE "-" "_" strippedStr "${strippedStr} " )
19
- string (REPLACE ":" "_COLON_" strippedStr "${strippedStr} " )
20
- string (REPLACE "=" "_EQ_" strippedStr "${strippedStr} " )
21
- string (REPLACE "+" "X" strippedStr "${strippedStr} " )
22
- string (TOUPPER "${strippedStr} " ${output} )
23
- endmacro ()
24
-
25
- # Remove a list of flags from all CMake variables that affect compile flags.
26
- # This can be used to remove unwanted flags specified on the command line
27
- # or added in other parts of LLVM's cmake configuration.
28
- macro (remove_flags )
29
- foreach (var ${ARGN} )
30
- string (REPLACE "${var} " "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} " )
31
- string (REPLACE "${var} " "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} " )
32
- string (REPLACE "${var} " "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} " )
33
- string (REPLACE "${var} " "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} " )
34
- string (REPLACE "${var} " "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
35
- string (REPLACE "${var} " "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS} " )
36
- string (REPLACE "${var} " "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} " )
37
- string (REPLACE "${var} " "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} " )
38
- string (REPLACE "${var} " "" CMAKE_SHARED_MODULE_FLAGS "${CMAKE_SHARED_MODULE_FLAGS} " )
39
- remove_definitions (${var} )
40
- endforeach ()
41
- endmacro (remove_flags )
42
-
43
- macro (check_flag_supported flag )
44
- mangle_name ("${flag} " flagname )
45
- check_cxx_compiler_flag ("${flag} " "CXX_SUPPORTS_${flagname} _FLAG" )
46
- endmacro ()
47
-
48
- macro (append_flags DEST )
49
- foreach (value ${ARGN} )
50
- list (APPEND ${DEST} ${value} )
51
- list (APPEND ${DEST} ${value} )
52
- endforeach ()
53
- endmacro ()
54
-
55
- # If the specified 'condition' is true then append the specified list of flags to DEST
56
- macro (append_flags_if condition DEST )
57
- if (${condition} )
58
- list (APPEND ${DEST} ${ARGN} )
59
- endif ()
60
- endmacro ()
61
-
62
- # Add each flag in the list specified by DEST if that flag is supported by the current compiler.
63
- macro (append_flags_if_supported DEST )
64
- foreach (flag ${ARGN} )
65
- mangle_name ("${flag} " flagname )
66
- check_cxx_compiler_flag ("${flag} " "CXX_SUPPORTS_${flagname} _FLAG" )
67
- append_flags_if (CXX_SUPPORTS_${flagname}_FLAG ${DEST} ${flag} )
68
- endforeach ()
69
- endmacro ()
70
-
71
- # Add a macro definition if condition is true.
72
- macro (define_if condition def )
73
- if (${condition} )
74
- add_definitions (${def} )
75
- endif ()
76
- endmacro ()
77
-
78
- # Add a macro definition if condition is not true.
79
- macro (define_if_not condition def )
80
- if (NOT ${condition} )
81
- add_definitions (${def} )
82
- endif ()
83
- endmacro ()
84
-
85
- # Add a macro definition to the __config_site file if the specified condition
86
- # is 'true'. Note that '-D${def}' is not added. Instead it is expected that
87
- # the build include the '__config_site' header.
88
- macro (config_define_if condition def )
89
- if (${condition} )
90
- set (${def} ON )
91
- endif ()
92
- endmacro ()
93
-
94
- macro (config_define_if_not condition def )
95
- if (NOT ${condition} )
96
- set (${def} ON )
97
- endif ()
98
- endmacro ()
99
-
100
- macro (config_define value def )
101
- set (${def} ${value} )
102
- endmacro ()
103
-
104
12
# Add a list of flags to all of 'CMAKE_CXX_FLAGS', 'CMAKE_C_FLAGS',
105
13
# 'LIBCXX_COMPILE_FLAGS' and 'LIBCXX_LINK_FLAGS'.
106
14
macro (add_target_flags )
@@ -224,11 +132,6 @@ macro(add_library_flags_if condition)
224
132
endif ()
225
133
endmacro ()
226
134
227
- # Turn a comma separated CMake list into a space separated string.
228
- macro (split_list listname )
229
- string (REPLACE ";" " " ${listname} "${${listname} }" )
230
- endmacro ()
231
-
232
135
# For each specified flag, add that link flag to the provided target.
233
136
# The flags are added with the given visibility, i.e. PUBLIC|PRIVATE|INTERFACE.
234
137
function (target_add_link_flags_if_supported target visibility )
@@ -240,15 +143,3 @@ function(target_add_link_flags_if_supported target visibility)
240
143
endif ()
241
144
endforeach ()
242
145
endfunction ()
243
-
244
- # For each specified flag, add that compile flag to the provided target.
245
- # The flags are added with the given visibility, i.e. PUBLIC|PRIVATE|INTERFACE.
246
- function (target_add_compile_flags_if_supported target visibility )
247
- foreach (flag ${ARGN} )
248
- mangle_name ("${flag} " flagname )
249
- check_cxx_compiler_flag ("${flag} " "CXX_SUPPORTS_${flagname} _FLAG" )
250
- if (CXX_SUPPORTS_${flagname}_FLAG )
251
- target_compile_options (${target} ${visibility} ${flag} )
252
- endif ()
253
- endforeach ()
254
- endfunction ()
0 commit comments