Skip to content
Merged
Show file tree
Hide file tree
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
12 changes: 9 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,12 @@ set(NACL_VM_INHERITED_OPTIONS "${DEFAULT_NACL_VM_INHERITED_OPTIONS}" CACHE STRIN
"Semicolon-separated list of options for which NaCl game VMs should use the same value as the other binaries")
mark_as_advanced(NACL_VM_INHERITED_OPTIONS)

# Warning: changing SAIGOSDK_DIR/SAIGOSDK_VERSION after subprojects have been configured WILL
# change the compiler, but it is a bad idea since flag tests and such (not to mention the actual
# compiled artifacts) will be out of date.
set(SAIGOSDK_DIR "" CACHE PATH "Override Saigo NaCl SDK path")
mark_as_advanced(SAIGOSDK_DIR)

################################################################################
# Directories
################################################################################
Expand Down Expand Up @@ -275,8 +281,8 @@ endif()

option(USE_EXTERNAL_DEPS_LIBS "Build and link against libraries from the EXTERNAL_DEPS_DIR" ${DEFAULT_USE_EXTERNAL_DEPS_LIBS})

set(PNACLSDK_PREFIX "${DEPS_DIR}/pnacl" CACHE PATH "PNaCl SDK path")
mark_as_advanced(PNACLSDK_PREFIX)
set(PNACLSDK_DIR "${DEPS_DIR}/pnacl" CACHE PATH "PNaCl SDK path")
mark_as_advanced(PNACLSDK_DIR)

if (USE_EXTERNAL_DEPS AND NOT YOKAI_TARGET_SYSTEM_NACL)
if (DEPS_DIR)
Expand Down Expand Up @@ -456,7 +462,7 @@ if (DEPS_DIR)
endif()
endif()

if (BUILD_GAME_NACL AND USE_NACL_SAIGO AND NOT SAIGOSDK_PREFIX)
if (BUILD_GAME_NACL AND USE_NACL_SAIGO AND NOT SAIGOSDK_DIR)
include(DaemonDependenciesDownload)
download_saigosdk()
endif()
Expand Down
16 changes: 7 additions & 9 deletions cmake/DaemonDependenciesDownload.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,14 @@

# TODO: Move other deps downloading code in here.

set(SAIGOSDK_BASENAME "saigosdk-${DEPS_SYSTEM}-${DEPS_ARCH}_${SAIGOSDK_VERSION}")

# Warning: changing SAIGOSDK_PREFIX/SAIGOSDK_VERSION after subprojects have been configured WILL
# change the compiler, but it is a bad idea since flag tests and such (not to mention the actual
# compiled artifacts) will be out of date.
set(SAIGOSDK_PREFIX "${EXTERNAL_DEPS_DIR}/${SAIGOSDK_BASENAME}" CACHE PATH "PNaCl SDK path")
mark_as_advanced(SAIGOSDK_PREFIX)

# As an alternative to downloading, external_deps/sdk-build.sh can be used, to build the host-mode
# dependencies and install them in the expected path.

# Download the SDK, if it is not already there. Upon success, cache the path in SAIGOSDK_DIR.
function(download_saigosdk)
if (NOT EXISTS "${SAIGOSDK_PREFIX}")
string(TOLOWER "${YOKAI_HOST_SYSTEM_NAME}" HOST_SYSTEM_SLUG)
set(SAIGOSDK_BASENAME "saigosdk-${HOST_SYSTEM_SLUG}-${YOKAI_HOST_ARCH_NAME}_${SAIGOSDK_VERSION}")
if (NOT EXISTS "${EXTERNAL_DEPS_DIR}/${SAIGOSDK_BASENAME}")
set(DEPS_FILENAME "${SAIGOSDK_BASENAME}.tar.xz")
set(REMOTE "https://github.com/DaemonEngine/saigo-nacl-sdk/releases/download/v${SAIGOSDK_VERSION}/${DEPS_FILENAME}")
message(STATUS "Downloading NaCl SDK from '${REMOTE}'")
Expand Down Expand Up @@ -71,4 +67,6 @@ function(download_saigosdk)
message(FATAL_ERROR "Could not extract ${DEPS_FILENAME}")
endif()
endif()
# Set SAIGOSDK_DIR in the cache now that it is known to have been created
set_property(CACHE SAIGOSDK_DIR PROPERTY VALUE "${EXTERNAL_DEPS_DIR}/${SAIGOSDK_BASENAME}")
endfunction()
12 changes: 6 additions & 6 deletions cmake/DaemonGame.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,8 @@ function(GAMEMODULE)

if (BUILD_GAME_NACL AND NOT YOKAI_TARGET_SYSTEM_NACL)
if (USE_NACL_SAIGO)
if (NOT IS_DIRECTORY "${SAIGOSDK_PREFIX}")
message(FATAL_ERROR "SAIGOSDK_PREFIX configured as '${SAIGOSDK_PREFIX}' which is not an existing directory")
if (NOT IS_DIRECTORY "${SAIGOSDK_DIR}")
message(FATAL_ERROR "SAIGOSDK_DIR configured as '${SAIGOSDK_DIR}' which is not an existing directory")
endif()

