From: Shiz Date: Sun, 28 Jun 2015 21:08:20 +0000 (+0200) Subject: build: fix musl-targeting toolchain test X-Git-Tag: v1.1.11~19 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f8db6f74b2c74a50c4dec7e30be5215f0e2c37a6;p=oweals%2Fmusl.git build: fix musl-targeting toolchain test the old test was broken in that it would never fail on a toolchains built without dynamic linking support, leading to the wrapper script possibly being installed on compilers that do not support it. in addition, the new test is portable across compilers: the old test only worked on GCC. the new test works by testing whether the toolchain libc defines __GLIBC__: most non-musl Linux libc's do define this for compatibility even when they are not glibc, so this is a safe bet to check for musl. in addition, the compiler runtime would need to have a somewhat glibc-compatible ABI in the first place, so any non-glibc compatible libc's compiler runtime might not work. it is safer to disable these cases by default and have the user enable the wrappers manually there using --enable-wrapper if they certain it works. --- diff --git a/configure b/configure index b6b6f894..99cb04d1 100755 --- a/configure +++ b/configure @@ -237,17 +237,16 @@ echo "$cc_family" # Figure out toolchain wrapper to build # if test "$wrapper" = auto -o "$wrapper" = detect ; then +echo "#include " > "$tmpc" +echo "#if ! __GLIBC__" >> "$tmpc" +echo "#error no" >> "$tmpc" +echo "#endif" >> "$tmpc" printf "checking for toolchain wrapper to build... " -if test "$cc_family" = gcc ; then +if test "$wrapper" = auto && ! $CC -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then +echo "none" +elif test "$cc_family" = gcc ; then gcc_wrapper=yes -if test "$wrapper" = auto ; then -while read line ; do -case "$line" in */ld-musl-*) gcc_wrapper=no ;; esac -done <