Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 45 additions & 43 deletions cmake/DaemonGame.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -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
Expand All @@ -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
)
Expand Down Expand Up @@ -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")
Expand All @@ -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
Expand All @@ -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}")
Expand All @@ -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)
Expand Down