From 44b5c4623225748a025ed3bdc8c6df4d6e5b0b5b Mon Sep 17 00:00:00 2001 From: kichikuou Date: Fri, 21 Aug 2026 08:54:22 +0900 Subject: [PATCH] emscripten: Add JSPI build option --- CMakeLists.txt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9746d2a..23cd7d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,8 @@ if (ANDROID) target_link_libraries(system3 PRIVATE SDL2 SDL2_ttf ymfm ${ndk_log}) elseif (EMSCRIPTEN) + option(JSPI "Use JavaScript Promise Integration instead of Asyncify" OFF) + add_executable(system3) target_sources(system3 PRIVATE @@ -62,16 +64,23 @@ elseif (EMSCRIPTEN) # Without optimizations, Asyncify generates very large code. list(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG "-O1") + if (JSPI) + target_link_options(system3 PRIVATE -sJSPI) + else() + target_link_options(system3 PRIVATE + -sASYNCIFY=1 + -sASYNCIFY_IGNORE_INDIRECT=1 + -sASYNCIFY_REMOVE=SDL_Delay + "-sASYNCIFY_ADD=NACT::execute()" + ) + endif() + target_link_options(system3 PRIVATE -sENVIRONMENT=web -sMODULARIZE=1 -sEXPORT_ES6=1 - -sASYNCIFY=1 - -sASYNCIFY_IGNORE_INDIRECT=1 - -sASYNCIFY_REMOVE=SDL_Delay -sALLOW_MEMORY_GROWTH=1 -sNO_EXIT_RUNTIME=1 - "-sASYNCIFY_ADD=NACT::execute()" -sEXPORTED_FUNCTIONS=_main,_malloc -sEXPORTED_RUNTIME_METHODS=FS,IDBFS,HEAPU8,HEAP16,getValue,addRunDependency,removeRunDependency,stringToUTF8OnStack --emit-tsd=system3.d.ts