From: Stefan Herbrechtsmeier <stefan.herbrechtsme...@weidmueller.com>

Add a vendor class for npm to build a npm package from source.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsme...@weidmueller.com>
---

 meta/classes-recipe/vendor_npm_build.bbclass | 50 ++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 meta/classes-recipe/vendor_npm_build.bbclass

diff --git a/meta/classes-recipe/vendor_npm_build.bbclass 
b/meta/classes-recipe/vendor_npm_build.bbclass
new file mode 100644
index 0000000000..1cef316e01
--- /dev/null
+++ b/meta/classes-recipe/vendor_npm_build.bbclass
@@ -0,0 +1,50 @@
+# Copyright (C) 2025 Weidmueller Interface GmbH & Co. KG
+# Stefan Herbrechtsmeier <stefan.herbrechtsme...@weidmueller.com>
+#
+# SPDX-License-Identifier: MIT
+#
+
+NPM_BUILD_TARGET ?= "build"
+EXTRA_OENPM_BUILD ?= ""
+NPM_REBUILD ?= "1"
+
+inherit vendor_npm
+
+NPM_INSTALL_DEV = "1"
+NPM_PRUNE_DEV = "1"
+
+NPM_NATIVE_ARCH ?= "${@map_nodejs_arch(d.getVar("BUILD_ARCH"), d)}"
+
+NPM_BUILD_NATIVE_FLAGS = "\
+    ${NPM_COMMON_FLAGS} \
+    --arch=${NPM_NATIVE_ARCH} \
+    --target_arch=${NPM_NATIVE_ARCH} \
+"
+
+NPM_BUILD_NATIVE_ENVS = "\
+    CC="${BUILD_CC}" \
+    CXX="${BUILD_CXX}" \
+    LINK="${BUILD_CC}" \
+    AR="${BUILD_AR}" \
+    CPPFLAGS="${BUILD_CPPFLAGS}" \
+    CFLAGS="${BUILD_CFLAGS}" \
+    CXXFLAGS="${BUILD_CXXFLAGS}" \
+    LDFLAGS="${BUILD_LDFLAGS}" \
+"
+
+oe_run_npm_native() {
+    bbnote "${NPM_BUILD_NATIVE_ENVS} ${NPM} $@"
+    ${NPM_BUILD_NATIVE_ENVS} ${NPM} "$@"
+}
+
+vendor_npm_build_do_compile() {
+    oe_run_npm_native rebuild ${NPM_BUILD_NATIVE_FLAGS}
+
+    oe_run_npm_native run ${NPM_BUILD_TARGET} ${NPM_BUILD_NATIVE_FLAGS} 
${EXTRA_OENPM_BUILD}
+
+    if "${@['false', 'true'][oe.types.boolean(d.getVar('NPM_REBUILD'))]}"; then
+        vendor_npm_do_compile
+    fi
+}
+
+EXPORT_FUNCTIONS do_compile
-- 
2.39.5

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#211145): 
https://lists.openembedded.org/g/openembedded-core/message/211145
Mute This Topic: https://lists.openembedded.org/mt/111123543/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to