aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Orling <tim.orling@konsulko.com>2023-02-18 13:50:54 -0800
committerTim Orling <tim.orling@konsulko.com>2023-02-18 15:01:25 -0800
commitd0fd1f0ec4f053afbc1f9787b9ea6ff6b1775cd3 (patch)
tree3b039efbcade9622947be9da64f00f2d2581bf3d
parent9680fe771c18f436eef04797368993f46669ae6e (diff)
downloadmeta-openembedded-contrib-timo/nodejs_ninja.tar.gz
nodejs: improve build time with ninjatimo/nodejs_ninja
Add patch from buildroot to enable cross-compiling with ninja. https://github.com/nodejs/node/issues/46690 https://github.com/nodejs/node/issues/37441 https://github.com/buildroot/buildroot/commit/a712b5f61b54a72d5bdc4076a85f76011fd8a50f Submitted upstream: https://github.com/nodejs/gyp-next/pull/185 Signed-off-by: Tim Orling <tim.orling@konsulko.com>
-rw-r--r--meta-oe/recipes-devtools/nodejs/nodejs/0003-include-obj-name-in-shared-intermediate.patch45
-rw-r--r--meta-oe/recipes-devtools/nodejs/nodejs_18.12.1.bb4
2 files changed, 48 insertions, 1 deletions
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0003-include-obj-name-in-shared-intermediate.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0003-include-obj-name-in-shared-intermediate.patch
new file mode 100644
index 0000000000..a510216177
--- /dev/null
+++ b/meta-oe/recipes-devtools/nodejs/nodejs/0003-include-obj-name-in-shared-intermediate.patch
@@ -0,0 +1,45 @@
+From e6e691d093de440e0f408d48971e2b7332a07d58 Mon Sep 17 00:00:00 2001
+From: Min RK <benjaminrk@gmail.com>
+Date: Fri, 19 Feb 2021 11:57:04 +0100
+Subject: [PATCH] include obj name in shared intermediate
+
+avoids duplicate ninja rules for v8 used in host and target
+
+From: https://github.com/minrk/node/commit/5e533cb943eef68b270f55f0cba02c0ec67c699d
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+
+Upstream-Status: Submitted [https://github.com/nodejs/gyp-next/pull/185]
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ tools/gyp/pylib/gyp/generator/ninja.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/tools/gyp/pylib/gyp/generator/ninja.py b/tools/gyp/pylib/gyp/generator/ninja.py
+index d173bf2299..efaeee53ef 100644
+--- a/tools/gyp/pylib/gyp/generator/ninja.py
++++ b/tools/gyp/pylib/gyp/generator/ninja.py
+@@ -42,7 +42,7 @@ generator_default_variables = {
+ # the start of a string, while $| is used for variables that can appear
+ # anywhere in a string.
+ "INTERMEDIATE_DIR": "$!INTERMEDIATE_DIR",
+- "SHARED_INTERMEDIATE_DIR": "$!PRODUCT_DIR/gen",
++ "SHARED_INTERMEDIATE_DIR": "$!PRODUCT_DIR/$|OBJ/gen",
+ "PRODUCT_DIR": "$!PRODUCT_DIR",
+ "CONFIGURATION_NAME": "$|CONFIGURATION_NAME",
+ # Special variables that may be used by gyp 'rule' targets.
+@@ -285,6 +285,12 @@ class NinjaWriter:
+ CONFIGURATION_NAME = "$|CONFIGURATION_NAME"
+ path = path.replace(CONFIGURATION_NAME, self.config_name)
+
++ obj = "obj"
++ if self.toolset != "target":
++ obj += "." + self.toolset
++
++ path = path.replace("$|OBJ", obj)
++
+ return path
+
+ def ExpandRuleVariables(self, path, root, dirname, source, ext, name):
+--
+2.37.3
+
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_18.12.1.bb b/meta-oe/recipes-devtools/nodejs/nodejs_18.12.1.bb
index f8b7f76f61..d410f13f85 100644
--- a/meta-oe/recipes-devtools/nodejs/nodejs_18.12.1.bb
+++ b/meta-oe/recipes-devtools/nodejs/nodejs_18.12.1.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=dfd7ae796baf5326016a3865ee1dc632"
CVE_PRODUCT = "nodejs node.js"
-DEPENDS = "openssl"
+DEPENDS = "openssl ninja-native"
DEPENDS:append:class-target = " qemu-native"
DEPENDS:append:class-native = " c-ares-native"
@@ -28,6 +28,7 @@ SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
file://0001-liftoff-Correct-function-signatures.patch \
file://0001-mips-Use-32bit-cast-for-operand-on-mips32.patch \
file://gcc13.patch \
+ file://0003-include-obj-name-in-shared-intermediate.patch \
"
SRC_URI:append:class-target = " \
@@ -146,6 +147,7 @@ do_configure () {
GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
# $TARGET_ARCH settings don't match --dest-cpu settings
python3 configure.py --verbose --prefix=${prefix} \
+ --ninja \
--shared-openssl \
--without-dtrace \
--without-etw \