this repo has no description
1include(create_symlink)
2
3function(remove_sdk_framework name)
4 cmake_parse_arguments(SDK
5 "PRIVATE;IOSSUPPORT"
6 "PARENT_DIR"
7 ""
8 ${ARGN}
9 )
10
11 if (REGENERATE_SDK)
12 if (SDK_IOSSUPPORT)
13 set(developer_sys_library_dir "System/iOSSupport/System/Library")
14 else (SDK_IOSSUPPORT)
15 set(developer_sys_library_dir "System/Library")
16 endif (SDK_IOSSUPPORT)
17
18 if (SDK_PRIVATE)
19 set(developer_framework_dir "PrivateFrameworks")
20 set(header_framework_include "framework-private-include")
21 else (SDK_PRIVATE)
22 set(developer_framework_dir "Frameworks")
23 set(header_framework_include "framework-include")
24 endif (SDK_PRIVATE)
25
26 set(developer_platform "MacOSX.platform")
27 set(developer_sdk "MacOSX.sdk")
28
29 set(developer_sdk_path "Developer/Platforms/${developer_platform}/Developer/SDKs/${developer_sdk}")
30 set(developer_framework_path "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${developer_sys_library_dir}/${developer_framework_dir}/${name}.framework")
31
32 if (SDK_PARENT_DIR)
33 set(developer_framework_path "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${SDK_PARENT_DIR}/${name}.framework")
34 endif()
35
36 set(header_framework_include_path "${DARLING_TOP_DIRECTORY}/${header_framework_include}/${name}")
37
38 # Remove file from 'Developer' folder
39 file(REMOVE_RECURSE ${developer_framework_path})
40 # Also remove the the header folder from the framework/framework-private-include header
41 file(REMOVE_RECURSE ${header_framework_include_path})
42
43 message("Deleted SDK framework ${developer_framework_path}")
44 endif (REGENERATE_SDK)
45endfunction(remove_sdk_framework)
46
47function(get_path_preframework result)
48 cmake_parse_arguments(SDK
49 "PRIVATE;IOSSUPPORT"
50 "PARENT_DIR"
51 ""
52 ${ARGN}
53 )
54
55 set(developer_platform "MacOSX.platform")
56 set(developer_sdk "MacOSX.sdk")
57 set(developer_sdk_path "Developer/Platforms/${developer_platform}/Developer/SDKs/${developer_sdk}")
58
59 if (SDK_IOSSUPPORT)
60 set(developer_sys_library_dir "System/iOSSupport/System/Library")
61 else (SDK_IOSSUPPORT)
62 set(developer_sys_library_dir "System/Library")
63 endif (SDK_IOSSUPPORT)
64
65 if (SDK_PRIVATE)
66 set(developer_framework_dir "PrivateFrameworks")
67 else (SDK_PRIVATE)
68 set(developer_framework_dir "Frameworks")
69 endif (SDK_PRIVATE)
70
71 set(developer_framework_path "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${developer_sys_library_dir}/${developer_framework_dir}")
72
73 if (SDK_PARENT_DIR)
74 set(developer_framework_path "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${SDK_PARENT_DIR}")
75 endif()
76
77 set("${result}" "${developer_framework_path}" PARENT_SCOPE)
78endfunction(get_path_preframework)
79
80function(append_path_sdk_subframework input_path output_path name)
81 cmake_parse_arguments(SDK
82 ""
83 "VERSION"
84 ""
85 ${ARGN}
86 )
87
88 set("${output_path}" "${input_path}/${name}.framework/Versions/${SDK_VERSION}/Frameworks" PARENT_SCOPE)
89endfunction(append_path_sdk_subframework)
90
91function(internal_generate_developer_framework name path)
92 cmake_parse_arguments(SDK
93 ""
94 "VERSION;HEADER;PARENT_DIR"
95 ""
96 ${ARGN}
97 )
98
99 set(developer_framework_path "${path}/${name}.framework")
100 set(sdk_path_exact_version "${developer_framework_path}/Versions/${SDK_VERSION}")
101 file(MAKE_DIRECTORY ${sdk_path_exact_version})
102
103 # message(developer_sdk_path="${developer_sdk_path}")
104 # message(developer_framework_path="${developer_framework_path}")
105 # message(sdk_path_exact_version="${sdk_path_exact_version}")
106
107 file(RELATIVE_PATH sdk_relative_dir_include "${sdk_path_exact_version}" ${CMAKE_CURRENT_SOURCE_DIR}/${SDK_HEADER})
108 # message(sdk_relative_dir_include="${sdk_relative_dir_include}")
109
110 create_symlink("${SDK_VERSION}" "${developer_framework_path}/Versions/Current")
111 create_symlink("Versions/${SDK_VERSION}/Headers" "${developer_framework_path}/Headers")
112 create_symlink("${sdk_relative_dir_include}" "${sdk_path_exact_version}/Headers")
113
114 if(EXISTS "${sdk_path_exact_version}/Frameworks")
115 create_symlink("Versions/${SDK_VERSION}/Frameworks" "${developer_framework_path}/Frameworks")
116 endif()
117
118 message("Generated SDK framework ${developer_framework_path}")
119endfunction(internal_generate_developer_framework)
120
121function(internal_generate_framework_include name path)
122 cmake_parse_arguments(SDK
123 "PRIVATE"
124 ""
125 ""
126 ${ARGN}
127 )
128
129 if (SDK_PRIVATE)
130 set(header_framework_include "framework-private-include")
131 else (SDK_PRIVATE)
132 set(header_framework_include "framework-include")
133 endif (SDK_PRIVATE)
134
135 set(developer_headers_path "${path}/${name}.framework/Headers")
136 set(header_framework_include_absolute_path "${DARLING_TOP_DIRECTORY}/${header_framework_include}")
137
138 file(RELATIVE_PATH sdk_relative_dir_include "${header_framework_include_absolute_path}" "${developer_headers_path}")
139 create_symlink("${sdk_relative_dir_include}" "${header_framework_include_absolute_path}/${name}")
140
141 message("Created header symbolic-link ${header_framework_include_absolute_path}/${name}")
142endfunction(internal_generate_framework_include)
143
144function(generate_sdk_framework name)
145 cmake_parse_arguments(SDK
146 "PRIVATE;IOSSUPPORT"
147 "VERSION;HEADER;PARENT_DIR"
148 ""
149 ${ARGN}
150 )
151
152 if (REGENERATE_SDK)
153 if (SDK_IOSSUPPORT)
154 set(IOSSUPPORT "IOSSUPPORT")
155 else (SDK_IOSSUPPORT)
156 set(IOSSUPPORT "")
157 endif (SDK_IOSSUPPORT)
158
159 if (SDK_PRIVATE)
160 set(PRIVATE "PRIVATE")
161 else (SDK_PRIVATE)
162 set(PRIVATE "")
163 endif (SDK_PRIVATE)
164
165 get_path_preframework(sdk_path
166 ${PRIVATE}
167 ${IOSSUPPORT}
168 PARENT_DIR "${SDK_PARENT_DIR}"
169 )
170
171 internal_generate_developer_framework(${name}
172 "${sdk_path}"
173 VERSION ${SDK_VERSION}
174 HEADER ${SDK_HEADER}
175 )
176
177 internal_generate_framework_include(${name}
178 "${sdk_path}"
179 ${PRIVATE}
180 )
181 endif (REGENERATE_SDK)
182endfunction(generate_sdk_framework)
183
184function(generate_sdk_subframework name)
185 cmake_parse_arguments(SDK
186 "PRIVATE"
187 "VERSION;HEADER;BASE_PATH"
188 ""
189 ${ARGN}
190 )
191
192 if (REGENERATE_SDK)
193 if (SDK_PRIVATE)
194 set(PRIVATE "PRIVATE")
195 else (SDK_PRIVATE)
196 set(PRIVATE "")
197 endif (SDK_PRIVATE)
198
199 internal_generate_developer_framework(${name}
200 "${SDK_BASE_PATH}"
201 VERSION ${SDK_VERSION}
202 HEADER ${SDK_HEADER}
203 )
204
205 internal_generate_framework_include(${name}
206 "${SDK_BASE_PATH}"
207 ${PRIVATE}
208 )
209 endif (REGENERATE_SDK)
210endfunction(generate_sdk_subframework)