From 584545ff217a2e523a8a044846c6506f15f0d49f Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Fri, 2 Aug 2024 13:32:29 +0200 Subject: [PATCH 1/3] Run CuraEngine wasm with pthread support Revised target_link_options for better readability and maintainability by using the "SHELL:" prefix for each option. Additionally, removed the ENABLE_THREADING variable from conanfile.py as threading support is now handled directly in the build options. Contribute to NP-334 --- CMakeLists.txt | 29 ++++++++++++++++++++++++++++- conanfile.py | 1 - 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2287e8f92d..b20a64d134 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -270,7 +270,34 @@ endif () if (CMAKE_CXX_PLATFORM_ID STREQUAL "emscripten") message(STATUS "Building for Emscripten") - target_link_options(_CuraEngine PUBLIC -Wno-unused-command-line-argument -sINVOKE_RUN=0 -sEXPORT_NAME=CuraEngine -sEXPORTED_RUNTIME_METHODS=[callMain,FS] -sFORCE_FILESYSTEM=1 -sALLOW_MEMORY_GROWTH=1 -sEXPORT_ES6=1 -sMODULARIZE=1 -sSINGLE_FILE=1 -sENVIRONMENT=worker -sERROR_ON_UNDEFINED_SYMBOLS=0 -lembind --embind-emit-tsd CuraEngine.d.ts) + target_link_options(_CuraEngine + PUBLIC + "SHELL:-sINVOKE_RUN=0" + "SHELL:-sEXPORT_NAME=CuraEngine" + "SHELL:-sEXPORTED_RUNTIME_METHODS=[callMain,FS]" + "SHELL:-sFORCE_FILESYSTEM=1" + "SHELL:-sALLOW_MEMORY_GROWTH=1" # TODO: Figure out what to do with this ALLOW_MEMORY_GROWTH may run non-wasm code slowly, see https://github.com/WebAssembly/design/issues/1271 + "SHELL:-sEXPORT_ES6=1" + "SHELL:-sMODULARIZE=1" + "SHELL:-sSINGLE_FILE=1" + "SHELL:-sENVIRONMENT=worker" + "SHELL:-sERROR_ON_UNDEFINED_SYMBOLS=0" + "SHELL:-sWASM_BIGINT=1" + "SHELL:-sUSE_PTHREADS=1" + "SHELL:-sPTHREAD_POOL_SIZE_STRICT=0" + "SHELL:-sWASM_MEM_MAX=2GB" + "SHELL:-sSHARED_MEMORY=1" + "SHELL:-sSUPPORT_LONGJMP=1" + "SHELL:-sALLOW_MEMORY_GROWTH=1" + "SHELL:-sSTACK_SIZE=196608" # three times the default stack size https://emscripten.org/docs/tools_reference/settings_reference.html?highlight=environment#stack-size + $<$:SHELL:-sASSERTIONS=2> + $<$:SHELL:-sSAFE_HEAP=1> + $<$:SHELL:-sSTACK_OVERFLOW_CHECK=2> + $<$:SHELL:-g3> + $<$:SHELL:-gsource-map> + "SHELL:-lembind" + "SHELL:--embind-emit-tsd CuraEngine.d.ts" + ) endif () target_link_libraries(CuraEngine PRIVATE diff --git a/conanfile.py b/conanfile.py index 8672d9a94b..68fab759ad 100644 --- a/conanfile.py +++ b/conanfile.py @@ -145,7 +145,6 @@ def generate(self): tc.variables["ENABLE_BENCHMARKS"] = self.options.enable_benchmarks tc.variables["EXTENSIVE_WARNINGS"] = self.options.enable_extensive_warnings tc.variables["OLDER_APPLE_CLANG"] = self.settings.compiler == "apple-clang" and Version(self.settings.compiler.version) < "14" - tc.variables["ENABLE_THREADING"] = not (self.settings.arch == "wasm" and self.settings.os == "Emscripten") if self.options.get_safe("enable_sentry", False): tc.variables["ENABLE_SENTRY"] = True tc.variables["SENTRY_URL"] = self.conf.get("user.curaengine:sentry_url", "", check_type=str) From 8e87b0db3fb22a8359fea7fa1be2d86c3b4e6d8d Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Fri, 2 Aug 2024 13:37:00 +0200 Subject: [PATCH 2/3] Package the CuraEngine.worker.js Contribute to NP-334 --- conanfile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/conanfile.py b/conanfile.py index 68fab759ad..c8ef4e178d 100644 --- a/conanfile.py +++ b/conanfile.py @@ -231,6 +231,7 @@ def package(self): ext = "" copy(self, f"CuraEngine{ext}", src=self.build_folder, dst=path.join(self.package_folder, "bin")) copy(self, f"*.d.ts", src=self.build_folder, dst=path.join(self.package_folder, "bin")) + copy(self, f"*.worker.js", src=self.build_folder, dst=path.join(self.package_folder, "bin")) copy(self, f"_CuraEngine.*", src=self.build_folder, dst=path.join(self.package_folder, "lib")) copy(self, "LICENSE*", src=self.source_folder, dst=path.join(self.package_folder, "license")) From d1ba188c53edada2d17998f6209f6294c8a84492 Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Fri, 2 Aug 2024 15:38:13 +0200 Subject: [PATCH 3/3] Remove ALLOW_MEMORY_GROWTH flag from CMakeLists.txt Contribute to NP-334 --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b20a64d134..5a8e7664ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -288,7 +288,6 @@ if (CMAKE_CXX_PLATFORM_ID STREQUAL "emscripten") "SHELL:-sWASM_MEM_MAX=2GB" "SHELL:-sSHARED_MEMORY=1" "SHELL:-sSUPPORT_LONGJMP=1" - "SHELL:-sALLOW_MEMORY_GROWTH=1" "SHELL:-sSTACK_SIZE=196608" # three times the default stack size https://emscripten.org/docs/tools_reference/settings_reference.html?highlight=environment#stack-size $<$:SHELL:-sASSERTIONS=2> $<$:SHELL:-sSAFE_HEAP=1>