| # Because compiler-rt spends a lot of time setting up custom compile flags, |
| # define a handy helper function for it. The compile flags setting in CMake |
| # has serious issues that make its syntax challenging at best. |
| function(set_target_compile_flags target) |
| set(argstring "") |
| foreach(arg ${ARGN}) |
| set(argstring "${argstring} ${arg}") |
| endforeach() |
| set_property(TARGET ${target} PROPERTY COMPILE_FLAGS "${argstring}") |
| endfunction() |
| |
| function(set_target_link_flags target) |
| set(argstring "") |
| foreach(arg ${ARGN}) |
| set(argstring "${argstring} ${arg}") |
| endforeach() |
| set_property(TARGET ${target} PROPERTY LINK_FLAGS "${argstring}") |
| endfunction() |
| |
| # Set the variable var_PYBOOL to True if var holds a true-ish string, |
| # otherwise set it to False. |
| macro(pythonize_bool var) |
| if (${var}) |
| set(${var}_PYBOOL True) |
| else() |
| set(${var}_PYBOOL False) |
| endif() |
| endmacro() |
| |
| # Appends value to all lists in ARGN, if the condition is true. |
| macro(append_list_if condition value) |
| if(${condition}) |
| foreach(list ${ARGN}) |
| list(APPEND ${list} ${value}) |
| endforeach() |
| endif() |
| endmacro() |
| |
| # Appends value to all strings in ARGN, if the condition is true. |
| macro(append_string_if condition value) |
| if(${condition}) |
| foreach(str ${ARGN}) |
| set(${str} "${${str}} ${value}") |
| endforeach() |
| endif() |
| endmacro() |
| |
| macro(append_no_rtti_flag list) |
| append_list_if(COMPILER_RT_HAS_FNO_RTTI_FLAG -fno-rtti ${list}) |
| append_list_if(COMPILER_RT_HAS_GR_FLAG /GR- ${list}) |
| endmacro() |
| |
| macro(append_have_file_definition filename varname list) |
| check_include_file("${filename}" "${varname}") |
| if (NOT ${varname}) |
| set("${varname}" 0) |
| endif() |
| list(APPEND ${list} "${varname}=${${varname}}") |
| endmacro() |
| |
| macro(list_union output input1 input2) |
| set(${output}) |
| foreach(it ${${input1}}) |
| list(FIND ${input2} ${it} index) |
| if( NOT (index EQUAL -1)) |
| list(APPEND ${output} ${it}) |
| endif() |
| endforeach() |
| endmacro() |