File 2074-otp-Always-use-CC-when-compiling-never-use-ld.patch of Package erlang
From 7aa257e676f38d7809ef2484a3f9df8fe4fe90a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Tue, 18 Feb 2025 11:44:03 +0100
Subject: [PATCH 04/10] otp: Always use $(CC) when compiling, never use ld
We do this as AC_LINK_IFELSE needs LDFLAGS to be in $(CC) format
to work and all OSs support using $(CC) as the linker.
---
erts/configure | 180 +++++++++++++++++-
erts/configure.ac | 1 +
lib/common_test/configure | 7 +
lib/crypto/configure | 199 ++++++++++++++++++--
lib/crypto/configure.ac | 1 +
lib/erl_interface/configure | 51 ++++--
lib/erl_interface/configure.ac | 3 +-
lib/megaco/configure | 200 ++++++++++++++++++--
lib/megaco/configure.ac | 1 +
lib/odbc/configure | 325 +++++++++++++++++----------------
lib/odbc/configure.ac | 4 +-
lib/snmp/configure | 7 +
lib/wx/configure | 171 +++++++++++++++++
lib/wx/configure.ac | 1 +
make/autoconf/otp.m4 | 56 ++++--
make/configure | 99 ++++++++--
make/configure.ac | 2 +-
17 files changed, 1068 insertions(+), 240 deletions(-)
diff --git a/erts/configure b/erts/configure
index 15525d24a4..af01db6952 100755
--- a/erts/configure
+++ b/erts/configure
@@ -665,7 +665,6 @@ EMU_LDFLAGS
M4
LIBRT
BITS64
-HAVE_VALGRIND
LIBSCTP
SYSTEMD_DAEMON_LIBS
SOCKET_LIBS
@@ -3668,6 +3667,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
@@ -6292,6 +6298,169 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+for ac_prog in ld.sh
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="${ac_tool_prefix}ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LD"; then
+ ac_ct_LD=$LD
+ # Extract the first word of "ld", so it can be a program name with args.
+set dummy ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$ac_ct_LD"; then
+ ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LD="ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+ac_ct_LD=$ac_cv_prog_ac_ct_LD
+if test -n "$ac_ct_LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
+printf "%s\n" "$ac_ct_LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_LD" = x; then
+ LD=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LD=$ac_ct_LD
+ fi
+else
+ LD="$ac_cv_prog_LD"
+fi
+
+ if test "$LD" = ":"
+then :
+ as_fn_error $? "No linker found" "$LINENO" 5
+else case e in #(
+ e)
+ printf "configure:$LINENO: %s\n" 'setting LD to ${CC}' >&5
+
+ LD=${CC} ;;
+esac
+fi
+
@@ -18913,15 +19082,6 @@ then :
fi
-HAVE_VALGRIND=no
-ac_fn_c_check_header_compile "$LINENO" "valgrind/valgrind.h" "ac_cv_header_valgrind_valgrind_h" "$ac_includes_default"
-if test "x$ac_cv_header_valgrind_valgrind_h" = xyes
-then :
- HAVE_VALGRIND=yes
-fi
-
-
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SO_BSDCOMPAT declaration" >&5
printf %s "checking for SO_BSDCOMPAT declaration... " >&6; }
if test ${ac_cv_decl_so_bsdcompat+y}
diff --git a/erts/configure.ac b/erts/configure.ac
index 51575051e1..76a5aab188 100644
--- a/erts/configure.ac
+++ b/erts/configure.ac
@@ -437,6 +437,7 @@ AC_LANG([C])
AC_PROG_CC
AC_SUBST(GCC)
+LM_PROG_LD
AC_PROG_CXX
AC_SUBST(CXXFLAGS)
diff --git a/lib/common_test/configure b/lib/common_test/configure
index ca6cf56084..d06625424a 100755
--- a/lib/common_test/configure
+++ b/lib/common_test/configure
@@ -1915,6 +1915,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
diff --git a/lib/crypto/configure b/lib/crypto/configure
index 12ee766cec..234bb54403 100755
--- a/lib/crypto/configure
+++ b/lib/crypto/configure
@@ -3034,6 +3034,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
@@ -4349,6 +4356,169 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+for ac_prog in ld.sh
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="${ac_tool_prefix}ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LD"; then
+ ac_ct_LD=$LD
+ # Extract the first word of "ld", so it can be a program name with args.
+set dummy ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$ac_ct_LD"; then
+ ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LD="ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+ac_ct_LD=$ac_cv_prog_ac_ct_LD
+if test -n "$ac_ct_LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
+printf "%s\n" "$ac_ct_LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_LD" = x; then
+ LD=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LD=$ac_ct_LD
+ fi
+else
+ LD="$ac_cv_prog_LD"
+fi
+
+ if test "$LD" = ":"
+then :
+ as_fn_error $? "No linker found" "$LINENO" 5
+else case e in #(
+ e)
+ printf "configure:$LINENO: %s\n" 'setting LD to ${CC}' >&5
+
+ LD=${CC} ;;
+esac
+fi
+
if test "X$windows_environment_" != "Xchecked"; then
@@ -5257,6 +5427,10 @@ See 'config.log' for more details" "$LINENO" 5; }
fi
USER_LD=$LD
+if test "$USER_LD" = '$(CC)'
+then :
+ USER_LD='$(DED_CC)'
+fi
USER_LDFLAGS="$LDFLAGS"
DED_CC=$CC
@@ -5581,12 +5755,11 @@ fi
# to be specified (cross compiling)
if test "x$DED_LD" = "x"; then
-DED_LDFLAGS_CONFTEST=
+ DED_LDFLAGS_CONFTEST=
-DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
-case $host_os in
+ DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
+ case $host_os in
win32)
- DED_LD="ld.sh"
DED_LDFLAGS="-dll"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
;;
@@ -5595,6 +5768,7 @@ case $host_os in
if test X${enable_m64_build} = Xyes; then
DED_LDFLAGS="-64 $DED_LDFLAGS"
fi
+ DED_LD="$CC"
;;
aix*|os400*)
DED_LDFLAGS="-G -bnoentry -bexpall"
@@ -5673,7 +5847,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
;;
linux*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared -Wl,-Bsymbolic"
if test X${enable_m64_build} = Xyes; then
@@ -5684,7 +5857,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
fi
;;
freebsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
if test X${enable_m64_build} = Xyes; then
@@ -5695,7 +5867,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
fi
;;
openbsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
;;
@@ -5709,14 +5880,16 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
DED_LDFLAGS="-shared"
# GNU linker has no option for 64bit build, should not propagate -m64
;;
-esac
+ esac
-if test "$DED_LD" = "" && test "$USER_LD" != ""; then
- DED_LD="$USER_LD"
- DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
-fi
+ if test "x$DED_LD" = "x" && test "$USER_LD" != ""; then
-DED_LIBS=$LIBS
+ printf "configure:$LINENO: %s\n" "setting DED_LD to $USER_LD" >&5
+
+ DED_LD="$USER_LD"
+ DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
+ fi
+ DED_LIBS=$LIBS
fi # "x$DED_LD" = "x"
diff --git a/lib/crypto/configure.ac b/lib/crypto/configure.ac
index fb31f7d350..e20bac8b95 100644
--- a/lib/crypto/configure.ac
+++ b/lib/crypto/configure.ac
@@ -53,6 +53,7 @@ AC_SUBST(CROSS_COMPILING)
ERL_XCOMP_SYSROOT_INIT
AC_PROG_CC
+LM_PROG_LD
LM_WINDOWS_ENVIRONMENT
ERL_DED
diff --git a/lib/erl_interface/configure b/lib/erl_interface/configure
index d3a2668d73..a4f2988207 100755
--- a/lib/erl_interface/configure
+++ b/lib/erl_interface/configure
@@ -2896,6 +2896,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
@@ -4648,7 +4655,7 @@ fi
test -n "$LD" && break
done
-if test -n "$ac_tool_prefix"; then
+ if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
set dummy ${ac_tool_prefix}ld; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -4738,7 +4745,7 @@ printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_LD" = x; then
- LD="'$(CC)'"
+ LD=":"
else
case $cross_compiling:$ac_tool_warned in
yes:)
@@ -4752,6 +4759,17 @@ else
LD="$ac_cv_prog_LD"
fi
+ if test "$LD" = ":"
+then :
+ as_fn_error $? "No linker found" "$LINENO" 5
+else case e in #(
+ e)
+ printf "configure:$LINENO: %s\n" 'setting LD to ${CC}' >&5
+
+ LD=${CC} ;;
+esac
+fi
+
ERL_DED_FLAT_BUNDLE=true
@@ -5003,6 +5021,10 @@ See 'config.log' for more details" "$LINENO" 5; }
fi
USER_LD=$LD
+if test "$USER_LD" = '$(CC)'
+then :
+ USER_LD='$(DED_CC)'
+fi
USER_LDFLAGS="$LDFLAGS"
DED_CC=$CC
@@ -5327,12 +5349,11 @@ fi
# to be specified (cross compiling)
if test "x$DED_LD" = "x"; then
-DED_LDFLAGS_CONFTEST=
+ DED_LDFLAGS_CONFTEST=
-DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
-case $host_os in
+ DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
+ case $host_os in
win32)
- DED_LD="ld.sh"
DED_LDFLAGS="-dll"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
;;
@@ -5341,6 +5362,7 @@ case $host_os in
if test X${enable_m64_build} = Xyes; then
DED_LDFLAGS="-64 $DED_LDFLAGS"
fi
+ DED_LD="$CC"
;;
aix*|os400*)
DED_LDFLAGS="-G -bnoentry -bexpall"
@@ -5419,7 +5441,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
;;
linux*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared -Wl,-Bsymbolic"
if test X${enable_m64_build} = Xyes; then
@@ -5430,7 +5451,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
fi
;;
freebsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
if test X${enable_m64_build} = Xyes; then
@@ -5441,7 +5461,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
fi
;;
openbsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
;;
@@ -5455,14 +5474,16 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
DED_LDFLAGS="-shared"
# GNU linker has no option for 64bit build, should not propagate -m64
;;
-esac
+ esac
-if test "$DED_LD" = "" && test "$USER_LD" != ""; then
- DED_LD="$USER_LD"
- DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
-fi
+ if test "x$DED_LD" = "x" && test "$USER_LD" != ""; then
+
+ printf "configure:$LINENO: %s\n" "setting DED_LD to $USER_LD" >&5
-DED_LIBS=$LIBS
+ DED_LD="$USER_LD"
+ DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
+ fi
+ DED_LIBS=$LIBS
fi # "x$DED_LD" = "x"
diff --git a/lib/erl_interface/configure.ac b/lib/erl_interface/configure.ac
index 1b20cc8d65..883b0ec380 100644
--- a/lib/erl_interface/configure.ac
+++ b/lib/erl_interface/configure.ac
@@ -103,8 +103,7 @@ AC_PROG_CPP
AC_PROG_EGREP
dnl AC_PROG_LIBTOOL
AC_PROG_RANLIB
-AC_CHECK_PROGS(LD, ld.sh)
-AC_CHECK_TOOL(LD, ld, '$(CC)')
+LM_PROG_LD
AC_SUBST(LD)
ERL_DED_FLAT_BUNDLE=true
diff --git a/lib/megaco/configure b/lib/megaco/configure
index 1277434183..d428f28d24 100755
--- a/lib/megaco/configure
+++ b/lib/megaco/configure
@@ -671,6 +671,7 @@ LEX_OUTPUT_ROOT
LEX
MIXED_MINGW
MIXED_VC
+LD
OBJEXT
EXEEXT
ac_ct_CC
@@ -2780,6 +2781,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
@@ -4021,6 +4029,169 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+for ac_prog in ld.sh
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="${ac_tool_prefix}ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LD"; then
+ ac_ct_LD=$LD
+ # Extract the first word of "ld", so it can be a program name with args.
+set dummy ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$ac_ct_LD"; then
+ ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LD="ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+ac_ct_LD=$ac_cv_prog_ac_ct_LD
+if test -n "$ac_ct_LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
+printf "%s\n" "$ac_ct_LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_LD" = x; then
+ LD=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LD=$ac_ct_LD
+ fi
+else
+ LD="$ac_cv_prog_LD"
+fi
+
+ if test "$LD" = ":"
+then :
+ as_fn_error $? "No linker found" "$LINENO" 5
+else case e in #(
+ e)
+ printf "configure:$LINENO: %s\n" 'setting LD to ${CC}' >&5
+
+ LD=${CC} ;;
+esac
+fi
+
@@ -5310,6 +5481,10 @@ See 'config.log' for more details" "$LINENO" 5; }
fi
USER_LD=$LD
+if test "$USER_LD" = '$(CC)'
+then :
+ USER_LD='$(DED_CC)'
+fi
USER_LDFLAGS="$LDFLAGS"
DED_CC=$CC
@@ -5634,12 +5809,11 @@ fi
# to be specified (cross compiling)
if test "x$DED_LD" = "x"; then
-DED_LDFLAGS_CONFTEST=
+ DED_LDFLAGS_CONFTEST=
-DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
-case $host_os in
+ DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
+ case $host_os in
win32)
- DED_LD="ld.sh"
DED_LDFLAGS="-dll"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
;;
@@ -5648,6 +5822,7 @@ case $host_os in
if test X${enable_m64_build} = Xyes; then
DED_LDFLAGS="-64 $DED_LDFLAGS"
fi
+ DED_LD="$CC"
;;
aix*|os400*)
DED_LDFLAGS="-G -bnoentry -bexpall"
@@ -5726,7 +5901,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
;;
linux*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared -Wl,-Bsymbolic"
if test X${enable_m64_build} = Xyes; then
@@ -5737,7 +5911,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
fi
;;
freebsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
if test X${enable_m64_build} = Xyes; then
@@ -5748,7 +5921,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
fi
;;
openbsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
;;
@@ -5762,14 +5934,16 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
DED_LDFLAGS="-shared"
# GNU linker has no option for 64bit build, should not propagate -m64
;;
-esac
+ esac
-if test "$DED_LD" = "" && test "$USER_LD" != ""; then
- DED_LD="$USER_LD"
- DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
-fi
+ if test "x$DED_LD" = "x" && test "$USER_LD" != ""; then
-DED_LIBS=$LIBS
+ printf "configure:$LINENO: %s\n" "setting DED_LD to $USER_LD" >&5
+
+ DED_LD="$USER_LD"
+ DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
+ fi
+ DED_LIBS=$LIBS
fi # "x$DED_LD" = "x"
diff --git a/lib/megaco/configure.ac b/lib/megaco/configure.ac
index a5c3db9e1a..a96c7a934c 100644
--- a/lib/megaco/configure.ac
+++ b/lib/megaco/configure.ac
@@ -40,6 +40,7 @@ dnl Checks for programs.
dnl ----------------------------------------------------------------------
AC_PROG_CC
+LM_PROG_LD
LM_WINDOWS_ENVIRONMENT
diff --git a/lib/odbc/configure b/lib/odbc/configure
index a13e824f51..20152629b1 100755
--- a/lib/odbc/configure
+++ b/lib/odbc/configure
@@ -650,10 +650,10 @@ GETCONF
EGREP
GREP
RM
-LD
SET_MAKE
MIXED_MINGW
MIXED_VC
+LD
OBJEXT
EXEEXT
ac_ct_CC
@@ -2876,6 +2876,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
@@ -4137,6 +4144,169 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+for ac_prog in ld.sh
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="${ac_tool_prefix}ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LD"; then
+ ac_ct_LD=$LD
+ # Extract the first word of "ld", so it can be a program name with args.
+set dummy ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$ac_ct_LD"; then
+ ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LD="ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+ac_ct_LD=$ac_cv_prog_ac_ct_LD
+if test -n "$ac_ct_LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
+printf "%s\n" "$ac_ct_LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_LD" = x; then
+ LD=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LD=$ac_ct_LD
+ fi
+else
+ LD="$ac_cv_prog_LD"
+fi
+
+ if test "$LD" = ":"
+then :
+ as_fn_error $? "No linker found" "$LINENO" 5
+else case e in #(
+ e)
+ printf "configure:$LINENO: %s\n" 'setting LD to ${CC}' >&5
+
+ LD=${CC} ;;
+esac
+fi
+
@@ -4293,159 +4463,6 @@ printf "%s\n" "no" >&6; }
fi
-for ac_prog in ld.sh
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_prog_LD+y}
-then :
- printf %s "(cached) " >&6
-else case e in #(
- e) if test -n "$LD"; then
- ac_cv_prog_LD="$LD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- case $as_dir in #(((
- '') as_dir=./ ;;
- */) ;;
- *) as_dir=$as_dir/ ;;
- esac
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
- ac_cv_prog_LD="$ac_prog"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi ;;
-esac
-fi
-LD=$ac_cv_prog_LD
-if test -n "$LD"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-printf "%s\n" "$LD" >&6; }
-else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
-
- test -n "$LD" && break
-done
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ld; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_prog_LD+y}
-then :
- printf %s "(cached) " >&6
-else case e in #(
- e) if test -n "$LD"; then
- ac_cv_prog_LD="$LD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- case $as_dir in #(((
- '') as_dir=./ ;;
- */) ;;
- *) as_dir=$as_dir/ ;;
- esac
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
- ac_cv_prog_LD="${ac_tool_prefix}ld"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi ;;
-esac
-fi
-LD=$ac_cv_prog_LD
-if test -n "$LD"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-printf "%s\n" "$LD" >&6; }
-else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LD"; then
- ac_ct_LD=$LD
- # Extract the first word of "ld", so it can be a program name with args.
-set dummy ld; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_prog_ac_ct_LD+y}
-then :
- printf %s "(cached) " >&6
-else case e in #(
- e) if test -n "$ac_ct_LD"; then
- ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- case $as_dir in #(((
- '') as_dir=./ ;;
- */) ;;
- *) as_dir=$as_dir/ ;;
- esac
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_LD="ld"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi ;;
-esac
-fi
-ac_ct_LD=$ac_cv_prog_ac_ct_LD
-if test -n "$ac_ct_LD"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
-printf "%s\n" "$ac_ct_LD" >&6; }
-else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
- if test "x$ac_ct_LD" = x; then
- LD="'$(CC)'"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- LD=$ac_ct_LD
- fi
-else
- LD="$ac_cv_prog_LD"
-fi
-
-
_search_path=/bin:/usr/bin:/usr/local/bin:$PATH
diff --git a/lib/odbc/configure.ac b/lib/odbc/configure.ac
index 389fb6be18..2f0b3ead9b 100644
--- a/lib/odbc/configure.ac
+++ b/lib/odbc/configure.ac
@@ -44,6 +44,7 @@ ERL_XCOMP_SYSROOT_INIT
dnl Checks for programs.
AC_PROG_CC
+LM_PROG_LD
dnl ---------------------------------------------------------------------
dnl Special windows stuff regarding CFLAGS and details in the environment...
@@ -52,9 +53,6 @@ LM_WINDOWS_ENVIRONMENT
AC_PROG_MAKE_SET
-AC_CHECK_PROGS(LD, ld.sh)
-AC_CHECK_TOOL(LD, ld, '$(CC)')
-
AC_SUBST(LD)
_search_path=/bin:/usr/bin:/usr/local/bin:$PATH
diff --git a/lib/snmp/configure b/lib/snmp/configure
index 399f6f62e1..42ec59990b 100755
--- a/lib/snmp/configure
+++ b/lib/snmp/configure
@@ -1910,6 +1910,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
diff --git a/lib/wx/configure b/lib/wx/configure
index 7b74849a55..31baa8f9e4 100755
--- a/lib/wx/configure
+++ b/lib/wx/configure
@@ -679,6 +679,7 @@ GLIB_LIBS
GLIB_CFLAGS
MIXED_MINGW
MIXED_VC
+LD
CPP
RANLIB
ac_ct_CXX
@@ -3091,6 +3092,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
@@ -4996,6 +5004,169 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+for ac_prog in ld.sh
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="${ac_tool_prefix}ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LD"; then
+ ac_ct_LD=$LD
+ # Extract the first word of "ld", so it can be a program name with args.
+set dummy ld; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$ac_ct_LD"; then
+ ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LD="ld"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+ac_ct_LD=$ac_cv_prog_ac_ct_LD
+if test -n "$ac_ct_LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
+printf "%s\n" "$ac_ct_LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_LD" = x; then
+ LD=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LD=$ac_ct_LD
+ fi
+else
+ LD="$ac_cv_prog_LD"
+fi
+
+ if test "$LD" = ":"
+then :
+ as_fn_error $? "No linker found" "$LINENO" 5
+else case e in #(
+ e)
+ printf "configure:$LINENO: %s\n" 'setting LD to ${CC}' >&5
+
+ LD=${CC} ;;
+esac
+fi
+
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
diff --git a/lib/wx/configure.ac b/lib/wx/configure.ac
index b7cacf405f..bce9bbaa01 100644
--- a/lib/wx/configure.ac
+++ b/lib/wx/configure.ac
@@ -72,6 +72,7 @@ AC_PROG_CC
AC_PROG_CXX
AC_PROG_RANLIB
AC_PROG_CPP
+LM_PROG_LD
AC_LANG_PUSH([C++])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
diff --git a/make/autoconf/otp.m4 b/make/autoconf/otp.m4
index 6c77cd520d..51f0511693 100644
--- a/make/autoconf/otp.m4
+++ b/make/autoconf/otp.m4
@@ -29,6 +29,14 @@ dnl The Local Macros which could be part of autoconf are prefixed LM_,
dnl macros specific dnl to the Erlang system are prefixed ERL_ (this is
dnl not always consistently made...).
dnl
+dnl To make it easier to debug, sprinkle some calls to LM_LOG in the macros
+
+dnl Log a message to config.log
+AC_DEFUN(LM_LOG,
+ [
+ printf "configure:$LINENO: %s\n" $1 >&AS_MESSAGE_LOG_FD
+ ])
+
dnl We check if -Werror was given on command line and if so
dnl we disable it for the configure and only use it when
@@ -319,6 +327,28 @@ fi
fi
])
+
+dnl ----------------------------------------------------------------------
+dnl
+dnl LM_PROG_LD
+dnl
+dnl
+dnl Sets LD to the either ld.sh or '$(CC)'. We force LD to be $CC so that
+dnl we know that LDFLAGS will have to be in the form acceped by $CC and not
+dnl the form used to ld.
+dnl
+dnl Windows is a bit of a special case as we control ld.sh ourselves, so there
+dnl we use ld.sh instead of cc.sh.
+
+AC_DEFUN(LM_PROG_LD,
+ [AC_CHECK_PROGS(LD, ld.sh)
+ AC_CHECK_TOOL(LD, ld, [:])
+ AS_IF([test "$LD" = ":"],
+ [AC_MSG_ERROR([No linker found])],
+ [LM_LOG('setting LD to ${CC}')
+ LD=${CC}])
+])
+
dnl ----------------------------------------------------------------------
dnl
dnl LM_FIND_EMU_CC
@@ -3110,6 +3140,7 @@ AC_DEFUN(ERL_DED_FLAGS,
AC_SYS_YEAR2038_RECOMMENDED
USER_LD=$LD
+AS_IF([ test "$USER_LD" = '$(CC)' ], [USER_LD='$(DED_CC)'])
USER_LDFLAGS="$LDFLAGS"
DED_CC=$CC
@@ -3199,12 +3230,11 @@ fi
# to be specified (cross compiling)
if test "x$DED_LD" = "x"; then
-DED_LDFLAGS_CONFTEST=
+ DED_LDFLAGS_CONFTEST=
-DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
-case $host_os in
+ DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
+ case $host_os in
win32)
- DED_LD="ld.sh"
DED_LDFLAGS="-dll"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
;;
@@ -3213,6 +3243,7 @@ case $host_os in
if test X${enable_m64_build} = Xyes; then
DED_LDFLAGS="-64 $DED_LDFLAGS"
fi
+ DED_LD="$CC"
;;
aix*|os400*)
DED_LDFLAGS="-G -bnoentry -bexpall"
@@ -3257,7 +3288,6 @@ case $host_os in
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
;;
linux*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared -Wl,-Bsymbolic"
if test X${enable_m64_build} = Xyes; then
@@ -3268,7 +3298,6 @@ case $host_os in
fi
;;
freebsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
if test X${enable_m64_build} = Xyes; then
@@ -3279,7 +3308,6 @@ case $host_os in
fi
;;
openbsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
;;
@@ -3293,14 +3321,14 @@ case $host_os in
DED_LDFLAGS="-shared"
# GNU linker has no option for 64bit build, should not propagate -m64
;;
-esac
-
-if test "$DED_LD" = "" && test "$USER_LD" != ""; then
- DED_LD="$USER_LD"
- DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
-fi
+ esac
-DED_LIBS=$LIBS
+ if test "x$DED_LD" = "x" && test "$USER_LD" != ""; then
+ LM_LOG("setting DED_LD to $USER_LD")
+ DED_LD="$USER_LD"
+ DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
+ fi
+ DED_LIBS=$LIBS
fi # "x$DED_LD" = "x"
diff --git a/make/configure b/make/configure
index 8ecdd01028..408f8b6825 100755
--- a/make/configure
+++ b/make/configure
@@ -3304,6 +3304,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
@@ -5022,7 +5029,55 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
+for ac_prog in ld.sh
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LD+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+ if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
set dummy ${ac_tool_prefix}ld; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -5112,7 +5167,7 @@ printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_LD" = x; then
- LD=""
+ LD=":"
else
case $cross_compiling:$ac_tool_warned in
yes:)
@@ -5126,6 +5181,17 @@ else
LD="$ac_cv_prog_LD"
fi
+ if test "$LD" = ":"
+then :
+ as_fn_error $? "No linker found" "$LINENO" 5
+else case e in #(
+ e)
+ printf "configure:$LINENO: %s\n" 'setting LD to ${CC}' >&5
+
+ LD=${CC} ;;
+esac
+fi
+
@@ -6665,6 +6731,10 @@ See 'config.log' for more details" "$LINENO" 5; }
fi
USER_LD=$LD
+if test "$USER_LD" = '$(CC)'
+then :
+ USER_LD='$(DED_CC)'
+fi
USER_LDFLAGS="$LDFLAGS"
DED_CC=$CC
@@ -6989,12 +7059,11 @@ fi
# to be specified (cross compiling)
if test "x$DED_LD" = "x"; then
-DED_LDFLAGS_CONFTEST=
+ DED_LDFLAGS_CONFTEST=
-DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
-case $host_os in
+ DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
+ case $host_os in
win32)
- DED_LD="ld.sh"
DED_LDFLAGS="-dll"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
;;
@@ -7003,6 +7072,7 @@ case $host_os in
if test X${enable_m64_build} = Xyes; then
DED_LDFLAGS="-64 $DED_LDFLAGS"
fi
+ DED_LD="$CC"
;;
aix*|os400*)
DED_LDFLAGS="-G -bnoentry -bexpall"
@@ -7081,7 +7151,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
;;
linux*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared -Wl,-Bsymbolic"
if test X${enable_m64_build} = Xyes; then
@@ -7092,7 +7161,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
fi
;;
freebsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
if test X${enable_m64_build} = Xyes; then
@@ -7103,7 +7171,6 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
fi
;;
openbsd*)
- DED_LD="$CC"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
;;
@@ -7117,14 +7184,16 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
DED_LDFLAGS="-shared"
# GNU linker has no option for 64bit build, should not propagate -m64
;;
-esac
+ esac
-if test "$DED_LD" = "" && test "$USER_LD" != ""; then
- DED_LD="$USER_LD"
- DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
-fi
+ if test "x$DED_LD" = "x" && test "$USER_LD" != ""; then
-DED_LIBS=$LIBS
+ printf "configure:$LINENO: %s\n" "setting DED_LD to $USER_LD" >&5
+
+ DED_LD="$USER_LD"
+ DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
+ fi
+ DED_LIBS=$LIBS
fi # "x$DED_LD" = "x"
diff --git a/make/configure.ac b/make/configure.ac
index 3d14c19012..e356672c4d 100644
--- a/make/configure.ac
+++ b/make/configure.ac
@@ -121,7 +121,7 @@ dnl Checks for programs.
AC_PROG_CC
AC_PROG_CXX
-AC_CHECK_TOOL(LD, [ld])
+LM_PROG_LD
LM_WINDOWS_ENVIRONMENT
--
2.43.0