From ca10caa502f971f90d8c041aa2476de54ef0ce2b Mon Sep 17 00:00:00 2001
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
Date: Tue, 20 Jul 2021 16:41:11 -0300
Subject: librecmc: make relocatable, search resources relative to STAGING_DIR

This was originally commited to librecmc by Jo-Philipp Wich
<jow@openwrt.org>.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>

--- a/libtoolize.in
+++ b/libtoolize.in
@@ -38,14 +38,23 @@
 # with bootstrap, so set those here where they can still be over-
 # ridden by the user, but otherwise take precedence.
 
-: ${AUTOCONF="autoconf"}
-: ${AUTOMAKE="automake"}
-: ${EGREP="@EGREP@"}
-: ${FGREP="@FGREP@"}
-: ${GREP="@GREP@"}
 : ${LN_S="@LN_S@"}
-: ${SED="@SED@"}
 
+if test -n "$STAGING_DIR_HOST"; then
+	: ${AUTOCONF="$STAGING_DIR_HOST/bin/autoconf"}
+	: ${AUTOMAKE="$STAGING_DIR_HOST/bin/automake"}
+	: ${EGREP="$STAGING_DIR_HOST/bin/grep -E"}
+	: ${FGREP="$STAGING_DIR_HOST/bin/grep -F"}
+	: ${GREP="$STAGING_DIR_HOST/bin/grep"}
+	: ${SED="$STAGING_DIR_HOST/bin/sed"}
+else
+	: ${AUTOCONF="autoconf"}
+	: ${AUTOMAKE="automake"}
+	: ${EGREP="@EGREP@"}
+	: ${FGREP="@FGREP@"}
+	: ${GREP="@GREP@"}
+	: ${SED="@SED@"}
+fi
 
 ## -------------------------- ##
 ## Source external libraries. ##
@@ -1903,11 +1912,21 @@ func_require_seen_libtool ()
   pkgmacro_files="@pkgmacro_files@"
 
   # Locations for important files:
-  prefix="@prefix@"
-  datadir="@datadir@"
-  pkgauxdir="@pkgauxdir@"
-  pkgltdldir="@pkgdatadir@"
-  aclocaldir="@aclocaldir@"
+  if test -n "$STAGING_DIR_HOST"; then
+    prefix="$STAGING_DIR_HOST"
+    datadir="$STAGING_DIR_HOST/share"
+    pkgauxdir="$STAGING_DIR_HOST/share/libtool/build-aux"
+    pkgdatadir="$STAGING_DIR_HOST/share/libtool"
+    pkgltdldir="$STAGING_DIR_HOST/share/libtool"
+    aclocaldir="$STAGING_DIR_HOST/share/aclocal"
+  else
+    prefix="@prefix@"
+    datadir="@datadir@"
+    pkgauxdir="@pkgauxdir@"
+    pkgdatadir="@pkgdatadir@"
+    pkgltdldir="@pkgdatadir@"
+    aclocaldir="@aclocaldir@"
+  fi
 
   # Allow the user to override the master libtoolize repository:
   if test -n "$_lt_pkgdatadir"; then
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -933,7 +933,7 @@ m4_defun([_LT_TAG_COMPILER],
 [AC_REQUIRE([AC_PROG_CC])dnl
 
 _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], ["-O2 -I\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/include"], [LTCC compiler flags])dnl
 _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
 _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
 
@@ -8183,9 +8183,9 @@ m4_defun([_LT_DECL_EGREP],
 [AC_REQUIRE([AC_PROG_EGREP])dnl
 AC_REQUIRE([AC_PROG_FGREP])dnl
 test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
+_LT_DECL([], [GREP], ["\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/bin/grep"], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], ["\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/bin/grep -E"], [An ERE matcher])
+_LT_DECL([], [FGREP], ["\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/bin/grep -F"], [A literal string matcher])
 dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
 AC_SUBST([GREP])
 ])
@@ -8226,9 +8226,8 @@ _LT_DECL([], [FILECMD], [1], [A file(cmd
 # as few characters as possible.  Prefer GNU sed if found.
 m4_defun([_LT_DECL_SED],
 [AC_PROG_SED
-test -z "$SED" && SED=sed
 Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [SED], ["\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/bin/sed"], [A sed program that does not truncate output])
 _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
     [Sed that helps us avoid accidentally triggering echo(1) options like -n])
 ])# _LT_DECL_SED
