summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Golle2024-07-06 23:59:13 +0000
committerDaniel Golle2024-09-24 18:48:43 +0000
commit72accd078f20ed2a5caaa12b1bea463f40aadd73 (patch)
treeeaa812736c13ec5c3fb91e8febfe13de2bef34f8
parentd84fecfaf2f140786ad4dd971c69660b1deae942 (diff)
downloadopenwrt-72accd078f20ed2a5caaa12b1bea463f40aadd73.tar.gz
tools/flex: respect STAGING_DIR_HOST
flex currently leaks the path of m4 as found on the build host. While it is possible to override this using the M4 environment variable (which we always did for autotools based builds) when using CMake or Ninja the M4 variable is not set. One easy fix is to make flex take STAGING_DIR_HOST into account and expect m4 there if that variable is set in the environment. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r--tools/flex/patches/300-m4-path.patch23
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/flex/patches/300-m4-path.patch b/tools/flex/patches/300-m4-path.patch
new file mode 100644
index 0000000000..48e376f276
--- /dev/null
+++ b/tools/flex/patches/300-m4-path.patch
@@ -0,0 +1,23 @@
+--- a/src/main.c
++++ b/src/main.c
+@@ -213,6 +213,8 @@ int main (int argc, char *argv[])
+
+ void check_options (void)
+ {
++ const char * staging_dir = NULL;
++ char * m4_staging = NULL;
+ int i;
+ const char * m4 = NULL;
+
+@@ -341,7 +343,10 @@ void check_options (void)
+
+ /* Setup the filter chain. */
+ output_chain = filter_create_int(NULL, filter_tee_header, headerfilename);
+- if ( !(m4 = getenv("M4"))) {
++ if ( (staging_dir = getenv("STAGING_DIR_HOST"))) {
++ asprintf(&m4_staging, "%s/bin/m4", staging_dir);
++ m4 = m4_staging;
++ } else if ( !(m4 = getenv("M4"))) {
+ char *slash;
+ m4 = M4;
+ if ((slash = strrchr(M4, '/')) != NULL) {