add_custom_target(nacl-vms ALL)
Expand All @@ -246,7 +246,7 @@ function(GAMEMODULE)
# TODO: Remove USE_NACL_SAIGO once the game uses YOKAI_TARGET_SYSTEM_NACL.
gameSubProject(
"-DCMAKE_TOOLCHAIN_FILE=${Daemon_SOURCE_DIR}/cmake/cross-toolchain-saigo-${nacl_target}.cmake"
"-DSAIGOSDK_PREFIX=${SAIGOSDK_PREFIX}"
"-DSAIGOSDK_DIR=${SAIGOSDK_DIR}"
-DUSE_NACL_SAIGO=ON
-DBUILD_GAME_NACL=ON
-DBUILD_GAME_NATIVE_DLL=OFF
Expand All @@ -255,8 +255,8 @@ function(GAMEMODULE)
)
endforeach()
else()
if (NOT IS_DIRECTORY "${PNACLSDK_PREFIX}")
message(FATAL_ERROR "PNACLSDK_PREFIX configured as '${PNACLSDK_PREFIX}' which is not an existing directory")
if (NOT IS_DIRECTORY "${PNACLSDK_DIR}")
message(FATAL_ERROR "PNACLSDK_DIR configured as '${PNACLSDK_DIR}' which is not an existing directory")
endif()

set(NACL_VMS_PROJECT nacl-vms)
Expand All @@ -267,7 +267,7 @@ function(GAMEMODULE)

gameSubProject(
"-DCMAKE_TOOLCHAIN_FILE=${Daemon_SOURCE_DIR}/cmake/cross-toolchain-pnacl.cmake"
"-DPNACLSDK_PREFIX=${PNACLSDK_PREFIX}"
"-DPNACLSDK_DIR=${PNACLSDK_DIR}"
-DUSE_NACL_SAIGO=OFF
-DBUILD_GAME_NACL=ON
-DBUILD_GAME_NATIVE_DLL=OFF
Expand Down
20 changes: 10 additions & 10 deletions cmake/cross-toolchain-pnacl.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -37,22 +37,22 @@ endif()

set(PNACL_TRIPLET "pnacl")

if ("${PNACLSDK_PREFIX}" STREQUAL "")
if ("${PNACLSDK_DIR}" STREQUAL "")
find_program(PATH_PNACL_CLANG NAMES "${PNACL_TRIPLET}-clang${PNACL_EXECUTABLE_SUFFIX}")
get_filename_component(PNACLSDK_PREFIX ${PATH_PNACL_CLANG} DIRECTORY)
get_filename_component(PNACLSDK_DIR ${PATH_PNACL_CLANG} DIRECTORY)
endif()

list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES PNACLSDK_PREFIX)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES PNACLSDK_DIR)

set(CMAKE_SYSTEM_NAME "Generic")

set(CMAKE_C_COMPILER "${PNACLSDK_PREFIX}/bin/${PNACL_TRIPLET}-clang${PNACL_EXECUTABLE_SUFFIX}")
set(CMAKE_CXX_COMPILER "${PNACLSDK_PREFIX}/bin/${PNACL_TRIPLET}-clang++${PNACL_EXECUTABLE_SUFFIX}")
set(CMAKE_AR "${PNACLSDK_PREFIX}/bin/${PNACL_TRIPLET}-ar${PNACL_EXECUTABLE_SUFFIX}" CACHE FILEPATH "Archiver" FORCE)
set(CMAKE_RANLIB "${PNACLSDK_PREFIX}/bin/${PNACL_TRIPLET}-ranlib${PNACL_EXECUTABLE_SUFFIX}")
set(PNACL_TRANSLATE "${PNACLSDK_PREFIX}/bin/${PNACL_TRIPLET}-translate${PNACL_EXECUTABLE_SUFFIX}")
set(CMAKE_STRIP "${PNACLSDK_PREFIX}/bin/${PNACL_TRIPLET}-strip${PNACL_EXECUTABLE_SUFFIX}")
set(CMAKE_FIND_ROOT_PATH "${PNACLSDK_PREFIX}/le32-nacl")
set(CMAKE_C_COMPILER "${PNACLSDK_DIR}/bin/${PNACL_TRIPLET}-clang${PNACL_EXECUTABLE_SUFFIX}")
set(CMAKE_CXX_COMPILER "${PNACLSDK_DIR}/bin/${PNACL_TRIPLET}-clang++${PNACL_EXECUTABLE_SUFFIX}")
set(CMAKE_AR "${PNACLSDK_DIR}/bin/${PNACL_TRIPLET}-ar${PNACL_EXECUTABLE_SUFFIX}" CACHE FILEPATH "Archiver" FORCE)
set(CMAKE_RANLIB "${PNACLSDK_DIR}/bin/${PNACL_TRIPLET}-ranlib${PNACL_EXECUTABLE_SUFFIX}")
set(PNACL_TRANSLATE "${PNACLSDK_DIR}/bin/${PNACL_TRIPLET}-translate${PNACL_EXECUTABLE_SUFFIX}")
set(CMAKE_STRIP "${PNACLSDK_DIR}/bin/${PNACL_TRIPLET}-strip${PNACL_EXECUTABLE_SUFFIX}")
set(CMAKE_FIND_ROOT_PATH "${PNACLSDK_DIR}/le32-nacl")

