[PATCH 2/3] configure: use AC_PROG_SED to detect a suitable sed

Bill Roberts bill.roberts at arm.com
Thu Oct 16 19:01:40 CEST 2025


Invoke AC_PROG_SED to ensure a portable, working sed is available
instead of assuming one is present and risking obscure configure-time
failures. Replace direct sed invocations with the detected $(SED)
variable so the build consistently uses the correct version.

Signed-off-by: Bill Roberts <bill.roberts at arm.com>
---
 configure.ac | 41 +++++++++++++++++++----------------------
 1 file changed, 19 insertions(+), 22 deletions(-)

diff --git a/configure.ac b/configure.ac
index d91d740d2..4d1921ee2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -84,6 +84,7 @@ AM_MAINTAINER_MODE
 
 # Check for extra tools needed by configure
 AC_PROG_GREP
+AC_PROG_SED
 
 AC_ARG_ENABLE(assert,
 AS_HELP_STRING([--enable-assert],[enable ASSERT checking [default=no]]),
@@ -280,7 +281,7 @@ if test $enable_fake_cpuid = yes && test $enable_fat = no ; then
 fi
 
 
-tmp_host=`echo $host_cpu | sed 's/\./_/'`
+tmp_host=`echo $host_cpu | $SED 's/\./_/'`
 AC_DEFINE_UNQUOTED(HAVE_HOST_CPU_$tmp_host)
 GMP_DEFINE_RAW("define_not_for_expansion(\`HAVE_HOST_CPU_$tmp_host')", POST)
 
@@ -2163,7 +2164,7 @@ for abi in $abilist; do
   # $gcc_cflags becomes a fallback for $gcc_32_cflags (the last in the
   # abilist), but there's no fallback for $gcc_64_cflags.
   #
-  abi1=[`echo _$abi | sed 's/[.]//g'`]
+  abi1=[`echo _$abi | $SED 's/[.]//g'`]
   if test $abi = $abi_last; then abi2=; else abi2="$abi1"; fi
 
   # Compiler choices under this ABI
@@ -2179,7 +2180,7 @@ for abi in $abilist; do
     # CC="/usr/local/bin/gcc -pipe" will give "gcc".
     #
     for ccbase in $CC; do break; done
-    ccbase=`echo $ccbase | sed 's:.*/::'`
+    ccbase=`echo $ccbase | $SED 's:.*/::'`
 
     # If this $ccbase is in $cclist_chosen then it's a compiler we know and
     # we can do flags defaulting with it.  If not, then $cclist_chosen is
@@ -2463,7 +2464,7 @@ if test $found_compiler = yes; then
   CPPFLAGS="$cppflags"
 
   # Could easily have this in config.h too, if desired.
-  ABI_nodots=`echo $ABI | sed 's/\./_/'`
+  ABI_nodots=`echo $ABI | $SED 's/\./_/'`
   GMP_DEFINE_RAW("define_not_for_expansion(\`HAVE_ABI_$ABI_nodots')", POST)
 
   eval GMP_NONSTD_ABI=\"\$GMP_NONSTD_ABI_$ABI_nodots\"
@@ -2582,7 +2583,7 @@ if test $enable_cxx != no; then
     cxxflags_cflags=$CFLAGS
     cxxflags_list="cflags $cxxflags_list"
     if test "$ac_prog_cxx_g" = no; then
-      cxxflags_cflags=`echo "$cxxflags_cflags" | sed -e 's/ -g //' -e 's/^-g //' -e 's/ -g$//'`
+      cxxflags_cflags=`echo "$cxxflags_cflags" | $SED -e 's/ -g //' -e 's/^-g //' -e 's/ -g$//'`
     fi
   fi
 
@@ -2710,10 +2711,6 @@ echo "      MPN_PATH=\"$path\""
 
 CL_AS_NOEXECSTACK
 
-AC_PROG_SED
-# FIXME: AC_PROG_SED above is a hack (LT_PATH_NM uses $SED), it normally
-# happens as part of LT_INIT, and we are not supposed to call LT_PATH_NM before
-# LT_INIT, but the comments in acinclude.m4 say we want it before LT_INIT...
 GMP_PROG_AR
 GMP_PROG_NM
 
@@ -3326,7 +3323,7 @@ DECL_$tmp_fbase (__MPN(${tmp_fbase}_init));" >>fat.h
     tmp_mparam=$srcdir/mpn/$tmp_dir/gmp-mparam.h
     if test -f $tmp_mparam; then
       for tmp_tn in $fat_thresholds; do
-        tmp_thresh=`sed -n "s/^#define $tmp_tn[ 	]*\\([0-9][0-9]*\\).*$/\\1/p" $tmp_mparam`
+        tmp_thresh=`$SED -n "s/^#define $tmp_tn[ 	]*\\([0-9][0-9]*\\).*$/\\1/p" $tmp_mparam`
         if test -n "$tmp_thresh"; then
           THRESH_ASM_SETUP=["${THRESH_ASM_SETUP}define($tmp_tn,$tmp_thresh)
 "]
@@ -3354,7 +3351,7 @@ DECL_$tmp_fbase (__MPN(${tmp_fbase}_init));" >>fat.h
 	    # If the host uses a non-standard ABI, check if tmp_file supports it
 	    #
 	    if test -n "$GMP_NONSTD_ABI" && test $tmp_ext != "c"; then
-	      abi=[`sed -n 's/^[ 	]*ABI_SUPPORT(\(.*\))/\1/p' $tmp_file `]
+	      abi=[`$SED -n 's/^[ 	]*ABI_SUPPORT(\(.*\))/\1/p' $tmp_file `]
 	      if echo "$abi" | $GREP -q "\\b${GMP_NONSTD_ABI}\\b"; then
 		true
 	      else
@@ -3369,7 +3366,7 @@ DECL_$tmp_fbase (__MPN(${tmp_fbase}_init));" >>fat.h
 
             # carry-in variant, eg. divrem_1c or modexact_1c_odd
             case $tmp_fbase in
-              *_1*) tmp_fbasec=`echo $tmp_fbase | sed 's/_1/_1c/'` ;;
+              *_1*) tmp_fbasec=`echo $tmp_fbase | $SED 's/_1/_1c/'` ;;
               *)    tmp_fbasec=${tmp_fbase}c ;;
             esac
 
