From 70a05f4aacdbc54b05bea47298ef11bbfc8ca623 Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Wed, 4 Nov 2026 14:28:37 +0100 Subject: [PATCH 1/5] cmake: only detect NaCl architectures on -DBUILD_GAME_NACL_TARGETS=native --- cmake/DaemonGame.cmake | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cmake/DaemonGame.cmake b/cmake/DaemonGame.cmake index b4c449fd8f..b3d110de02 100644 --- a/cmake/DaemonGame.cmake +++ b/cmake/DaemonGame.cmake @@ -97,7 +97,11 @@ if (NOT GAME_BUILD_SUBINVOCATION) if ("${nacl_target}" STREQUAL "all") list(APPEND nacl_target_list ${NACL_ALL_TARGETS}) elseif ("${nacl_target}" STREQUAL "native") - list(APPEND nacl_target_list "${YOKAI_TARGET_ARCH_NAME}") + daemon_detect_nacl_arch("${YOKAI_TARGET_ARCH_NAME}") + + foreach(detected_target IN LISTS DAEMON_NACL_ARCH_NAME_LIST) + list(APPEND nacl_target_list "${detected_target}") + endforeach() elseif ("${nacl_target}" STREQUAL "none") set(nacl_target_list "") else() @@ -106,13 +110,9 @@ if (NOT GAME_BUILD_SUBINVOCATION) endforeach() foreach(nacl_target IN LISTS nacl_target_list) - daemon_detect_nacl_arch("${nacl_target}") - - foreach(detected_target IN LISTS DAEMON_NACL_ARCH_NAME_LIST) - if (NOT "${detected_target}" IN_LIST NACL_TARGETS) - list(APPEND NACL_TARGETS "${detected_target}") - endif() - endforeach() + if (NOT "${nacl_target}" IN_LIST NACL_TARGETS) + list(APPEND NACL_TARGETS "${nacl_target}") + endif() endforeach() foreach(nacl_target IN LISTS NACL_TARGETS) From 09988b66fc0fddcf7989c1cc61f5e0349b6497d5 Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Wed, 4 Nov 2026 14:40:06 +0100 Subject: [PATCH 2/5] cmake: explain why the PNaCl SDK is not usable when cross-compiling No functional change. --- cmake/DaemonGame.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/DaemonGame.cmake b/cmake/DaemonGame.cmake index b3d110de02..d21a357d42 100644 --- a/cmake/DaemonGame.cmake +++ b/cmake/DaemonGame.cmake @@ -77,6 +77,7 @@ if (NOT GAME_BUILD_SUBINVOCATION) set(HAS_NACL_SDK ON) elseif (CMAKE_SYSTEM_NAME STREQUAL CMAKE_HOST_SYSTEM_NAME AND (YOKAI_TARGET_ARCH_AMD64 OR YOKAI_TARGET_ARCH_I686)) + # The PNaCL SDK is part of the target deps and then is not usable when cross-compiling. # The PNaCl SDK only runs on amd64 or i686. set(HAS_NACL_SDK ON) endif() From 2e02239a9aa6ea8984449a6aac546b4fa8c3831d Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Wed, 4 Nov 2026 14:39:05 +0100 Subject: [PATCH 3/5] cmake: do not append NaCl targets twice (once for all instead of once for both cgame and sgame) Do not display the available NaCl targets twice in the BUILD_GAME_NACL_TARGETS cmake help message. No functionnal change. --- cmake/DaemonGame.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/DaemonGame.cmake b/cmake/DaemonGame.cmake index d21a357d42..04b25b3ac9 100644 --- a/cmake/DaemonGame.cmake +++ b/cmake/DaemonGame.cmake @@ -82,7 +82,7 @@ if (NOT GAME_BUILD_SUBINVOCATION) set(HAS_NACL_SDK ON) endif() - list(APPEND NACL_ALL_TARGETS "amd64" "i686" "armhf") + set(NACL_ALL_TARGETS "amd64" "i686" "armhf") if (HAS_NACL_SDK) include(DaemonNaclArchitecture) From 84b6a2ce7fcf91423420150b02a88bf1978765e9 Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Wed, 4 Nov 2026 14:51:14 +0100 Subject: [PATCH 4/5] cmake: unset the nacl target list before each game iteration, also unset it properly elsewhere Deduplicate the internal cmake list content. No functionnal change. --- cmake/DaemonGame.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/DaemonGame.cmake b/cmake/DaemonGame.cmake index 04b25b3ac9..46a72a5597 100644 --- a/cmake/DaemonGame.cmake +++ b/cmake/DaemonGame.cmake @@ -94,6 +94,8 @@ if (NOT GAME_BUILD_SUBINVOCATION) mark_as_advanced(BUILD_GAME_NACL_TARGETS) if (BUILD_GAME_NACL) + unset(nacl_target_list) + foreach(nacl_target ${BUILD_GAME_NACL_TARGETS}) if ("${nacl_target}" STREQUAL "all") list(APPEND nacl_target_list ${NACL_ALL_TARGETS}) @@ -104,7 +106,7 @@ if (NOT GAME_BUILD_SUBINVOCATION) list(APPEND nacl_target_list "${detected_target}") endforeach() elseif ("${nacl_target}" STREQUAL "none") - set(nacl_target_list "") + unset(nacl_target_list) else() list(APPEND nacl_target_list "${nacl_target}") endif() @@ -126,7 +128,7 @@ if (NOT GAME_BUILD_SUBINVOCATION) endif() else() set(BUILD_GAME_NACL OFF) - set(NACL_TARGETS "") + unset(NACL_TARGETS) endif() endif() From bbebd1c4c94bbab15a6db44264e69532c1898498 Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Thu, 5 Nov 2026 14:18:19 +0100 Subject: [PATCH 5/5] cmake: use list(REMOVE_DUPLICATES NACL_TARGETS) --- cmake/DaemonGame.cmake | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/cmake/DaemonGame.cmake b/cmake/DaemonGame.cmake index 46a72a5597..c3040c4816 100644 --- a/cmake/DaemonGame.cmake +++ b/cmake/DaemonGame.cmake @@ -94,30 +94,26 @@ if (NOT GAME_BUILD_SUBINVOCATION) mark_as_advanced(BUILD_GAME_NACL_TARGETS) if (BUILD_GAME_NACL) - unset(nacl_target_list) + unset(NACL_TARGETS) foreach(nacl_target ${BUILD_GAME_NACL_TARGETS}) if ("${nacl_target}" STREQUAL "all") - list(APPEND nacl_target_list ${NACL_ALL_TARGETS}) + list(APPEND NACL_TARGETS ${NACL_ALL_TARGETS}) elseif ("${nacl_target}" STREQUAL "native") daemon_detect_nacl_arch("${YOKAI_TARGET_ARCH_NAME}") foreach(detected_target IN LISTS DAEMON_NACL_ARCH_NAME_LIST) - list(APPEND nacl_target_list "${detected_target}") + list(APPEND NACL_TARGETS "${detected_target}") endforeach() elseif ("${nacl_target}" STREQUAL "none") - unset(nacl_target_list) + unset(NACL_TARGETS) else() - list(APPEND nacl_target_list "${nacl_target}") - endif() - endforeach() - - foreach(nacl_target IN LISTS nacl_target_list) - if (NOT "${nacl_target}" IN_LIST NACL_TARGETS) list(APPEND NACL_TARGETS "${nacl_target}") endif() endforeach() + list(REMOVE_DUPLICATES NACL_TARGETS) + foreach(nacl_target IN LISTS NACL_TARGETS) if (NOT nacl_target IN_LIST NACL_ALL_TARGETS) message(FATAL_ERROR "Invalid NaCl target ${nacl_target}, must be one of ${NACL_ALL_TARGETS}")