commit 04d522c06e11713336a01f9892e3848f5c23f0f0
parent e289d5d8bee2bb62a182ef83d9b8ed76028f8e0b
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date: Mon, 13 Apr 2026 23:08:41 +0200
configure: added workarounds for libtool wrong detection of used linker
Diffstat:
1 file changed, 41 insertions(+), 0 deletions(-)
diff --git a/configure.ac b/configure.ac
@@ -336,6 +336,47 @@ AS_VAR_IF([enable_lto],["no"],[use_lto="no"],
]
)
+# Workarouds for mis-detection of linker when '-fuse-ld=XXX' flag is used
+mhd_saved_CC="$CC"
+AS_IF([AS_VAR_TEST_SET([LD]) || test "X${GCC}" != "Xyes"],[],
+ [
+ # LD is not set by the user and CC is GCC or clang
+ MHD_CHECK_CC_IS_CLANG(
+ [ # Detect linker used by clang
+ # Note: clang does not change output of `clang -print-prog-name=ld` if '-fuse-ld=XXX' is used
+ AC_MSG_CHECKING([fo][r the linker used by $CC $CFLAGS $LDFLAGS])
+ : > conftest.$ac_ext # Create dummy input
+ CC="$CC -@%:@@%:@@%:@" # converted to "$CC -###"
+ eval mhd_log_echo='"$as_me:'"${LINENO}: $ac_link"'"'
+ AS_ECHO(["${mhd_log_echo}"]) >&AS_MESSAGE_LOG_FD
+ eval 'mhd_cc_link_out=`( '"$ac_link"'; ) AS_MESSAGE_LOG_FD>&1 2>&1`' 2>&AS_MESSAGE_LOG_FD
+ mhd_cmd_status=$?
+ AS_ECHO(["${mhd_cc_link_out}"]) >&AS_MESSAGE_LOG_FD
+ AS_ECHO(["$as_me:${LINENO}: \$? = ${mhd_cmd_status}"]) >&AS_MESSAGE_LOG_FD
+ rm -f core conftest.$ac_objext conftest.beam conftest$ac_exeext conftest.$ac_ext
+ CC="${mhd_saved_CC}"
+ mhd_cc_linker_cmd=`AS_ECHO_N(["${mhd_cc_link_out}"]) | ${SED-sed} -n ['s/^ *"\([^"]*\)".*/\1/p'] | ${SED-sed} -n '$p'`
+ AS_IF([test -z "${mhd_cc_linker_cmd}"],
+ [AC_MSG_RESULT([not detected])],
+ [
+ LD="${mhd_cc_linker_cmd}"
+ AC_MSG_RESULT([${LD}])
+ ]
+ )
+ AS_UNSET([mhd_cc_linker_cmd])
+ AS_UNSET([mhd_cmd_status])
+ AS_UNSET([mhd_cc_link_out])
+ AS_UNSET([mhd_log_echo])
+ ],
+ [ # Let LT_PATH_LD to detect linker, but force it to use all flags when detecting
+ CC="$CC $CFLAGS $CPPFLAGS $LDFLAGS"
+ ]
+ )
+ ]
+)
+LT_PATH_LD
+CC="${mhd_saved_CC}"
+
LT_INIT([win32-dll])
LT_LANG([Windows Resource])