diff --git a/cmake/DaemonGame.cmake b/cmake/DaemonGame.cmake index 090207b2db..8ea8a4079b 100644 --- a/cmake/DaemonGame.cmake +++ b/cmake/DaemonGame.cmake @@ -68,40 +68,42 @@ set(SHAREDLIST_sgame include(CMakeParseArguments) # The NaCl SDK only runs on amd64 or i686. -if (CMAKE_SYSTEM_NAME STREQUAL CMAKE_HOST_SYSTEM_NAME -AND (ARCH STREQUAL "amd64" OR ARCH STREQUAL "i686")) - # can be loaded by daemon with vm.[sc]game.type 0 or 1 - option(BUILD_GAME_NACL "Build the NaCl \"pexe\" and \"nexe\" gamelogic modules for enabled architecture targets, required to host mods." OFF) - - set(NACL_ALL_TARGETS "amd64;i686;armhf") - set(BUILD_GAME_NACL_TARGETS "all" CACHE STRING "Enabled NaCl \"nexe\" architecture targets, values: ${NACL_ALL_TARGETS}, all, native, none.") - mark_as_advanced(BUILD_GAME_NACL_TARGETS) - - if (BUILD_GAME_NACL_TARGETS STREQUAL "all") - set(NACL_TARGETS "${NACL_ALL_TARGETS}") - elseif (BUILD_GAME_NACL_TARGETS STREQUAL "native") - set(NACL_TARGETS "${ARCH}") - elseif (BUILD_GAME_NACL_TARGETS STREQUAL "none") - set(NACL_TARGETS "") - else() - set(NACL_TARGETS "${BUILD_GAME_NACL_TARGETS}") - endif() +if (NOT FORK EQUAL 2) + if (CMAKE_SYSTEM_NAME STREQUAL CMAKE_HOST_SYSTEM_NAME + AND (ARCH STREQUAL "amd64" OR ARCH STREQUAL "i686")) + # can be loaded by daemon with vm.[sc]game.type 0 or 1 + option(BUILD_GAME_NACL "Build the NaCl \"pexe\" and \"nexe\" gamelogic modules for enabled architecture targets, required to host mods." OFF) + + set(NACL_ALL_TARGETS "amd64;i686;armhf") + set(BUILD_GAME_NACL_TARGETS "all" CACHE STRING "Enabled NaCl \"nexe\" architecture targets, values: ${NACL_ALL_TARGETS}, all, native, none.") + mark_as_advanced(BUILD_GAME_NACL_TARGETS) + + if (BUILD_GAME_NACL_TARGETS STREQUAL "all") + set(NACL_TARGETS "${NACL_ALL_TARGETS}") + elseif (BUILD_GAME_NACL_TARGETS STREQUAL "native") + set(NACL_TARGETS "${ARCH}") + elseif (BUILD_GAME_NACL_TARGETS STREQUAL "none") + set(NACL_TARGETS "") + else() + set(NACL_TARGETS "${BUILD_GAME_NACL_TARGETS}") + endif() + + foreach(NACL_TARGET ${NACL_TARGETS}) + set(IS_NACL_VALID_TARGET OFF) + foreach(NACL_VALID_TARGET ${NACL_ALL_TARGETS}) + if(NACL_TARGET STREQUAL NACL_VALID_TARGET) + set(IS_NACL_VALID_TARGET ON) + endif() + endforeach() - foreach(NACL_TARGET ${NACL_TARGETS}) - set(IS_NACL_VALID_TARGET OFF) - foreach(NACL_VALID_TARGET ${NACL_ALL_TARGETS}) - if(NACL_TARGET STREQUAL NACL_VALID_TARGET) - set(IS_NACL_VALID_TARGET ON) + if (NOT IS_NACL_VALID_TARGET) + message(FATAL_ERROR "Invalid NaCl target ${NACL_TARGET}, must be one of ${NACL_ALL_TARGETS}") endif() endforeach() - - if (NOT IS_NACL_VALID_TARGET) - message(FATAL_ERROR "Invalid NaCl target ${NACL_TARGET}, must be one of ${NACL_ALL_TARGETS}") - endif() - endforeach() -else() - set(BUILD_GAME_NACL OFF) - set(NACL_TARGETS "") + else() + set(BUILD_GAME_NACL OFF) + set(NACL_TARGETS "") + endif() endif() daemon_write_buildinfo("Game") @@ -137,9 +139,9 @@ function(buildGameModule module_slug) endfunction() function(gameSubProject) - ExternalProject_Add(${VMS_PROJECT} + ExternalProject_Add(${NACL_VMS_PROJECT} SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} - BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${VMS_PROJECT} + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NACL_VMS_PROJECT} CMAKE_GENERATOR ${VM_GENERATOR} CMAKE_ARGS -DFORK=2 @@ -154,10 +156,10 @@ function(gameSubProject) ) # Force the rescan and rebuild of the subproject. - ExternalProject_Add_Step(${VMS_PROJECT} forcebuild + ExternalProject_Add_Step(${NACL_VMS_PROJECT} forcebuild COMMAND ${CMAKE_COMMAND} -E remove - ${CMAKE_CURRENT_BINARY_DIR}/${VMS_PROJECT}-prefix/src/${VMS_PROJECT}-stamp/${VMS_PROJECT}-configure - COMMENT "Forcing build step for '${VMS_PROJECT}'" + ${CMAKE_CURRENT_BINARY_DIR}/${NACL_VMS_PROJECT}-prefix/src/${NACL_VMS_PROJECT}-stamp/${NACL_VMS_PROJECT}-configure + COMMENT "Forcing build step for '${NACL_VMS_PROJECT}'" DEPENDEES build ALWAYS 1 ) @@ -201,7 +203,7 @@ function(GAMEMODULE) if (BUILD_GAME_NACL) if (USE_NACL_SAIGO) add_custom_target(nacl-vms ALL) - unset(VMS_PROJECTS) + unset(NACL_VMS_PROJECTS) foreach(NACL_TARGET ${NACL_TARGETS}) if (NACL_TARGET STREQUAL "i686") @@ -214,9 +216,9 @@ function(GAMEMODULE) message(FATAL_ERROR "Unknown NaCl architecture ${NACL_TARGET}") endif() - set(VMS_PROJECT nacl-vms-${NACL_TARGET}) - list(APPEND VMS_PROJECTS ${VMS_PROJECT}) - add_dependencies(nacl-vms ${VMS_PROJECT}) + set(NACL_VMS_PROJECT nacl-vms-${NACL_TARGET}) + list(APPEND NACL_VMS_PROJECTS ${NACL_VMS_PROJECT}) + add_dependencies(nacl-vms ${NACL_VMS_PROJECT}) gameSubProject( -DCMAKE_TOOLCHAIN_FILE=${Daemon_SOURCE_DIR}/cmake/toolchain-saigo.cmake @@ -229,8 +231,8 @@ function(GAMEMODULE) ) endforeach() else() - set(VMS_PROJECT nacl-vms) - set(VMS_PROJECTS ${VMS_PROJECT}) + set(NACL_VMS_PROJECT nacl-vms) + set(NACL_VMS_PROJECTS ${NACL_VMS_PROJECT}) # Workaround a bug where CMake ExternalProject lists-as-args are cut on first “;” string(REPLACE ";" "," NACL_TARGETS_STRING "${NACL_TARGETS}") @@ -245,7 +247,7 @@ function(GAMEMODULE) endif() endif() - set(VMS_PROJECTS ${VMS_PROJECTS} PARENT_SCOPE) + set(NACL_VMS_PROJECTS ${NACL_VMS_PROJECTS} PARENT_SCOPE) elseif (FORK EQUAL 2) if (BUILD_GAME_NACL) if (USE_NACL_SAIGO)