Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
a32958e
external_deps: add smart_copy
illwieckz Jun 25, 2026
bb88d3d
external_deps: do not copy WASI into WASI
illwieckz Jun 25, 2026
37f8e02
external_deps: better wasmtime copy
illwieckz Jun 25, 2026
ae48cbe
external_deps: better sdl3 copy
illwieckz Jun 25, 2026
20f665b
external_deps: better copy in extract()
illwieckz Jun 25, 2026
78eeb17
external_deps: build naclruntime with CMake
illwieckz Jun 25, 2026
6891e9d
external_deps: make possible to reconfigure for a different target
illwieckz Jun 25, 2026
4f3413e
external_deps: make defaults resetable with setup_default()
illwieckz Jun 25, 2026
c1908dc
cmake,external_deps: expect loader be packaged with architecture suff…
illwieckz Jun 26, 2026
8b68d9d
external_deps: repackage saigosdk
illwieckz Jun 25, 2026
499dd9d
cmake: use Saigo by default to compile NaCl binaries
illwieckz Jun 26, 2026
aa99472
external_deps: build pkg-config as a native tool
illwieckz Jun 26, 2026
84119b5
external_deps: build nasm as a native tool
illwieckz Jun 26, 2026
6f5440c
external_deps: build jwasm as a native tool
illwieckz Jun 26, 2026
a60ea0f
cmake,framework: Append the architecture name to nacl_loader and nacl…
illwieckz Jun 26, 2026
e366750
external_deps: upgrade sdl3
illwieckz Jun 26, 2026
1f5a938
external_deps: upgrade zlib
illwieckz Jun 26, 2026
bd3b40b
external_deps: upgrade nettle
illwieckz Jun 26, 2026
c174a28
external_deps: upgrade curl
illwieckz Jun 26, 2026
6bc6b8d
external_deps: upgrade glew
illwieckz Jun 26, 2026
fee2a11
external_deps: upgrade png
illwieckz Jun 26, 2026
76b96ed
external_deps: upgrade jpeg
illwieckz Jun 26, 2026
8020a3c
external_deps: do not upgrade openal
illwieckz Jun 26, 2026
f09fdd9
external_deps: upgrade opus
illwieckz Jun 26, 2026
805d01d
external_deps: disable the GPU framework
illwieckz Jun 26, 2026
58c1eb2
external_deps: make possible to loop the cmake build
illwieckz Jun 27, 2026
3b09634
external_deps: extract platform components
illwieckz Jun 25, 2026
4a11505
external_deps: add macos-arm64-default
illwieckz Jun 26, 2026
082036c
external_deps: rework the cmake toolchain configuration
illwieckz Jun 27, 2026
e2138f9
external_deps: rework the macos configuration
illwieckz Jun 27, 2026
776f8e1
external_deps: deduplicate files with hardlinks before making the tar…
illwieckz Jun 27, 2026
2e207cb
external_deps: tell xz to use extreme compression
illwieckz Jun 27, 2026
3f95c9b
external_deps: make EXE_EXT reusable
illwieckz Jun 25, 2026
fe74199
cmake: download macos-arm64 deps archive
illwieckz Jun 27, 2026
5413442
external_deps: deduplicate nacl from pnacl copy code
illwieckz Jun 27, 2026
d3ad418
external_deps: provide a reusable framework for building native tools…
illwieckz Jun 26, 2026
7107e03
ci/azure: macos-arm64
illwieckz Jun 27, 2026
20a14e3
wat
illwieckz Jun 27, 2026
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
26 changes: 8 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ else()
endif()

# Dependencies version, this must match the number in external_deps/build.sh
set(DEPS_VERSION 11)
set(DEPS_VERSION 12)

option(USE_EXTERNAL_DEPS "Download or reuse dependencies from EXTERNAL_DEPS_DIR (mandatory for building and running NaCl .nexe binaries)." ON)

Expand Down Expand Up @@ -220,17 +220,7 @@ if (USE_EXTERNAL_DEPS AND NOT YOKAI_TARGET_SYSTEM_NACL)
set(SUPPORTED_${DEPS_SYSTEM}_ARCH amd64 i686)
elseif (YOKAI_TARGET_SYSTEM_MACOS)
set(DEPS_SYSTEM macos)
set(SUPPORTED_${DEPS_SYSTEM}_ARCH amd64)

if (YOKAI_TARGET_ARCH_ARM64)
set(DEPS_ARCH amd64)

set_deps_dir()

