Macros.cmake
3.83 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
macro(jrtplib_support_option DESCRIPTION OPTIONNAME DEFINENAME DEFAULTVALUE EMPTYVALUE)
option(${OPTIONNAME} ${DESCRIPTION} ${DEFAULTVALUE})
if (${OPTIONNAME})
set(${DEFINENAME} "#define ${DEFINENAME}")
else (${OPTIONNAME})
set(${DEFINENAME} "${EMPTYVALUE}")
endif (${OPTIONNAME})
endmacro(jrtplib_support_option)
macro(jrtplib_include_test INCFILE DEFINENAME EMPTYVALUE)
check_include_file_cxx(${INCFILE} jrtplib_include_test_${DEFINENAME})
if (jrtplib_include_test_${DEFINENAME})
set(${DEFINENAME} "#define ${DEFINENAME}")
else (jrtplib_include_test_${DEFINENAME})
set(${DEFINENAME} "${EMPTYVALUE}")
endif (jrtplib_include_test_${DEFINENAME})
endmacro(jrtplib_include_test)
macro (jrtplib_test_feature FILENAME DEFINENAME INVERT EMPTYVALUE EXTRADEFS)
if (NOT DEFINED ${FILENAME}_RESULT)
try_compile(${FILENAME}_RESULT "${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/tools/${FILENAME}.cpp"
OUTPUT_VARIABLE OUTVAR
COMPILE_DEFINITIONS "${EXTRADEFS}")
message(STATUS "Compiling ${FILENAME}.cpp")
set(BLA ${INVERT})
if (NOT BLA)
if (${FILENAME}_RESULT)
set(${DEFINENAME} "#define ${DEFINENAME}" CACHE INTERNAL "setting ${DEFINENAME} in rtpconfig.h")
message(STATUS "Compiling ${FILENAME}.cpp worked - setting ${DEFINENAME} in rtpconfig.h")
else (${FILENAME}_RESULT)
set(${DEFINENAME} "${EMPTYVALUE}" CACHE INTERNAL "")
message(STATUS "Compiling ${FILENAME}.cpp failed - no action necessary")
endif (${FILENAME}_RESULT)
else (NOT BLA)
if (NOT ${FILENAME}_RESULT)
set(${DEFINENAME} "#define ${DEFINENAME}" CACHE INTERNAL "setting ${DEFINENAME} in rtpconfig.h")
message(STATUS "Compiling ${FILENAME}.cpp failed - setting ${DEFINENAME} in rtpconfig.h")
else (NOT ${FILENAME}_RESULT)
set(${DEFINENAME} "${EMPTYVALUE}" CACHE INTERNAL "")
message(STATUS "Compiling ${FILENAME}.cpp worked - no action necessary")
endif (NOT ${FILENAME}_RESULT)
endif (NOT BLA)
endif (NOT DEFINED ${FILENAME}_RESULT)
endmacro (jrtplib_test_feature)
macro(save_paths VARNAME)
set (BLA "${ARGN}")
foreach(i IN LISTS BLA)
set (BLA2 "${i}")
if (BLA2)
list(APPEND ${VARNAME} "${i}")
endif (BLA2)
endforeach(i)
list(LENGTH ${VARNAME} BLA)
if (BLA GREATER 0)
list(REMOVE_DUPLICATES ${VARNAME})
endif (BLA GREATER 0)
endmacro(save_paths)
macro(remove_empty VARNAME)
set (remove_empty_NEWLIST "")
foreach(i IN LISTS ${VARNAME})
set (BLA2 "${i}")
if (BLA2)
list(APPEND remove_empty_NEWLIST "${i}")
endif (BLA2)
endforeach(i)
set(${VARNAME} "${remove_empty_NEWLIST}")
endmacro(remove_empty)
macro(apply_include_paths VARNAME)
set (BLA "${VARNAME}")
foreach(i IN LISTS BLA)
set (BLA2 "${i}")
if (BLA2)
include_directories("${i}")
endif (BLA2)
endforeach(i)
endmacro(apply_include_paths)
macro(add_additional_stuff INCVAR LIBVAR)
set(ADDITIONAL_INCLUDE_DIRS "" CACHE STRING "Additional include directories")
if (UNIX AND NOT WIN32)
set(ADDITIONAL_LIBRARIES "" CACHE STRING "Additional libraries to link against")
else (UNIX AND NOT WIN32)
set(ADDITIONAL_GENERAL_LIBRARIES "" CACHE STRING "Additional libraries to link against in both debug and release modes")
set(ADDITIONAL_RELEASE_LIBRARIES "" CACHE STRING "Additional libraries to link against in release mode")
set(ADDITIONAL_DEBUG_LIBRARIES "" CACHE STRING "Additional libraries to link against in debug mode")
set(ADDITIONAL_LIBRARIES "${ADDITIONAL_GENERAL_LIBRARIES}")
foreach(l IN LISTS ADDITIONAL_RELEASE_LIBRARIES)
list(APPEND ADDITIONAL_LIBRARIES optimized)
list(APPEND ADDITIONAL_LIBRARIES "${l}")
endforeach(l)
foreach(l IN LISTS ADDITIONAL_DEBUG_LIBRARIES)
list(APPEND ADDITIONAL_LIBRARIES debug)
list(APPEND ADDITIONAL_LIBRARIES "${l}")
endforeach(l)
endif (UNIX AND NOT WIN32)
save_paths(${INCVAR} "${ADDITIONAL_INCLUDE_DIRS}")
save_paths(${LIBVAR} "${ADDITIONAL_LIBRARIES}")
endmacro(add_additional_stuff)