blob: fc1da85452759d268866fc4f985fad1f81c10c69 [file] [log] [blame]
Alexey Samsonov163ab9d2013-01-18 16:05:21 +00001# Because compiler-rt spends a lot of time setting up custom compile flags,
2# define a handy helper function for it. The compile flags setting in CMake
3# has serious issues that make its syntax challenging at best.
4function(set_target_compile_flags target)
5 foreach(arg ${ARGN})
6 set(argstring "${argstring} ${arg}")
7 endforeach()
8 set_property(TARGET ${target} PROPERTY COMPILE_FLAGS "${argstring}")
9endfunction()
10
11function(set_target_link_flags target)
12 foreach(arg ${ARGN})
13 set(argstring "${argstring} ${arg}")
14 endforeach()
15 set_property(TARGET ${target} PROPERTY LINK_FLAGS "${argstring}")
16endfunction()
17
Alexey Samsonov5cb78602013-02-08 07:39:25 +000018# Check if a given flag is present in a space-separated flag_string.
19# Store the result in out_var.
20function(find_flag_in_string flag_string flag out_var)
21 string(REPLACE " " ";" flag_list ${flag_string})
22 list(FIND flag_list ${flag} flag_pos)
23 if(NOT flag_pos EQUAL -1)
24 set(${out_var} TRUE PARENT_SCOPE)
25 else()
26 set(${out_var} FALSE PARENT_SCOPE)
27 endif()
28endfunction()
Peter Collingbournecbdea322013-10-25 23:03:34 +000029
30# Set the variable var_PYBOOL to True if var holds a true-ish string,
31# otherwise set it to False.
32macro(pythonize_bool var)
33 if (${var})
34 set(${var}_PYBOOL True)
35 else()
36 set(${var}_PYBOOL False)
37 endif()
38endmacro()
Alexey Samsonovb73db722014-02-18 07:52:40 +000039
40macro(append_if list condition var)
41 if (${condition})
42 list(APPEND ${list} ${var})
43 endif()
44endmacro()
45
46macro(append_no_rtti_flag list)
47 append_if(${list} COMPILER_RT_HAS_FNO_RTTI_FLAG -fno-rtti)
48 append_if(${list} COMPILER_RT_HAS_GR_FLAG /GR-)
49endmacro()