]>
Commit | Line | Data |
---|---|---|
f22341db | 1 | get_filename_component(_currentDir "${CMAKE_CURRENT_LIST_FILE}" PATH) |
2 | include("${_currentDir}/CheckCCompilerFlag.cmake") | |
3 | include("${_currentDir}/CheckCXXCompilerFlag.cmake") | |
4 | macro(AddCompilerFlag _flag) | |
5 | string(REGEX REPLACE "[-+/:= ]" "_" _flag_esc "${_flag}") | |
6 | check_c_compiler_flag("${_flag}" check_c_compiler_flag_${_flag_esc}) | |
7 | check_cxx_compiler_flag("${_flag}" check_cxx_compiler_flag_${_flag_esc}) | |
8 | ||
9 | set(_c_flags "CMAKE_C_FLAGS") | |
10 | set(_cxx_flags "CMAKE_CXX_FLAGS") | |
11 | if(${ARGC} EQUAL 2) | |
12 | set(${ARGV1} "${check_cxx_compiler_flag_${_flag_esc}}") | |
13 | elseif(${ARGC} GREATER 2) | |
14 | set(state 0) | |
15 | unset(_c_flags) | |
16 | unset(_cxx_flags) | |
17 | foreach(_arg ${ARGN}) | |
18 | if(_arg STREQUAL "C_FLAGS") | |
19 | set(state 1) | |
20 | elseif(_arg STREQUAL "CXX_FLAGS") | |
21 | set(state 2) | |
22 | elseif(_arg STREQUAL "C_RESULT") | |
23 | set(state 3) | |
24 | elseif(_arg STREQUAL "CXX_RESULT") | |
25 | set(state 4) | |
26 | elseif(state EQUAL 1) | |
27 | set(_c_flags "${_arg}") | |
28 | elseif(state EQUAL 2) | |
29 | set(_cxx_flags "${_arg}") | |
30 | elseif(state EQUAL 3) | |
31 | set(${_arg} ${check_c_compiler_flag_${_flag_esc}}) | |
32 | elseif(state EQUAL 4) | |
33 | set(${_arg} ${check_cxx_compiler_flag_${_flag_esc}}) | |
34 | else() | |
35 | message(FATAL_ERROR "Syntax error for AddCompilerFlag") | |
36 | endif() | |
37 | endforeach() | |
38 | endif() | |
39 | ||
40 | if(check_c_compiler_flag_${_flag_esc} AND DEFINED _c_flags) | |
41 | set(${_c_flags} "${${_c_flags}} ${_flag}") | |
42 | endif() | |
43 | if(check_cxx_compiler_flag_${_flag_esc} AND DEFINED _cxx_flags) | |
44 | set(${_cxx_flags} "${${_cxx_flags}} ${_flag}") | |
45 | endif() | |
46 | endmacro(AddCompilerFlag) |