@@ -3508,12 +3505,12 @@ for tmp_fn in $gmp_mpn_functions; do
                 # to operate on full limbs
                 ;;
               *)
-                nails=[`sed -n 's/^[ 	]*NAILS_SUPPORT(\(.*\))/\1/p' $tmp_file `]
+                nails=[`$SED -n 's/^[ 	]*NAILS_SUPPORT(\(.*\))/\1/p' $tmp_file `]
                 for n in $nails; do
                   case $n in
                   *-*)
-                    n_start=`echo "$n" | sed -n 's/\(.*\)-.*/\1/p'`
-                    n_end=`echo "$n" | sed -n 's/.*-\(.*\)/\1/p'`
+                    n_start=`echo "$n" | $SED -n 's/\(.*\)-.*/\1/p'`
+                    n_end=`echo "$n" | $SED -n 's/.*-\(.*\)/\1/p'`
                     ;;
                   *)
                     n_start=$n
@@ -3535,7 +3532,7 @@ for tmp_fn in $gmp_mpn_functions; do
 	  # If the host uses a non-standard ABI, check if tmp_file supports it
 	  #
 	  if test -n "$GMP_NONSTD_ABI" && test $tmp_ext != "c"; then
-	    abi=[`sed -n 's/^[ 	]*ABI_SUPPORT(\(.*\))/\1/p' $tmp_file `]
+	    abi=[`$SED -n 's/^[ 	]*ABI_SUPPORT(\(.*\))/\1/p' $tmp_file `]
 	    if echo "$abi" | $GREP -q "\\b${GMP_NONSTD_ABI}\\b"; then
 	      true
 	    else
