Skip to content

Commit dcf133a

Browse files
committed
Add Emscripten support in Conan package: handle JS/WASM assets and set threading option
1 parent decbdab commit dcf133a

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

conanfile.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ def build_requirements(self):
121121
def config_options(self):
122122
if self.settings.os == "Windows":
123123
del self.options.fPIC
124+
if self.settings.os == "Emscripten":
125+
self.options.threading = "std" # Default to a supported option
124126

125127
def configure(self):
126128
if self.options.shared:
@@ -164,14 +166,17 @@ def deploy(self):
164166
copy(self, "*", src=os.path.join(self.package_folder, "bin"), dst=self.install_folder)
165167

166168
def package(self):
167-
copy(self, pattern="libnest2d_js*", src=os.path.join(self.build_folder, "libnest2d_js"),
168-
dst=os.path.join(self.package_folder, "bin"))
169-
copy(self, f"*.d.ts", src=self.build_folder, dst=os.path.join(self.package_folder, "bin"), keep_path = False)
170-
copy(self, f"*.js", src=self.build_folder, dst=os.path.join(self.package_folder, "bin"), keep_path = False)
171-
copy(self, f"*.wasm", src=self.build_folder, dst=os.path.join(self.package_folder, "bin"), keep_path = False)
172169
packager = AutoPackager(self)
173170
packager.run()
174171

172+
# Specifically handle the Emscripten assets
173+
if self.settings.os == "Emscripten":
174+
bin_dir = os.path.join(self.package_folder, "bin")
175+
build_dir = self.build_folder
176+
copy(self, "libnest2d_js.js", build_dir, bin_dir)
177+
copy(self, "libnest2d_js.wasm", build_dir, bin_dir)
178+
copy(self, "*.d.ts", build_dir, bin_dir, keep_path=False)
179+
175180
# Remove the header files from options not used in this package
176181
if self.options.geometries != "clipper":
177182
files.rmdir(self, os.path.join(self.package_folder, "include", "libnest2d", "backends", "clipper"))
@@ -192,3 +197,6 @@ def package_info(self):
192197
# npm package json for Emscripten builds
193198
if self.settings.os == "Emscripten" or self.options.get_safe("with_js_bindings", False):
194199
self.python_requires["npmpackage"].module.conf_package_json(self)
200+
# Expose the path to the JS/WASM assets for consumers
201+
js_asset_path = os.path.join(self.package_folder, "bin")
202+
self.conf_info.define("user.nest2d:js_path", js_asset_path)

0 commit comments

Comments
 (0)