X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=configure;h=19c241e634b633cefc339e4efaa40420624923de;hp=4e3931c1c2b49236340e9d31ed348dc88b7b8b9a;hb=3d99266b5e8fc6374a9d930f3ae9d444ffebb11e;hpb=b439c051c7eee4eb4b93fc382f993aa6305ce530 diff --git a/configure b/configure index 4e3931c1..19c241e6 100755 --- a/configure +++ b/configure @@ -34,6 +34,7 @@ Some influential environment variables: CC C compiler command [detected] CFLAGS C compiler flags [-Os -pipe ...] CROSS_COMPILE prefix for cross compiler and tools [none] + LIBCC compiler runtime library [detected] Use these variables to override the choices made by configure. @@ -57,7 +58,7 @@ else eval "fnmatch '*/' \"\${$1}\"" && eval "$1=\${$1%/}" ; fi tryflag () { printf "checking whether compiler accepts %s... " "$2" echo "typedef int x;" > "$tmpc" -if "$CC" "$2" -c -o /dev/null "$tmpc" 2>/dev/null ; then +if $CC "$2" -c -o /dev/null "$tmpc" 2>/dev/null ; then printf "yes\n" eval "$1=\"\${$1} \$2\"" eval "$1=\${$1# }" @@ -71,7 +72,7 @@ fi tryldflag () { printf "checking whether linker accepts %s... " "$2" echo "typedef int x;" > "$tmpc" -if "$CC" -nostdlib -shared "$2" -o /dev/null "$tmpc" 2>/dev/null ; then +if $CC -nostdlib -shared "$2" -o /dev/null "$tmpc" 2>/dev/null ; then printf "yes\n" eval "$1=\"\${$1} \$2\"" eval "$1=\${$1# }" @@ -128,6 +129,7 @@ CFLAGS=*) CFLAGS=${arg#*=} ;; CPPFLAGS=*) CPPFLAGS=${arg#*=} ;; LDFLAGS=*) LDFLAGS=${arg#*=} ;; CROSS_COMPILE=*) CROSS_COMPILE=${arg#*=} ;; +LIBCC=*) LIBCC=${arg#*=} ;; *=*) ;; *) target=$arg ;; esac @@ -168,7 +170,7 @@ test -n "$CC" || { echo "$0: cannot find a C compiler" ; exit 1 ; } # if test -z "$wrapper" ; then printf "checking whether compiler is gcc... " -if fnmatch '*gcc\ version*' "$("$CC" -v 2>&1)" ; then +if fnmatch '*gcc\ version*' "$($CC -v 2>&1)" ; then echo yes printf "checking whether to build musl-gcc wrapper... " wrapper=yes @@ -189,7 +191,7 @@ fi # Find the target architecture # printf "checking target system type... " -test -n "$target" || target=$("$CC" -dumpmachine 2>/dev/null) || target=unknown +test -n "$target" || target=$($CC -dumpmachine 2>/dev/null) || target=unknown printf "%s\n" "$target" # @@ -200,6 +202,7 @@ arm*) ARCH=arm ;; i?86*) ARCH=i386 ;; x86_64*) ARCH=x86_64 ;; mips-*|mipsel-*) ARCH=mips ;; +microblaze-*) ARCH=microblaze ;; unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; *) fail "$0: unknown or unsupported target \"$target\"" ;; esac @@ -244,6 +247,13 @@ fi tryflag CFLAGS_AUTO -fno-unwind-tables tryflag CFLAGS_AUTO -fno-asynchronous-unwind-tables +# +# The GNU toolchain defaults to assuming unmarked files need an +# executable stack, potentially exposing vulnerabilities in programs +# linked with such object files. Fix this. +# +tryflag CFLAGS_AUTO -Wa,--noexecstack + # # Some optimization levels add bloated alignment that hurt performance # @@ -259,8 +269,8 @@ tryflag CFLAGS_AUTO -falign-jumps=1 # work anyway (issues with atomic ops). # if test "$ARCH" = "i386" ; then -fnmatch '-march=*|*\ -march=*' "$CFLAGS" || tryflag CFLAGS_AUTO -march=i486 -fnmatch '-mtune=*|*\ -mtune=*' "$CFLAGS" || tryflag CFLAGS_AUTO -mtune=generic +fnmatch '-march=*|*\ -march=*' "$CFLAGS" || tryldflag CFLAGS_AUTO -march=i486 +fnmatch '-mtune=*|*\ -mtune=*' "$CFLAGS" || tryldflag CFLAGS_AUTO -mtune=generic fi if test "x$warnings" = xyes ; then @@ -286,6 +296,11 @@ printf "warning: disabling dynamic linking support\n" shared=no } +# Find compiler runtime library +test -z "$LIBCC" && tryldflag LIBCC -lgcc && tryldflag LIBCC -lgcc_eh +test -z "$LIBCC" && tryldflag LIBCC -lcompiler_rt +test -z "$LIBCC" && tryldflag LIBCC -lpcc +printf "using compiler runtime libraries: %s\n" "$LIBCC" printf "creating config.mak... " @@ -309,6 +324,7 @@ CFLAGS_C99FSE = $CFLAGS_C99FSE CPPFLAGS = $CPPFLAGS LDFLAGS = $LDFLAGS_AUTO $LDFLAGS CROSS_COMPILE = $CROSS_COMPILE +LIBCC = $LIBCC EOF test "x$static" = xno && echo "STATIC_LIBS =" test "x$shared" = xno && echo "SHARED_LIBS ="