--- a/libltdl/config/general.m4sh
+++ b/libltdl/config/general.m4sh
@@ -45,15 +45,22 @@ progpath="$0"
 M4SH_VERBATIM([[
 : ${CP="cp -f"}
 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="@EGREP@"}
-: ${FGREP="@FGREP@"}
-: ${GREP="@GREP@"}
 : ${LN_S="@LN_S@"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="@SED@"}
+if test -n "$STAGING_DIR"; then
+	: ${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
+	: ${EGREP="@EGREP@"}
+	: ${FGREP="@FGREP@"}
+	: ${GREP="@GREP@"}
+	: ${SED="@SED@"}
+fi
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
--- a/libtoolize.in
+++ b/libtoolize.in
@@ -326,15 +326,22 @@ as_unset=as_fn_unset
 
 : ${CP="cp -f"}
 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="@EGREP@"}
-: ${FGREP="@FGREP@"}
-: ${GREP="@GREP@"}
 : ${LN_S="@LN_S@"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="@SED@"}
+if test -n "$STAGING_DIR"; then
+	: ${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
+	: ${EGREP="@EGREP@"}
+	: ${FGREP="@FGREP@"}
+	: ${GREP="@GREP@"}
+	: ${SED="@SED@"}
+fi
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
@@ -2476,10 +2483,17 @@ func_check_macros ()
 
   # Locations for important files:
   prefix=@prefix@
-  datadir=@datadir@
-  pkgdatadir=@pkgdatadir@
-  pkgltdldir=@pkgdatadir@
-  aclocaldir=@aclocaldir@
+  if test -n "$STAGING_DIR"; then
+    datadir="$STAGING_DIR/../host/share"
+    pkgdatadir="$STAGING_DIR/../host/share/libtool"
+    pkgltdldir="$STAGING_DIR/../host/share/libtool"
+    aclocaldir="$STAGING_DIR/../host/share/aclocal"
+  else
+    datadir=@datadir@
+    pkgdatadir=@pkgdatadir@
+    pkgltdldir=@pkgdatadir@
+    aclocaldir=@aclocaldir@
+  fi
   auxdir=
   macrodir=
   configure_ac=configure.in
--- a/libtoolize.m4sh
+++ b/libtoolize.m4sh
@@ -1450,10 +1450,17 @@ func_check_macros ()
 
   # Locations for important files:
   prefix=@prefix@
-  datadir=@datadir@
-  pkgdatadir=@pkgdatadir@
-  pkgltdldir=@pkgdatadir@
-  aclocaldir=@aclocaldir@
+  if test -n "$STAGING_DIR"; then
+    datadir="$STAGING_DIR/../host/share"
+    pkgdatadir="$STAGING_DIR/../host/share/libtool"
+    pkgltdldir="$STAGING_DIR/../host/share/libtool"
+    aclocaldir="$STAGING_DIR/../host/share/aclocal"
+  else
+    datadir=@datadir@
+    pkgdatadir=@pkgdatadir@
+    pkgltdldir=@pkgdatadir@
+    aclocaldir=@aclocaldir@
+  fi
   auxdir=
   macrodir=
   configure_ac=configure.in
--- a/libltdl/m4/libtool.m4
+++ b/libltdl/m4/libtool.m4
@@ -875,9 +875,8 @@ dnl AC_DEFUN([AC_LIBTOOL_RC], [])
 # ----------------
 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:-$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
 
@@ -7509,9 +7508,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:-$STAGING_DIR}/../host/bin/grep"], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], ["\${STAGING_DIR:-$STAGING_DIR}/../host/bin/grep -E"], [An ERE matcher])
+_LT_DECL([], [FGREP], ["\${STAGING_DIR:-$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])
 ])
@@ -7544,9 +7543,8 @@ AC_SUBST([DLLTOOL])
 # 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:-$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
