From 1a4ce81e74bed6741f97fea4fb2563a0649b4d6d Mon Sep 17 00:00:00 2001 From: mcbarton Date: Sun, 25 May 2025 18:47:29 +0100 Subject: [PATCH 1/4] Make LLVM_RESOURCE_DIR an option that can be provided by the user --- CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 914b5a30..c326387c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,8 @@ if(XEUS_CPP_ENABLE_CODE_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") endif() if(EMSCRIPTEN) + # Other options + option(LLVM_RESOURCE_DIR "Emscripten LLVM resource directory" "unknown") add_compile_definitions(XEUS_CPP_EMSCRIPTEN_WASM_BUILD) message("Build with emscripten") set(XEUS_CPP_BUILD_STATIC ON) @@ -435,10 +437,14 @@ if(EMSCRIPTEN) xeus_cpp_set_kernel_options(xcpp) xeus_wasm_compile_options(xcpp) xeus_wasm_link_options(xcpp "web,worker") + if(NOT DEFINED LLVM_RESOURCE_DIR) + set(LLVM_RESOURCE_DIR ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}) + message(STATUS "LLVM_RESOURCE_DIR not defined, using fallback value: ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}") + endif() target_link_options(xcpp PUBLIC "SHELL: -s USE_SDL=2" PUBLIC "SHELL: --preload-file ${SYSROOT_PATH}/include@/include" - PUBLIC "SHELL: --preload-file ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}@${XEUS_CPP_RESOURCE_DIR}" + PUBLIC "SHELL: --preload-file ${LLVM_RESOURCE_DIR}@${LLVM_RESOURCE_DIR}" 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 721260ed2cf26d4c7805cf9d1d441eaeefe784ec Mon Sep 17 00:00:00 2001 From: mcbarton Date: Sun, 25 May 2025 18:55:55 +0100 Subject: [PATCH 2/4] Update CMakeLists.txt --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c326387c..10e6d3d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,8 +75,6 @@ if(XEUS_CPP_ENABLE_CODE_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") endif() if(EMSCRIPTEN) - # Other options - option(LLVM_RESOURCE_DIR "Emscripten LLVM resource directory" "unknown") add_compile_definitions(XEUS_CPP_EMSCRIPTEN_WASM_BUILD) message("Build with emscripten") set(XEUS_CPP_BUILD_STATIC ON) From 5a7d6c85ad64f59ee15c8bc8d7cecad9b21566fc Mon Sep 17 00:00:00 2001 From: mcbarton Date: Mon, 26 May 2025 09:02:30 +0100 Subject: [PATCH 3/4] Change to clang resource dir instead of llvm resource dir --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 10e6d3d1..580b3076 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -435,14 +435,14 @@ if(EMSCRIPTEN) xeus_cpp_set_kernel_options(xcpp) xeus_wasm_compile_options(xcpp) xeus_wasm_link_options(xcpp "web,worker") - if(NOT DEFINED LLVM_RESOURCE_DIR) - set(LLVM_RESOURCE_DIR ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}) - message(STATUS "LLVM_RESOURCE_DIR not defined, using fallback value: ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}") + if(NOT DEFINED CLANG_RESOURCE_DIR) + set(CLANG_RESOURCE_DIR ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}) + message(STATUS "CLANG_RESOURCE_DIR not defined, using fallback value: ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}") endif() target_link_options(xcpp PUBLIC "SHELL: -s USE_SDL=2" PUBLIC "SHELL: --preload-file ${SYSROOT_PATH}/include@/include" - PUBLIC "SHELL: --preload-file ${LLVM_RESOURCE_DIR}@${LLVM_RESOURCE_DIR}" + PUBLIC "SHELL: --preload-file ${CLANG_RESOURCE_DIR}@${CLANG_RESOURCE_DIR}" 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 765e90d8dbdeabb5a80dfff1c30ba2b8cc9fda85 Mon Sep 17 00:00:00 2001 From: anutosh491 Date: Mon, 26 May 2025 15:02:19 +0530 Subject: [PATCH 4/4] Use xeus-cpp-resource-dir instead --- CMakeLists.txt | 15 +++++++-------- share/jupyter/kernels/xcpp17/wasm_kernel.json.in | 2 +- share/jupyter/kernels/xcpp20/wasm_kernel.json.in | 2 +- share/jupyter/kernels/xcpp23/wasm_kernel.json.in | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 580b3076..7e64f798 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,6 +111,11 @@ find_package(pugixml REQUIRED) # Configuration # ============= +if(NOT DEFINED XEUS_CPP_RESOURCE_DIR) + set(XEUS_CPP_RESOURCE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/clang/${CPPINTEROP_LLVM_VERSION_MAJOR}") + message(STATUS "Using clang resource dir headers from ${XEUS_CPP_RESOURCE_DIR}") +endif() + if (NOT DEFINED XEUS_CPP_KERNELSPEC_PATH) set(XEUS_CPP_KERNELSPEC_PATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/") endif () @@ -118,7 +123,6 @@ endif () function(configure_native_kernel kernel) set(XEUS_CPP_PATH "$ENV{PATH}") set(XEUS_CPP_LD_LIBRARY_PATH "$ENV{LD_LIBRARY_PATH}") - set(XEUS_CPP_RESOURCE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/clang/${CPPINTEROP_LLVM_VERSION_MAJOR}) set(XEUS_CPP_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include) if (WIN32) @@ -169,7 +173,6 @@ endfunction() message("Configure kernels: ...") if(EMSCRIPTEN) - set(XEUS_CPP_RESOURCE_DIR "/lib/clang/${CPPINTEROP_LLVM_VERSION_MAJOR}") configure_wasm_kernel("/share/jupyter/kernels/xcpp17/") configure_wasm_kernel("/share/jupyter/kernels/xcpp20/") configure_wasm_kernel("/share/jupyter/kernels/xcpp23/") @@ -435,14 +438,10 @@ if(EMSCRIPTEN) xeus_cpp_set_kernel_options(xcpp) xeus_wasm_compile_options(xcpp) xeus_wasm_link_options(xcpp "web,worker") - if(NOT DEFINED CLANG_RESOURCE_DIR) - set(CLANG_RESOURCE_DIR ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}) - message(STATUS "CLANG_RESOURCE_DIR not defined, using fallback value: ${CMAKE_INSTALL_PREFIX}${XEUS_CPP_RESOURCE_DIR}") - endif() target_link_options(xcpp PUBLIC "SHELL: -s USE_SDL=2" PUBLIC "SHELL: --preload-file ${SYSROOT_PATH}/include@/include" - PUBLIC "SHELL: --preload-file ${CLANG_RESOURCE_DIR}@${CLANG_RESOURCE_DIR}" + PUBLIC "SHELL: --preload-file ${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" @@ -539,4 +538,4 @@ if(EMSCRIPTEN) "$/xcpp.wasm" "$/xcpp.data" DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif () +endif () \ No newline at end of file diff --git a/share/jupyter/kernels/xcpp17/wasm_kernel.json.in b/share/jupyter/kernels/xcpp17/wasm_kernel.json.in index a6be99dd..e173fcda 100644 --- a/share/jupyter/kernels/xcpp17/wasm_kernel.json.in +++ b/share/jupyter/kernels/xcpp17/wasm_kernel.json.in @@ -2,7 +2,7 @@ "display_name": "C++17", "argv": [ "@XEUS_CPP_KERNELSPEC_PATH@xcpp", - "-resource-dir", "@XEUS_CPP_RESOURCE_DIR@", + "-resource-dir", "/lib/clang/@CPPINTEROP_LLVM_VERSION_MAJOR@", "-std=c++17" ], "language": "cpp", diff --git a/share/jupyter/kernels/xcpp20/wasm_kernel.json.in b/share/jupyter/kernels/xcpp20/wasm_kernel.json.in index ea792b9f..5aa4f0fd 100644 --- a/share/jupyter/kernels/xcpp20/wasm_kernel.json.in +++ b/share/jupyter/kernels/xcpp20/wasm_kernel.json.in @@ -2,7 +2,7 @@ "display_name": "C++20", "argv": [ "@XEUS_CPP_KERNELSPEC_PATH@xcpp", - "-resource-dir", "@XEUS_CPP_RESOURCE_DIR@", + "-resource-dir", "/lib/clang/@CPPINTEROP_LLVM_VERSION_MAJOR@", "-std=c++20" ], "language": "cpp", diff --git a/share/jupyter/kernels/xcpp23/wasm_kernel.json.in b/share/jupyter/kernels/xcpp23/wasm_kernel.json.in index 93ffa621..d9eac053 100644 --- a/share/jupyter/kernels/xcpp23/wasm_kernel.json.in +++ b/share/jupyter/kernels/xcpp23/wasm_kernel.json.in @@ -2,7 +2,7 @@ "display_name": "C++23", "argv": [ "@XEUS_CPP_KERNELSPEC_PATH@xcpp", - "-resource-dir", "@XEUS_CPP_RESOURCE_DIR@", + "-resource-dir", "/lib/clang/@CPPINTEROP_LLVM_VERSION_MAJOR@", "-std=c++23" ], "language": "cpp",