set(CMAKE_C_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
Expand Down
22 changes: 13 additions & 9 deletions cmake/cross-toolchain-saigo-common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -24,27 +24,31 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

if (CMAKE_HOST_WIN32)
set(SAIGOSDK_BIN_EXT ".exe")
endif()

# We can't use CMAKE_EXECUTABLE_SUFFIX because the Generic Platform will reset it
# and creating a Platform module for setting CMAKE_EXECUTABLE_SUFFIX is overkill.
set(NACL_EXECUTABLE_SUFFIX ".nexe")

set(SAIGO_TRIPLET "${SAIGO_ARCH}-nacl")

if ("${SAIGOSDK_PREFIX}" STREQUAL "")
if ("${SAIGOSDK_DIR}" STREQUAL "")
find_program(PATH_SAIGO_CLANG NAMES "${SAIGO_TRIPLET}-clang")
get_filename_component(SAIGOSDK_PREFIX ${PATH_SAIGO_CLANG} DIRECTORY)
get_filename_component(SAIGOSDK_DIR ${PATH_SAIGO_CLANG} DIRECTORY)
endif()

list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES SAIGOSDK_PREFIX)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES SAIGOSDK_DIR)

set(CMAKE_SYSTEM_NAME "Generic")

set(CMAKE_C_COMPILER "${SAIGOSDK_PREFIX}/bin/${SAIGO_TRIPLET}-clang")
set(CMAKE_CXX_COMPILER "${SAIGOSDK_PREFIX}/bin/${SAIGO_TRIPLET}-clang++")
set(CMAKE_AR "${SAIGOSDK_PREFIX}/bin/${SAIGO_TRIPLET}-ar" CACHE FILEPATH "Archiver" FORCE)
set(CMAKE_RANLIB "${SAIGOSDK_PREFIX}/bin/${SAIGO_TRIPLET}-ranlib")
set(CMAKE_STRIP "${SAIGOSDK_PREFIX}/bin/${SAIGO_TRIPLET}-strip")
set(CMAKE_FIND_ROOT_PATH "${SAIGOSDK_PREFIX}/${SAIGO_TRIPLET}")
set(CMAKE_C_COMPILER "${SAIGOSDK_DIR}/bin/${SAIGO_TRIPLET}-clang${SAIGOSDK_BIN_EXT}")
set(CMAKE_CXX_COMPILER "${SAIGOSDK_DIR}/bin/${SAIGO_TRIPLET}-clang++${SAIGOSDK_BIN_EXT}")
set(CMAKE_AR "${SAIGOSDK_DIR}/bin/${SAIGO_TRIPLET}-ar${SAIGOSDK_BIN_EXT}" CACHE FILEPATH "Archiver" FORCE)
set(CMAKE_RANLIB "${SAIGOSDK_DIR}/bin/${SAIGO_TRIPLET}-ranlib${SAIGOSDK_BIN_EXT}")
set(CMAKE_STRIP "${SAIGOSDK_DIR}/bin/${SAIGO_TRIPLET}-strip${SAIGOSDK_BIN_EXT}")
set(CMAKE_FIND_ROOT_PATH "${SAIGOSDK_DIR}/${SAIGO_TRIPLET}")

# Copy-pasted from the PNaCl toolchain, it's not sure we need it.
set(CMAKE_C_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
Expand Down
4 changes: 2 additions & 2 deletions cmake/cross-toolchain-saigo-i686.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@
set(SAIGO_ARCH "i686")
include("${CMAKE_CURRENT_LIST_DIR}/cross-toolchain-saigo-common.cmake")

if (EXISTS "${SAIGOSDK_PREFIX}/x86_64-nacl/lib32")
if (EXISTS "${SAIGOSDK_DIR}/x86_64-nacl/lib32")
# This will search libraries in paths in this order:
# - i686-nacl/lib
# - x86_64-nacl/lib32
# - x86_64-nacl/lib
# The last path is wrong but is not used when the lib is found before,
# so it is meant to work on well-formed SDK installations.
list(APPEND CMAKE_FIND_ROOT_PATH "${SAIGOSDK_PREFIX}/x86_64-nacl")
list(APPEND CMAKE_FIND_ROOT_PATH "${SAIGOSDK_DIR}/x86_64-nacl")
set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX "32")
endif()
Loading