From ffb0c4ecc99c935e05ddeb4a3da38d126759fc72 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Wed, 4 Jun 2025 13:37:31 +0100 Subject: [PATCH 1/4] Fix the case where there is an @ in the absolute path of sysroot and XEUS_CPP_RESOURCE_DIR in Emscripten build --- CMakeLists.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 15f010ee..db09011d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -446,6 +446,19 @@ if(EMSCRIPTEN) xeus_cpp_set_kernel_options(xcpp) xeus_wasm_compile_options(xcpp) xeus_wasm_link_options(xcpp "web,worker") + if (SYSROOT_PATH MATCHES "@") + execute_process( + COMMAND ln -s ${SYSROOT_PATH} + ) + set(SYSROOT_PATH_ORIGINAL ${SYSROOT_PATH}) + set(SYSROOT_PATH "./sysroot/") + endif() + if (XEUS_CPP_RESOURCE_DIR MATCHES "@") + execute_process( + COMMAND ln -s ${XEUS_CPP_RESOURCE_DIR} + ) + set(XEUS_CPP_RESOURCE_DIR "./${CPPINTEROP_LLVM_VERSION_MAJOR}") + endif() target_link_options(xcpp PUBLIC "SHELL: -s USE_SDL=2" PUBLIC "SHELL: --preload-file ${SYSROOT_PATH}/include@/include" @@ -460,6 +473,11 @@ endif() if(XEUS_CPP_BUILD_TESTS) add_subdirectory(test) + if (SYSROOT_PATH_ORIGINAL MATCHES "@") + execute_process( + COMMAND ln -s ${SYSROOT_PATH_ORIGINAL} "${CMAKE_CURRENT_BINARY_DIR}/test/" + ) + endif() endif() # Installation From d91bc7d9acc773fa0ae79873eb59130192131cc5 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Tue, 10 Jun 2025 08:44:49 +0100 Subject: [PATCH 2/4] Update CMakeLists.txt to Sylvian suggestion --- CMakeLists.txt | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index db09011d..aa0d73ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -447,17 +447,10 @@ if(EMSCRIPTEN) xeus_wasm_compile_options(xcpp) xeus_wasm_link_options(xcpp "web,worker") if (SYSROOT_PATH MATCHES "@") - execute_process( - COMMAND ln -s ${SYSROOT_PATH} - ) - set(SYSROOT_PATH_ORIGINAL ${SYSROOT_PATH}) - set(SYSROOT_PATH "./sysroot/") + string(REPLACE "@" "@@" SYSROOT_PATH "${SYSROOT_PATH}") endif() if (XEUS_CPP_RESOURCE_DIR MATCHES "@") - execute_process( - COMMAND ln -s ${XEUS_CPP_RESOURCE_DIR} - ) - set(XEUS_CPP_RESOURCE_DIR "./${CPPINTEROP_LLVM_VERSION_MAJOR}") + string(REPLACE "@" "@@" XEUS_CPP_RESOURCE_DIR "${XEUS_CPP_RESOURCE_DIR}") endif() target_link_options(xcpp PUBLIC "SHELL: -s USE_SDL=2" @@ -473,11 +466,6 @@ endif() if(XEUS_CPP_BUILD_TESTS) add_subdirectory(test) - if (SYSROOT_PATH_ORIGINAL MATCHES "@") - execute_process( - COMMAND ln -s ${SYSROOT_PATH_ORIGINAL} "${CMAKE_CURRENT_BINARY_DIR}/test/" - ) - endif() endif() # Installation From 4cc070f8008779e2992c8f3f7acb77535a17ebe6 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Tue, 10 Jun 2025 13:34:12 +0100 Subject: [PATCH 3/4] preload escaped directories Emscripten build --- CMakeLists.txt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aa0d73ab..bae22f4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -446,16 +446,12 @@ if(EMSCRIPTEN) xeus_cpp_set_kernel_options(xcpp) xeus_wasm_compile_options(xcpp) xeus_wasm_link_options(xcpp "web,worker") - if (SYSROOT_PATH MATCHES "@") - string(REPLACE "@" "@@" SYSROOT_PATH "${SYSROOT_PATH}") - endif() - if (XEUS_CPP_RESOURCE_DIR MATCHES "@") - string(REPLACE "@" "@@" XEUS_CPP_RESOURCE_DIR "${XEUS_CPP_RESOURCE_DIR}") - endif() + string(REPLACE "@" "@@" ESCAPED_SYSROOT_PATH "${SYSROOT_PATH}") + string(REPLACE "@" "@@" ESCAPED_XEUS_CPP_RESOURCE_DIR "${XEUS_CPP_RESOURCE_DIR}") target_link_options(xcpp PUBLIC "SHELL: -s USE_SDL=2" - PUBLIC "SHELL: --preload-file ${SYSROOT_PATH}/include@/include" - PUBLIC "SHELL: --preload-file ${XEUS_CPP_RESOURCE_DIR}@/${CMAKE_INSTALL_LIBDIR}/clang/${CPPINTEROP_LLVM_VERSION_MAJOR}" + PUBLIC "SHELL: --preload-file ${ESCAPED_SYSROOT_PATH}/include@/include" + PUBLIC "SHELL: --preload-file ${ESCAPED_XEUS_CPP_RESOURCE_DIR}@/${CMAKE_INSTALL_LIBDIR}/clang/${CPPINTEROP_LLVM_VERSION_MAJOR}" PUBLIC "SHELL: --preload-file ${XEUS_CPP_DATA_DIR}@/share/xeus-cpp" PUBLIC "SHELL: --preload-file ${XEUS_CPP_CONF_DIR}@/etc/xeus-cpp" PUBLIC "SHELL: --post-js ${CMAKE_CURRENT_SOURCE_DIR}/wasm_patches/post.js" From 17e25ce1ed0ed8640ec23dc730094bd63bd302b9 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Tue, 10 Jun 2025 13:35:34 +0100 Subject: [PATCH 4/4] Use escaped variable preloaded files Emscripten build --- test/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 54e47732..aa74d23a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -75,7 +75,7 @@ if(EMSCRIPTEN) PUBLIC "SHELL: -s EXIT_RUNTIME=1" PUBLIC "SHELL: -s STACK_SIZE=32mb" PUBLIC "SHELL: -s INITIAL_MEMORY=128mb" - PUBLIC "SHELL: --preload-file ${SYSROOT_PATH}/include@/include" + PUBLIC "SHELL: --preload-file ${ESCAPED_SYSROOT_PATH}/include@/include" PUBLIC "SHELL: --preload-file ../${XEUS_CPP_DATA_DIR}@/share/xeus-cpp" PUBLIC "SHELL: --preload-file ../${XEUS_CPP_CONF_DIR}@/etc/xeus-cpp" PUBLIC "SHELL: --emrun"