@@ -106,173 +106,170 @@ endif()
106
106
107
107
daemon_write_buildinfo ("Game" )
108
108
109
+ function (buildGameModule module_slug )
110
+ set (module_target "${GAMEMODULE_NAME} -${module_slug} " )
111
+
112
+ set (module_target_args "${module_target} " ${PCH_FILE} ${GAMEMODULE_FILES} ${SHAREDLIST_${GAMEMODULE_NAME}} ${SHAREDLIST} ${BUILDINFOLIST} ${COMMONLIST} )
113
+
114
+ if (module_slug STREQUAL "native-dll" )
115
+ add_library (${module_target_args} )
116
+ set_target_properties (${module_target} PROPERTIES
117
+ PREFIX ""
118
+ COMPILE_DEFINITIONS "BUILD_VM_IN_PROCESS" )
119
+ else ()
120
+ add_executable (${module_target_args} )
121
+ endif ()
122
+
123
+ set_target_properties (${module_target} PROPERTIES
124
+ COMPILE_DEFINITIONS "VM_NAME=${GAMEMODULE_NAME} ;${GAMEMODULE_DEFINITIONS} ;BUILD_VM"
125
+ COMPILE_OPTIONS "${GAMEMODULE_FLAGS} "
126
+ FOLDER ${GAMEMODULE_NAME}
127
+ )
128
+
129
+ if (module_slug STREQUAL "nacl" )
130
+ set_target_properties (${module_target} PROPERTIES
131
+ OUTPUT_NAME "${GAMEMODULE_NAME} "
132
+ SUFFIX "${PLATFORM_EXE_SUFFIX} " )
133
+ endif ()
134
+
135
+ target_link_libraries (${module_target} ${GAMEMODULE_LIBS} ${LIBS_BASE} )
136
+
137
+ ADD_PRECOMPILED_HEADER (${module_target} )
138
+ endfunction ()
139
+
140
+ function (gameSubProject )
141
+ ExternalProject_Add (${VMS_PROJECT}
142
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
143
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} /${VMS_PROJECT}
144
+ CMAKE_GENERATOR ${VM_GENERATOR}
145
+ CMAKE_ARGS
146
+ -DFORK=2
147
+ -DDAEMON_DIR=${Daemon_SOURCE_DIR}
148
+ -DDEPS_DIR=${DEPS_DIR}
149
+ -DBUILD_CLIENT=OFF
150
+ -DBUILD_TTY_CLIENT=OFF
151
+ -DBUILD_SERVER=OFF
152
+ ${ARGV}
153
+ ${INHERITED_OPTION_ARGS}
154
+ INSTALL_COMMAND ""
155
+ )
156
+
157
+ # Force the rescan and rebuild of the subproject.
158
+ ExternalProject_Add_Step (${VMS_PROJECT} forcebuild
159
+ COMMAND ${CMAKE_COMMAND} -E remove
160
+ ${CMAKE_CURRENT_BINARY_DIR} /${VMS_PROJECT}-prefix/src/${VMS_PROJECT}-stamp/${VMS_PROJECT}-configure
161
+ COMMENT "Forcing build step for '${VMS_PROJECT} '"
162
+ DEPENDEES build
163
+ ALWAYS 1
164
+ )
165
+ endfunction ()
166
+
109
167
function (GAMEMODULE )
110
- # ParseArguments setup
111
- set (oneValueArgs NAME )
112
- set (multiValueArgs DEFINITIONS FLAGS FILES LIBS )
113
- cmake_parse_arguments (GAMEMODULE "" "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
114
-
115
- if (NOT NACL )
116
- if (BUILD_GAME_NATIVE_DLL )
117
- add_library (${GAMEMODULE_NAME} -native-dll MODULE ${PCH_FILE} ${GAMEMODULE_FILES} ${SHAREDLIST_${GAMEMODULE_NAME}} ${SHAREDLIST} ${BUILDINFOLIST} ${COMMONLIST} )
118
- target_link_libraries (${GAMEMODULE_NAME} -native-dll ${GAMEMODULE_LIBS} ${LIBS_BASE} )
119
- set_target_properties (${GAMEMODULE_NAME} -native-dll PROPERTIES
120
- PREFIX ""
121
- COMPILE_DEFINITIONS "VM_NAME=${GAMEMODULE_NAME} ;${GAMEMODULE_DEFINITIONS} ;BUILD_VM;BUILD_VM_IN_PROCESS"
122
- COMPILE_OPTIONS "${GAMEMODULE_FLAGS} "
123
- FOLDER ${GAMEMODULE_NAME}
124
- )
125
- ADD_PRECOMPILED_HEADER (${GAMEMODULE_NAME} -native-dll )
126
- endif ()
127
-
128
- if (BUILD_GAME_NATIVE_EXE )
129
- add_executable (${GAMEMODULE_NAME} -native-exe ${PCH_FILE} ${GAMEMODULE_FILES} ${SHAREDLIST_${GAMEMODULE_NAME}} ${SHAREDLIST} ${BUILDINFOLIST} ${COMMONLIST} )
130
- target_link_libraries (${GAMEMODULE_NAME} -native-exe ${GAMEMODULE_LIBS} ${LIBS_BASE} )
131
- set_target_properties (${GAMEMODULE_NAME} -native-exe PROPERTIES
132
- COMPILE_DEFINITIONS "VM_NAME=${GAMEMODULE_NAME} ;${GAMEMODULE_DEFINITIONS} ;BUILD_VM"
133
- COMPILE_OPTIONS "${GAMEMODULE_FLAGS} "
134
- FOLDER ${GAMEMODULE_NAME}
135
- )
136
- ADD_PRECOMPILED_HEADER (${GAMEMODULE_NAME} -native-exe )
137
- endif ()
138
-
139
- if (NOT FORK AND BUILD_GAME_NACL )
140
- if (CMAKE_GENERATOR MATCHES "Visual Studio" )
141
- set (VM_GENERATOR "NMake Makefiles" )
142
- else ()
143
- set (VM_GENERATOR ${CMAKE_GENERATOR} )
144
- endif ()
145
-
146
- set (FORK 1 PARENT_SCOPE )
147
- include (ExternalProject )
148
- set (inherited_option_args )
149
-
150
- foreach (inherited_option ${NACL_VM_INHERITED_OPTIONS} )
151
- set (inherited_option_args ${inherited_option_args}
152
- "-D${inherited_option} =${${inherited_option} }" )
153
- endforeach (inherited_option )
154
-
155
- if (USE_NACL_SAIGO )
156
- add_custom_target (nacl-vms ALL )
157
- unset (NACL_VMS_PROJECTS )
158
-
159
- foreach (NACL_TARGET ${NACL_TARGETS} )
160
- if (NACL_TARGET STREQUAL "i686" )
161
- set (SAIGO_ARCH "i686" )
162
- elseif (NACL_TARGET STREQUAL "amd64" )
163
- set (SAIGO_ARCH "x86_64" )
164
- elseif (NACL_TARGET STREQUAL "armhf" )
165
- set (SAIGO_ARCH "arm" )
166
- else ()
167
- message (FATAL_ERROR "Unknown NaCl architecture ${NACL_TARGET} " )
168
- endif ()
169
-
170
- set (NACL_VMS_PROJECT nacl-vms-${NACL_TARGET} )
171
- list (APPEND NACL_VMS_PROJECTS ${NACL_VMS_PROJECT} )
172
- add_dependencies (nacl-vms ${NACL_VMS_PROJECT} )
173
-
174
- ExternalProject_Add (${NACL_VMS_PROJECT}
175
- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
176
- BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} /${NACL_VMS_PROJECT}
177
- CMAKE_GENERATOR ${VM_GENERATOR}
178
- CMAKE_ARGS
179
- -DFORK=2
180
- -DCMAKE_TOOLCHAIN_FILE=${Daemon_SOURCE_DIR}/cmake/toolchain-saigo.cmake
181
- -DDAEMON_DIR=${Daemon_SOURCE_DIR}
182
- -DDEPS_DIR=${DEPS_DIR}
183
- -DBUILD_GAME_NACL=ON
184
- -DUSE_NACL_SAIGO=ON
185
- -DNACL_TARGET=${NACL_TARGET}
186
- -DSAIGO_ARCH=${SAIGO_ARCH}
187
- -DBUILD_GAME_NATIVE_DLL=OFF
188
- -DBUILD_GAME_NATIVE_EXE=OFF
189
- -DBUILD_CLIENT=OFF
190
- -DBUILD_TTY_CLIENT=OFF
191
- -DBUILD_SERVER=OFF
192
- ${inherited_option_args}
193
- INSTALL_COMMAND ""
194
- )
195
-
196
- # Force the rescan and rebuild of the subproject.
197
- ExternalProject_Add_Step (${NACL_VMS_PROJECT} forcebuild
198
- COMMAND ${CMAKE_COMMAND} -E remove
199
- ${CMAKE_CURRENT_BINARY_DIR} /${NACL_VMS_PROJECT}-prefix/src/${NACL_VMS_PROJECT}-stamp/${NACL_VMS_PROJECT}-configure
200
- COMMENT "Forcing build step for '${NACL_VMS_PROJECT} '"
201
- DEPENDEES build
202
- ALWAYS 1
203
- )
204
- endforeach ()
205
- else ()
206
- set (NACL_VMS_PROJECT nacl-vms )
207
- set (NACL_VMS_PROJECTS ${NACL_VMS_PROJECT} )
208
-
209
- # Workaround a bug where CMake ExternalProject lists-as-args are cut on first “;”
210
- string (REPLACE ";" "," NACL_TARGETS_STRING "${NACL_TARGETS} " )
211
-
212
- ExternalProject_Add (${NACL_VMS_PROJECT}
213
- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
214
- BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} /${NACL_VMS_PROJECT}
215
- CMAKE_GENERATOR ${VM_GENERATOR}
216
- CMAKE_ARGS
217
- -DFORK=2
218
- -DCMAKE_TOOLCHAIN_FILE=${Daemon_SOURCE_DIR}/cmake/toolchain-pnacl.cmake
219
- -DDAEMON_DIR=${Daemon_SOURCE_DIR}
220
- -DDEPS_DIR=${DEPS_DIR}
221
- -DBUILD_GAME_NACL=ON
222
- -DNACL_TARGETS_STRING=${NACL_TARGETS_STRING}
223
- -DBUILD_GAME_NATIVE_DLL=OFF
224
- -DBUILD_GAME_NATIVE_EXE=OFF
225
- -DBUILD_CLIENT=OFF
226
- -DBUILD_TTY_CLIENT=OFF
227
- -DBUILD_SERVER=OFF
228
- ${inherited_option_args}
229
- INSTALL_COMMAND ""
230
- )
231
-
232
- # Force the rescan and rebuild of the subproject.
233
- ExternalProject_Add_Step (${NACL_VMS_PROJECT} forcebuild
234
- COMMAND ${CMAKE_COMMAND} -E remove
235
- ${CMAKE_CURRENT_BINARY_DIR} /${NACL_VMS_PROJECT}-prefix/src/${NACL_VMS_PROJECT}-stamp/${NACL_VMS_PROJECT}-configure
236
- COMMENT "Forcing build step for '${NACL_VMS_PROJECT} '"
237
- DEPENDEES build
238
- ALWAYS 1
239
- )
240
- endif ()
241
- set (NACL_VMS_PROJECTS ${NACL_VMS_PROJECTS} PARENT_SCOPE )
242
- endif ()
243
- else ()
244
- if (FORK EQUAL 2 )
245
- if (USE_NACL_SAIGO )
246
- set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
247
- else ()
248
- # Put the .nexe and .pexe files in the same directory as the engine
249
- set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /.. )
250
- endif ()
251
- endif ()
252
-
253
- add_executable (${GAMEMODULE_NAME} -nacl ${PCH_FILE} ${GAMEMODULE_FILES} ${SHAREDLIST_${GAMEMODULE_NAME}} ${SHAREDLIST} ${BUILDINFOLIST} ${COMMONLIST} )
254
- target_link_libraries (${GAMEMODULE_NAME} -nacl ${GAMEMODULE_LIBS} ${LIBS_BASE} )
255
- # PLATFORM_EXE_SUFFIX is .pexe when building with PNaCl
256
- # as translating to .nexe is a separate task.
257
- set_target_properties (${GAMEMODULE_NAME} -nacl PROPERTIES
258
- OUTPUT_NAME ${GAMEMODULE_NAME}${PLATFORM_EXE_SUFFIX}
259
- COMPILE_DEFINITIONS "VM_NAME=${GAMEMODULE_NAME} ;${GAMEMODULE_DEFINITIONS} ;BUILD_VM"
260
- COMPILE_OPTIONS "${GAMEMODULE_FLAGS} "
261
- FOLDER ${GAMEMODULE_NAME}
262
- )
263
- ADD_PRECOMPILED_HEADER (${GAMEMODULE_NAME} -nacl )
264
-
265
- # Revert a workaround for a bug where CMake ExternalProject lists-as-args are cut on first “;”
266
- string (REPLACE "," ";" NACL_TARGETS "${NACL_TARGETS_STRING} " )
267
-
268
- if (USE_NACL_SAIGO )
269
- # Finalize NaCl executables for supported architectures.
270
- saigo_finalize (${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /.. ${GAMEMODULE_NAME} ${NACL_TARGET} )
271
- else ()
272
- # Generate NaCl executables for supported architectures.
273
- foreach (NACL_TARGET ${NACL_TARGETS} )
274
- pnacl_finalize (${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${GAMEMODULE_NAME} ${NACL_TARGET} )
275
- endforeach ()
276
- endif ()
277
- endif ()
168
+ # ParseArguments setup
169
+ set (oneValueArgs NAME )
170
+ set (multiValueArgs DEFINITIONS FLAGS FILES LIBS )
171
+ cmake_parse_arguments (GAMEMODULE "" "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
172
+
173
+ if (NOT FORK )
174
+ if (BUILD_GAME_NACL )
175
+ set (FORK 1 PARENT_SCOPE )
176
+ endif ()
177
+
178
+ if (BUILD_GAME_NATIVE_DLL )
179
+ buildGameModule ("native-dll" )
180
+ endif ()
181
+
182
+ if (BUILD_GAME_NATIVE_EXE )
183
+ buildGameModule ("native-exe" )
184
+ endif ()
185
+ endif ()
186
+
187
+ if (FORK EQUAL 1 )
188
+ if (CMAKE_GENERATOR MATCHES "Visual Studio" )
189
+ set (VM_GENERATOR "NMake Makefiles" )
190
+ else ()
191
+ set (VM_GENERATOR ${CMAKE_GENERATOR} )
192
+ endif ()
193
+
194
+ include (ExternalProject )
195
+ set (INHERITED_OPTION_ARGS )
196
+
197
+ foreach (inherited_option ${NACL_VM_INHERITED_OPTIONS} )
198
+ set (INHERITED_OPTION_ARGS ${INHERITED_OPTION_ARGS}
199
+ "-D${inherited_option} =${${inherited_option} }" )
200
+ endforeach (inherited_option )
201
+
202
+ if (BUILD_GAME_NACL )
203
+ if (USE_NACL_SAIGO )
204
+ add_custom_target (nacl-vms ALL )
205
+ unset (VMS_PROJECTS )
206
+
207
+ foreach (NACL_TARGET ${NACL_TARGETS} )
208
+ if (NACL_TARGET STREQUAL "i686" )
209
+ set (SAIGO_ARCH "i686" )
210
+ elseif (NACL_TARGET STREQUAL "amd64" )
211
+ set (SAIGO_ARCH "x86_64" )
212
+ elseif (NACL_TARGET STREQUAL "armhf" )
213
+ set (SAIGO_ARCH "arm" )
214
+ else ()
215
+ message (FATAL_ERROR "Unknown NaCl architecture ${NACL_TARGET} " )
216
+ endif ()
217
+
218
+ set (VMS_PROJECT nacl-vms-${NACL_TARGET} )
219
+ list (APPEND VMS_PROJECTS ${VMS_PROJECT} )
220
+ add_dependencies (nacl-vms ${VMS_PROJECT} )
221
+
222
+ gameSubProject (
223
+ -DCMAKE_TOOLCHAIN_FILE=${Daemon_SOURCE_DIR}/cmake/toolchain-saigo.cmake
224
+ -DBUILD_GAME_NACL=ON
225
+ -DBUILD_GAME_NATIVE_DLL=OFF
226
+ -DBUILD_GAME_NATIVE_EXE=OFF
227
+ -DUSE_NACL_SAIGO=ON
228
+ -DSAIGO_ARCH=${SAIGO_ARCH}
229
+ -DNACL_TARGET=${NACL_TARGET}
230
+ )
231
+ endforeach ()
232
+ else ()
233
+ set (VMS_PROJECT nacl-vms )
234
+ set (VMS_PROJECTS ${VMS_PROJECT} )
235
+
236
+ # Workaround a bug where CMake ExternalProject lists-as-args are cut on first “;”
237
+ string (REPLACE ";" "," NACL_TARGETS_STRING "${NACL_TARGETS} " )
238
+
239
+ gameSubProject (
240
+ -DCMAKE_TOOLCHAIN_FILE=${Daemon_SOURCE_DIR}/cmake/toolchain-pnacl.cmake
241
+ -DBUILD_GAME_NACL=ON
242
+ -DBUILD_GAME_NATIVE_DLL=OFF
243
+ -DBUILD_GAME_NATIVE_EXE=OFF
244
+ -DNACL_TARGETS_STRING=${NACL_TARGETS_STRING}
245
+ )
246
+ endif ()
247
+ endif ()
248
+
249
+ set (VMS_PROJECTS ${VMS_PROJECTS} PARENT_SCOPE )
250
+ elseif (FORK EQUAL 2 )
251
+ if (BUILD_GAME_NACL )
252
+ if (USE_NACL_SAIGO )
253
+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
254
+ else ()
255
+ # Put the .nexe and .pexe files in the same directory as the engine.
256
+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /.. )
257
+ endif ()
258
+
259
+ buildGameModule ("nacl" )
260
+
261
+ if (USE_NACL_SAIGO )
262
+ # Finalize NaCl executables for supported architectures.
263
+ saigo_finalize (${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /.. ${GAMEMODULE_NAME} ${NACL_TARGET} )
264
+ else ()
265
+ # Revert a workaround for a bug where CMake ExternalProject lists-as-args are cut on first “;”
266
+ string (REPLACE "," ";" NACL_TARGETS "${NACL_TARGETS_STRING} " )
267
+
268
+ # Generate NaCl executables for supported architectures.
269
+ foreach (NACL_TARGET ${NACL_TARGETS} )
270
+ pnacl_finalize (${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${GAMEMODULE_NAME} ${NACL_TARGET} )
271
+ endforeach ()
272
+ endif ()
273
+ endif ()
274
+ endif ()
278
275
endfunction ()
0 commit comments