if (NOT EXISTS ${DEPS_DIR})
set(DEFAULT_USE_EXTERNAL_DEPS_LIBS OFF)
endif()
endif()
set(SUPPORTED_${DEPS_SYSTEM}_ARCH amd64 arm64)
elseif (YOKAI_TARGET_SYSTEM_LINUX)
set(DEPS_SYSTEM linux)
set(SUPPORTED_${DEPS_SYSTEM}_ARCH amd64 i686 arm64 armhf)
Expand Down Expand Up @@ -973,8 +963,8 @@ if (DEPS_DIR AND HAS_NACL AND (BUILD_CLIENT OR BUILD_TTY_CLIENT OR BUILD_SERVER
# The NaCl loader and IRT are required to load .nexe files
add_custom_command(TARGET runtime_deps PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${DEPS_DIR}/nacl_loader${CMAKE_EXECUTABLE_SUFFIX}
${FULL_OUTPUT_DIR}/nacl_loader${CMAKE_EXECUTABLE_SUFFIX}
${DEPS_DIR}/nacl_loader-${DAEMON_NACL_ARCH_NAME}${CMAKE_EXECUTABLE_SUFFIX}
${FULL_OUTPUT_DIR}/nacl_loader-${DAEMON_NACL_ARCH_NAME}${CMAKE_EXECUTABLE_SUFFIX}
)

add_custom_command(TARGET runtime_deps PRE_BUILD
Expand All @@ -986,8 +976,8 @@ if (DEPS_DIR AND HAS_NACL AND (BUILD_CLIENT OR BUILD_TTY_CLIENT OR BUILD_SERVER
# Linux uses a bootstrap program to reserve address space
if (YOKAI_TARGET_SYSTEM_LINUX_COMPATIBILITY)
if (YOKAI_TARGET_ARCH_ARM64)
add_executable(nacl_helper_bootstrap-armhf tools/nacl_helper_bootstrap-armhf/nacl_helper_bootstrap-armhf.cpp)
add_dependencies(runtime_deps nacl_helper_bootstrap-armhf)
add_executable(nacl_helper_bootstrap-ldarmhf tools/nacl_helper_bootstrap-ldarmhf/nacl_helper_bootstrap-ldarmhf.cpp)
add_dependencies(runtime_deps nacl_helper_bootstrap-ldarmhf)

add_custom_command(TARGET runtime_deps PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
Expand All @@ -1003,8 +993,8 @@ if (DEPS_DIR AND HAS_NACL AND (BUILD_CLIENT OR BUILD_TTY_CLIENT OR BUILD_SERVER

add_custom_command(TARGET runtime_deps PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${DEPS_DIR}/nacl_helper_bootstrap
${FULL_OUTPUT_DIR}/nacl_helper_bootstrap
${DEPS_DIR}/nacl_helper_bootstrap-${DAEMON_NACL_ARCH_NAME}
${FULL_OUTPUT_DIR}/nacl_helper_bootstrap-${DAEMON_NACL_ARCH_NAME}
)
endif()

Expand Down
20 changes: 16 additions & 4 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,19 @@ pr:
- .gitmodules

jobs:
- job: Mac
- job: macOS
pool:
vmImage: 'macOS-15'
strategy:
matrix:
AppleClang amd64:
MACOS_ARCH: x86_64
MACOS_VERSION: 10.14
TEST: true
AppleClang arm64:
MACOS_ARCH: arm64
MACOS_VERSION: 11.7
TEST: false
steps:
- bash: |
set -e
Expand Down Expand Up @@ -56,12 +66,14 @@ jobs:
cmake --version
export CFLAGS='-Wno-c++14-extensions'
export CXXFLAGS='-Wno-c++14-extensions'
cmake -Wdev -Wdeprecated -DUSE_PRECOMPILED_HEADER=0 -DUSE_WERROR=1 -DBE_VERBOSE=1 -DCMAKE_BUILD_TYPE=Release -DBUILD_DUMMY_APP=1 -DBUILD_DUMMY_GAMELOGIC=1 -DBUILD_TESTS=1 -H. -Bbuild
cmake -Wdev -Wdeprecated -DCMAKE_OSX_ARCHITECTURES=${MACOS_ARCH} -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOS_VERSION} -DPREFER_EXTERNAL_LIBS=OFF -DUSE_PRECOMPILED_HEADER=0 -DUSE_WERROR=1 -DBE_VERBOSE=1 -DCMAKE_BUILD_TYPE=Release -DBUILD_DUMMY_APP=1 -DBUILD_DUMMY_GAMELOGIC=1 -DBUILD_TESTS=1 -H. -Bbuild
cmake --build build -- -j`sysctl -n hw.logicalcpu`
displayName: 'Build'
- bash: |
set -e
build/test-ttyclient -pakpath pkg -set fs_basepak daemon -set vm.cgame.type 3
if "${TEST}"; then
set -e
build/test-ttyclient -pakpath pkg -set fs_basepak daemon -set vm.cgame.type 3
fi
displayName: 'Test'

- job: Linux
Expand Down
2 changes: 1 addition & 1 deletion cmake/DaemonNacl.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

# Native client

option(USE_NACL_SAIGO "Use Saigo toolchain to build NaCl executables" OFF)
option(USE_NACL_SAIGO "Use the Saigo toolchain to build NaCl executables" ON)

if (YOKAI_TARGET_SYSTEM_NACL)
# Build nexe binary.
Expand Down
43 changes: 24 additions & 19 deletions cmake/DaemonNaclHost.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,18 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

function(daemon_detect_nacl_arch)
set(arch_name "${YOKAI_TARGET_ARCH_NAME}")
set(nacl_arch "${arch_name}")
set(target_arch "${YOKAI_TARGET_ARCH_NAME}")
set(nacl_arch "${target_arch}")

if (YOKAI_TARGET_SYSTEM_LINUX_COMPATIBILITY OR YOKAI_TARGET_SYSTEM_XDG_COMPATIBILITY)
set(armhf_usage "arm64;armel")
if ("${arch_name}" IN_LIST armhf_usage)
# Load 32-bit armhf nexe on 64-bit arm64 engine on Linux with multiarch.
# The nexe is system agnostic so there should be no difference with armel.
set(nacl_arch "armhf")
set(armhf_usage "arm64" "armel")
set(box64_usage "ppc64el" "riscv64")

set(box64_usage ppc64el riscv64)
if ("${arch_name}" IN_LIST box64_usage)
if ("${target_arch}" IN_LIST armhf_usage)
# Load 32-bit armhf nexe on 64-bit arm64 engine on Linux with multiarch.
# The nexe is system agnostic so there should be no difference with armel.
set(nacl_arch "armhf")
elseif ("${target_arch}" IN_LIST box64_usage)
option(DAEMON_NACL_BOX64_EMULATION "Use Box64 to emulate x86_64 NaCl loader on unsupported platforms" ON)
if (DAEMON_NACL_BOX64_EMULATION)
# Use Box64 to run x86_64 NaCl loader and amd64 nexe.
Expand All @@ -45,27 +45,32 @@ function(daemon_detect_nacl_arch)
add_definitions(-DDAEMON_NACL_BOX64_EMULATION)
endif()
endif()
endif()

elseif (DAEMON_TARGET_SYSTEM_MACOS)
if ("${arch_name}" STREQUAL "arm64")
elseif (YOKAI_TARGET_SYSTEM_MACOS)
if ("${target_arch}" STREQUAL "arm64")
# You can get emulated NaCl going like this:
# cp external_deps/macos-amd64-default_10/{nacl_loader,irt_core-amd64.nexe} build/
set(nacl_arch "amd64")
endif()
endif()

string(TOUPPER "${nacl_arch_name}" nacl_arch_name_upper)

# The DAEMON_NACL_ARCH_NAME variable contributes to the nexe file name.
set(DAEMON_NACL_ARCH_NAME "${nacl_arch}" PARENT_SCOPE)
set(DAEMON_NACL_ARCH_NAME_UPPER "${nacl_arch_upper}" PARENT_SCOPE)
string(TOUPPER "${nacl_arch}" nacl_arch_upper)

# NaCl runtime is only available on architectures that have a NaCl loader.
set(nacl_runtime_arch amd64 i686 armhf)
set(nacl_runtime_arch "amd64" "i686" "armhf")
if ("${nacl_arch}" IN_LIST nacl_runtime_arch)
message(STATUS "Detected NaCl architecture: ${nacl_arch}")

add_definitions(-DDAEMON_NACL_RUNTIME_ENABLED)
else()
set(nacl_arch "unknown")

message(STATUS "No NaCl architecture detected")
endif()

# The DAEMON_NACL_ARCH_NAME variable contributes to the nexe file name.
set(DAEMON_NACL_ARCH_NAME "${nacl_arch}" PARENT_SCOPE)

set(DAEMON_NACL_ARCH_NAME_UPPER "${nacl_arch_upper}" PARENT_SCOPE)
endfunction()

daemon_detect_nacl_arch()
Expand Down
Loading
Loading