]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
configure: generate a script to run the compiler
authorDaniel Stenberg <daniel@haxx.se>
Tue, 16 May 2023 14:51:14 +0000 (16:51 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 18 May 2023 18:57:11 +0000 (20:57 +0200)
in the CURL_RUN_IFELSE macro, with LD_LIBRARY_PATH set to the value of
the configure invoke, and not the value that might be used later,
intended for the execution of the output the compiler ouputs.

For example when the compiler uses the same library (like libz) that
configure checks for.

Reported-by: Jonas Bülow
Fixes #11114
Closes #11120

configure.ac
m4/curl-functions.m4

index f832f710d29ca68fa5c5afa92ed4ce985eac950c..ef82e944f41dc2e8bffdb53add62fa003d38e83a 100644 (file)
@@ -186,6 +186,17 @@ dnl
 INITIAL_LDFLAGS=$LDFLAGS
 INITIAL_LIBS=$LIBS
 
+dnl
+dnl Generates a shell script to run the compiler with LD_LIBRARY_PATH set to
+dnl the value used right now. This lets CURL_RUN_IFELSE set LD_LIBRARY_PATH to
+dnl something different but only have that affect the execution of the results
+dnl of the compile, not change the libraries for the compiler itself.
+dnl
+compilersh="run-compiler"
+echo "CC=$CC" > $compilersh
+echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $compilersh
+echo 'exec $CC $@' >> $compilersh
+
 dnl **********************************************************************
 dnl See which TLS backend(s) that are requested. Just do all the
 dnl TLS AC_ARG_WITH() invokes here and do the checks later
@@ -4396,6 +4407,8 @@ else
 fi
 AC_SUBST(LIBCURL_NO_SHARED)
 
+rm $compilersh
+
 dnl
 dnl For keeping supported features and protocols also in pkg-config file
 dnl since it is more cross-compile friendly than curl-config
index 4d4d13a4000d68807f46fce4e39f8525e4f8d795..bd2ebbd019246c033c655e7243bfb375d32eb4a5 100644 (file)
@@ -5866,11 +5866,14 @@ AC_DEFUN([CURL_RUN_IFELSE], [
       AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
      ;;
      *)
+      oldcc=$CC
       old=$LD_LIBRARY_PATH
+      CC="sh ./run-compiler"
       LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
       export LD_LIBRARY_PATH
       AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
       LD_LIBRARY_PATH=$old # restore
+      CC=$oldcc
      ;;
    esac
 ])