diff options
author | 3gg <3gg@shellblade.net> | 2024-05-04 16:51:29 -0700 |
---|---|---|
committer | 3gg <3gg@shellblade.net> | 2024-05-04 16:51:29 -0700 |
commit | 8222bfe56d4dabe8d92fc4b25ea1b0163b16f3e1 (patch) | |
tree | 763389e42276035ac134d94eb1dc32293b88d807 /src/contrib/SDL-2.30.2/cmake/macros.cmake |
Initial commit.
Diffstat (limited to 'src/contrib/SDL-2.30.2/cmake/macros.cmake')
-rw-r--r-- | src/contrib/SDL-2.30.2/cmake/macros.cmake | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/src/contrib/SDL-2.30.2/cmake/macros.cmake b/src/contrib/SDL-2.30.2/cmake/macros.cmake new file mode 100644 index 0000000..5060923 --- /dev/null +++ b/src/contrib/SDL-2.30.2/cmake/macros.cmake | |||
@@ -0,0 +1,148 @@ | |||
1 | macro(ADD_TO_ALLOPTIONS _NEWNAME) | ||
2 | list(APPEND ALLOPTIONS ${_NEWNAME}) | ||
3 | string(LENGTH ${_NEWNAME} _SLEN) | ||
4 | if(${LONGESTOPTIONNAME} LESS ${_SLEN}) | ||
5 | set(LONGESTOPTIONNAME ${_SLEN}) | ||
6 | endif() | ||
7 | endmacro() | ||
8 | |||
9 | macro(SET_OPTION _NAME _DESC) | ||
10 | add_to_alloptions(${_NAME}) | ||
11 | if(${ARGC} EQUAL 3) | ||
12 | set(_DEFLT ${ARGV2}) | ||
13 | else() | ||
14 | set(_DEFLT OFF) | ||
15 | endif() | ||
16 | option(${_NAME} ${_DESC} ${_DEFLT}) | ||
17 | endmacro() | ||
18 | |||
19 | macro(DEP_OPTION _NAME _DESC _DEFLT _DEPTEST _FAILDFLT) | ||
20 | add_to_alloptions("${_NAME}") | ||
21 | cmake_dependent_option("${_NAME}" "${_DESC}" "${_DEFLT}" "${_DEPTEST}" "${_FAILDFLT}") | ||
22 | endmacro() | ||
23 | |||
24 | macro(OPTION_STRING _NAME _DESC _VALUE) | ||
25 | add_to_alloptions(${_NAME}) | ||
26 | set(${_NAME} ${_VALUE} CACHE STRING "${_DESC}") | ||
27 | set(HAVE_${_NAME} ${_VALUE}) | ||
28 | ENDMACRO() | ||
29 | |||
30 | # Message Output | ||
31 | macro(MESSAGE_WARN _TEXT) | ||
32 | message(WARNING "${_TEXT}") | ||
33 | endmacro() | ||
34 | |||
35 | macro(MESSAGE_ERROR _TEXT) | ||
36 | message(FATAL_ERROR "*** ERROR: ${_TEXT}") | ||
37 | endmacro() | ||
38 | |||
39 | macro(MESSAGE_BOOL_OPTION _NAME _VALUE) | ||
40 | if(${_VALUE}) | ||
41 | message(STATUS " ${_NAME}:\tON") | ||
42 | else() | ||
43 | message(STATUS " ${_NAME}:\tOFF") | ||
44 | endif() | ||
45 | endmacro() | ||
46 | |||
47 | macro(MESSAGE_TESTED_OPTION _NAME) | ||
48 | set(_REQVALUE ${${_NAME}}) | ||
49 | set(_PAD " ") | ||
50 | if(${ARGC} EQUAL 2) | ||
51 | set(_PAD ${ARGV1}) | ||
52 | endif() | ||
53 | string(SUBSTRING "${_NAME}" 0 4 _NAMESTART) | ||
54 | if(_NAMESTART STREQUAL "SDL_") | ||
55 | string(SUBSTRING "${_NAME}" 4 -1 _STRIPPEDNAME) | ||
56 | else() | ||
57 | set(_STRIPPEDNAME "${_NAME}") | ||
58 | endif() | ||
59 | if(NOT HAVE_${_STRIPPEDNAME}) | ||
60 | set(HAVE_${_STRIPPEDNAME} OFF) | ||
61 | elseif("${HAVE_${_STRIPPEDNAME}}" MATCHES "1|TRUE|YES|Y") | ||
62 | set(HAVE_${_STRIPPEDNAME} ON) | ||
63 | endif() | ||
64 | message(STATUS " ${_NAME}${_PAD}(Wanted: ${_REQVALUE}): ${HAVE_${_STRIPPEDNAME}}") | ||
65 | endmacro() | ||
66 | |||
67 | function(LISTTOSTR _LIST _OUTPUT) | ||
68 | if(${ARGC} EQUAL 3) | ||
69 | # prefix for each element | ||
70 | set(_LPREFIX ${ARGV2}) | ||
71 | else() | ||
72 | set(_LPREFIX "") | ||
73 | endif() | ||
74 | # Do not use string(REPLACE ";" " ") here to avoid messing up list | ||
75 | # entries | ||
76 | set(res) | ||
77 | foreach(_ITEM ${${_LIST}}) | ||
78 | set(res "${res} ${_LPREFIX}${_ITEM}") | ||
79 | endforeach() | ||
80 | set(${_OUTPUT} "${res}" PARENT_SCOPE) | ||
81 | endfunction() | ||
82 | |||
83 | macro(LISTTOSTRREV _LIST _OUTPUT) | ||
84 | if(${ARGC} EQUAL 3) | ||
85 | # prefix for each element | ||
86 | set(_LPREFIX ${ARGV2}) | ||
87 | else() | ||
88 | set(_LPREFIX "") | ||
89 | endif() | ||
90 | # Do not use string(REPLACE ";" " ") here to avoid messing up list | ||
91 | # entries | ||
92 | foreach(_ITEM ${${_LIST}}) | ||
93 | set(${_OUTPUT} "${_LPREFIX}${_ITEM} ${${_OUTPUT}}") | ||
94 | endforeach() | ||
95 | endmacro() | ||
96 | |||
97 | if(CMAKE_VERSION VERSION_LESS 3.16.0 OR SDL2_SUBPROJECT) | ||
98 | # - CMake versions <3.16 do not support the OBJC language | ||
99 | # - When SDL is built as a subproject and when the main project does not enable OBJC, | ||
100 | # CMake fails due to missing internal CMake variables (CMAKE_OBJC_COMPILE_OBJECT) | ||
101 | # (reproduced with CMake 3.24.2) | ||
102 | macro(CHECK_OBJC_SOURCE_COMPILES SOURCE VAR) | ||
103 | set(PREV_REQUIRED_DEFS "${CMAKE_REQUIRED_DEFINITIONS}") | ||
104 | set(CMAKE_REQUIRED_DEFINITIONS "-x objective-c ${PREV_REQUIRED_DEFS}") | ||
105 | CHECK_C_SOURCE_COMPILES("${SOURCE}" ${VAR}) | ||
106 | set(CMAKE_REQUIRED_DEFINITIONS "${PREV_REQUIRED_DEFS}") | ||
107 | endmacro() | ||
108 | else() | ||
109 | include(CheckOBJCSourceCompiles) | ||
110 | if (APPLE) | ||
111 | enable_language(OBJC) | ||
112 | endif() | ||
113 | endif() | ||
114 | |||
115 | if(APPLE) | ||
116 | check_language(OBJC) | ||
117 | if(NOT CMAKE_OBJC_COMPILER) | ||
118 | message(WARNING "Cannot find working OBJC compiler.") | ||
119 | endif() | ||
120 | endif() | ||
121 | |||
122 | if(CMAKE_VERSION VERSION_LESS 3.13.0) | ||
123 | macro(target_link_directories _TARGET _SCOPE) | ||
124 | link_directories(${ARGN}) | ||
125 | endmacro() | ||
126 | endif() | ||
127 | |||
128 | # CMP0087: install(CODE) and install(SCRIPT) support generator expressions. | ||
129 | if(POLICY CMP0087) | ||
130 | cmake_policy(SET CMP0087 NEW) | ||
131 | endif() | ||
132 | function(SDL_install_pdb TARGET DIRECTORY) | ||
133 | get_property(type TARGET ${TARGET} PROPERTY TYPE) | ||
134 | if(type MATCHES "^(SHARED_LIBRARY|EXECUTABLE)$") | ||
135 | if(NOT CMAKE_VERSION VERSION_LESS 3.1) | ||
136 | install(FILES $<TARGET_PDB_FILE:${TARGET}> DESTINATION "${DIRECTORY}" OPTIONAL) | ||
137 | endif() | ||
138 | elseif(type STREQUAL "STATIC_LIBRARY") | ||
139 | if(NOT CMAKE_VERSION VERSION_LESS 3.15) | ||
140 | # FIXME: Use $<TARGET_COMPILE_PDB_FILE:${TARGET} once it becomes available (https://gitlab.kitware.com/cmake/cmake/-/issues/25244) | ||
141 | if(CMAKE_GENERATOR MATCHES "^Visual Studio.*") | ||
142 | install(CODE "file(INSTALL DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${DIRECTORY}\" TYPE FILE OPTIONAL FILES \"${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/${TARGET}.pdb\")") | ||
143 | else() | ||
144 | install(CODE "file(INSTALL DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${DIRECTORY}\" TYPE FILE OPTIONAL FILES \"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET}.dir/${TARGET}.pdb\")") | ||
145 | endif() | ||
146 | endif() | ||
147 | endif() | ||
148 | endfunction() | ||