You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by rp...@apache.org on 2023/03/10 10:54:03 UTC

svn commit: r1908248 - in /apr/apr/trunk: apr-config.in configure.in

Author: rpluem
Date: Fri Mar 10 10:54:03 2023
New Revision: 1908248

URL: http://svn.apache.org/viewvc?rev=1908248&view=rev
Log:
Fix crosscompiling detection in apr-1-config

Since r1872148 apr-1-config tries to detect if it runs in a crosscompile
scenario. Fix the detection to correctly distinguish between crosscompiling
and DESTDIR installations for packaging.

* configure.in: Set APR_CROSS_COMPILING to 'no', 'yes' or 'maybe' based on
      possible --host and --build parameters given to configure to determine
      if configure was called for a crosscompiling scenario. This was inspired
      by how autoconf itself detects crosscompiling scenarios.
* apr-config.in: Use the value from APR_CROSS_COMPILING to determine if
      we are in a crosscompiling scenario. Furthermore normalize the pathes
      we use for suffix matches by collapsing multiple consecutive '/' to one.

PR: 66510

Modified:
    apr/apr/trunk/apr-config.in
    apr/apr/trunk/configure.in

Modified: apr/apr/trunk/apr-config.in
URL: http://svn.apache.org/viewvc/apr/apr/trunk/apr-config.in?rev=1908248&r1=1908247&r2=1908248&view=diff
==============================================================================
--- apr/apr/trunk/apr-config.in (original)
+++ apr/apr/trunk/apr-config.in Fri Mar 10 10:54:03 2023
@@ -48,13 +48,28 @@ APR_LIBNAME="@APR_LIBNAME@"
 # NOTE: the following line is modified during 'make install': alter with care!
 location=@APR_CONFIG_LOCATION@
 
-# absolute path, but not installed path - we're cross compiling
-case "$0" in
-  "${bindir}/"*) ;;
-  "/"*)         location=crosscompile;
-                APR_TARGET_DIR=${0%${bindir}/apr-${APR_MAJOR_VERSION}-config} ;;
-  *)            ;;
-esac
+cross_compiling=@APR_CROSS_COMPILING@
+
+if test "$cross_compiling" != "no"; then
+
+    # Normalize $0 and bindir by removing consecutive '/' as the comparison
+    # and the suffix removal below might fail for semantic equal pathes.
+    # XXX: This is not perfect. On Linux we could use realpath for this purpose
+    # but realpath is not portable.
+    normalized_command=`echo $0 | tr -s /`
+    normalized_bindir=`echo ${bindir} | tr -s /`
+    # Remove trailing '/'
+    normalized_bindir=${normalized_bindir%/}
+
+    # absolute path, but not installed path - we're cross compiling
+    case "$normalized_command" in
+      "${normalized_bindir}/"*) ;;
+      "/"*)                     location=crosscompile;
+                                APR_TARGET_DIR=${normalized_command%${normalized_bindir}/apr-${APR_MAJOR_VERSION}-config};
+                                ;;
+      *)                        ;;
+    esac
+fi
 
 show_usage()
 {

Modified: apr/apr/trunk/configure.in
URL: http://svn.apache.org/viewvc/apr/apr/trunk/configure.in?rev=1908248&r1=1908247&r2=1908248&view=diff
==============================================================================
--- apr/apr/trunk/configure.in (original)
+++ apr/apr/trunk/configure.in Fri Mar 10 10:54:03 2023
@@ -150,6 +150,18 @@ fi
 
 AC_SUBST(APR_CONFIG_LOCATION)
 
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    APR_CROSS_COMPILING=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    APR_CROSS_COMPILING=yes
+  fi
+else
+    APR_CROSS_COMPILING=no
+fi
+
+AC_SUBST(APR_CROSS_COMPILING)
+
 # Libtool might need this symbol -- it must point to the location of
 # the generated libtool script (not necessarily the "top" build dir).
 #