forked from gammu/gammu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMacroTuneCompiler.cmake
64 lines (59 loc) · 2.78 KB
/
MacroTuneCompiler.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Adds flag to compiler if it supports it
INCLUDE(CheckCSourceCompiles)
MACRO (X_CHECK_C_COMPILER_FLAG _FLAG _RESULT)
SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
CHECK_C_SOURCE_COMPILES("int main(void) { return 0;}" ${_RESULT})
SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
ENDMACRO (X_CHECK_C_COMPILER_FLAG)
macro (MACRO_TUNE_COMPILER _flag)
string (TOUPPER "${_flag}" FLAGNAME)
string (REPLACE " " "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "-" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "=" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "," "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "/" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "." "_" FLAGNAME "${FLAGNAME}")
set (FLAGNAME "COMPILER_HAS${FLAGNAME}")
x_check_c_compiler_flag("${_flag}" ${FLAGNAME})
if (${FLAGNAME})
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}")
endif (${FLAGNAME})
endmacro (MACRO_TUNE_COMPILER)
macro (MACRO_TUNE_LINKER _flag)
string (TOUPPER "${_flag}" FLAGNAME)
string (REPLACE " " "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "-" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "=" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "," "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "/" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "." "_" FLAGNAME "${FLAGNAME}")
set (FLAGNAME "LINKER_HAS${FLAGNAME}")
set (OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
set (CMAKE_REQUIRED_FLAGS "${_flag}")
x_check_c_compiler_flag("${_flag}" ${FLAGNAME})
set (CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}")
if (${FLAGNAME})
set (CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} ${_flag}")
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${_flag}")
endif (${FLAGNAME})
endmacro (MACRO_TUNE_LINKER)
macro (MACRO_TUNE_COMPILER_LINKER _flag)
string (TOUPPER "${_flag}" FLAGNAME)
string (REPLACE " " "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "-" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "=" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "," "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "/" "_" FLAGNAME "${FLAGNAME}")
string (REPLACE "." "_" FLAGNAME "${FLAGNAME}")
set (FLAGNAME "LINKER_HAS${FLAGNAME}")
set (OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
set (CMAKE_REQUIRED_FLAGS "${_flag}")
x_check_c_compiler_flag("${_flag}" ${FLAGNAME})
set (CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}")
if (${FLAGNAME})
set (CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} ${_flag}")
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${_flag}")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}")
endif (${FLAGNAME})
endmacro (MACRO_TUNE_COMPILER_LINKER)