@@ -3561,8 +3558,8 @@ for tmp_fn in $gmp_mpn_functions; do
           # that multi-function files get grepped here repeatedly.
           # The PROLOGUE pattern excludes the optional second parameter.
           gmp_ep=[`
-            sed -n 's/^[ 	]*MULFUNC_PROLOGUE(\(.*\))/\1/p' $tmp_file ;
-            sed -n 's/^[ 	]*PROLOGUE(\([^,]*\).*)/\1/p' $tmp_file
+            $SED -n 's/^[ 	]*MULFUNC_PROLOGUE(\(.*\))/\1/p' $tmp_file ;
+            $SED -n 's/^[ 	]*PROLOGUE(\([^,]*\).*)/\1/p' $tmp_file
           `]
           for gmp_tmp in $gmp_ep; do
             AC_DEFINE_UNQUOTED(HAVE_NATIVE_$gmp_tmp)
@@ -3744,7 +3741,7 @@ fi
 
 if test "$gmp_asm_syntax_testing" != no; then
   SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="`echo $SAVE_CFLAGS | sed 's;-flto[[-=a-z0-9]]*;;g'`"
+  CFLAGS="`echo $SAVE_CFLAGS | $SED 's;-flto[[-=a-z0-9]]*;;g'`"
   GMP_ASM_TEXT
   GMP_ASM_DATA
   GMP_ASM_LABEL_SUFFIX
@@ -3921,7 +3918,7 @@ AC_DEFINE_UNQUOTED(GMP_MPARAM_H_SUGGEST, "$gmp_mparam_source",
 #
 if test -z "$fat_path"; then
   for i in SQR_TOOM2_THRESHOLD BMOD_1_TO_MOD_1_THRESHOLD SHLD_SLOW SHRD_SLOW; do
-    value=`sed -n 's/^#define '$i'[ 	]*\([0-9A-Z][0-9A-Z_]*\).*$/\1/p' $gmp_mparam_source`
+    value=`$SED -n 's/^#define '$i'[ 	]*\([0-9A-Z][0-9A-Z_]*\).*$/\1/p' $gmp_mparam_source`
     if test -n "$value"; then
       GMP_DEFINE_RAW(["define(<$i>,<$value>)"])
     fi
@@ -3954,7 +3951,7 @@ GMP_DEFINE_RAW(["define(<SIZEOF_UNSIGNED>,<$ac_cv_sizeof_unsigned>)"])
 # probably wouldn't want to be fatal, none of the libgmp assembler code
 # depends on ulong.
 #
-mparam_bits=[`sed -n 's/^#define GMP_LIMB_BITS[ 	][ 	]*\([0-9]*\).*$/\1/p' $gmp_mparam_source`]
+mparam_bits=[`$SED -n 's/^#define GMP_LIMB_BITS[ 	][ 	]*\([0-9]*\).*$/\1/p' $gmp_mparam_source`]
 if test -n "$mparam_bits" && test "$mparam_bits" -ne $GMP_LIMB_BITS; then
   if test "$test_CFLAGS" = set; then
     AC_MSG_ERROR([Oops, mp_limb_t is $GMP_LIMB_BITS bits, but the assembler code
@@ -3982,7 +3979,7 @@ TUNE_SQR_OBJ=
 test -d tune || mkdir tune
 case $sqr_basecase_source in
   *.asm)
-    sqr_max=[`sed -n 's/^def...(SQR_TOOM2_THRESHOLD_MAX, *\([0-9]*\))/\1/p' $sqr_basecase_source`]
+    sqr_max=[`$SED -n 's/^def...(SQR_TOOM2_THRESHOLD_MAX, *\([0-9]*\))/\1/p' $sqr_basecase_source`]
     if test -n "$sqr_max"; then
       TUNE_SQR_OBJ=sqr_asm.o
       AC_DEFINE_UNQUOTED(TUNE_SQR_TOOM2_MAX,$sqr_max,
-- 
2.51.0



More information about the gmp-devel mailing list