X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=configure;h=5beaa1092650416663542c456634619eb05fcafd;hp=4bf84637a596fc9306d28330c14928924ada3635;hb=2242bf616b893e85886ed0a2348b96bf1cf7623e;hpb=c5f3add3254de442f90f8102503c6df7b39e941e diff --git a/configure b/configure index 4bf84637..5beaa109 100755 --- a/configure +++ b/configure @@ -2,7 +2,7 @@ usage () { cat < "$tmpc" +if "$CC" -nostdlib -shared "$2" -o /dev/null "$tmpc" 2>/dev/null ; then +printf "yes\n" +eval "$1=\"\${$1} \$2\"" +eval "$1=\${$1# }" +return 0 +else +printf "no\n" +return 1 +fi +} + # Beginning of actual script +CFLAGS_C99FSE= +CFLAGS_AUTO= +LDFLAGS_AUTO= prefix= exec_prefix= bindir= libdir= includedir= syslibdir= -build= +target= debug=no warnings= shared=yes @@ -102,14 +119,15 @@ case "$arg" in --disable-warnings|--enable-warnings=no) warnings=no ;; --enable-gcc-wrapper|--enable-gcc-wrapper=yes) wrapper=yes ;; --disable-gcc-wrapper|--enable-gcc-wrapper=no) wrapper=no ;; ---enable-*|--disable-*|--with-*|--without-*|--*dir=*|--host=*) ;; ---build=*|--target=*) build=${arg#*=} ;; +--enable-*|--disable-*|--with-*|--without-*|--*dir=*|--build=*) ;; +--host=*|--target=*) target=${arg#*=} ;; -* ) echo "$0: unknown option $arg" ;; CC=*) CC=${arg#*=} ;; CFLAGS=*) CFLAGS=${arg#*=} ;; CPPFLAGS=*) CPPFLAGS=${arg#*=} ;; LDFLAGS=*) LDFLAGS=${arg#*=} ;; -*) build=$arg ;; +*=*) ;; +*) target=$arg ;; esac done @@ -166,21 +184,22 @@ fi # -# Find the build architecture +# Find the target architecture # -printf "checking build system type... " -test -n "$build" || build=$("$CC" -dumpmachine 2>/dev/null) || build=unknown -printf "%s\n" "$build" +printf "checking target system type... " +test -n "$target" || target=$("$CC" -dumpmachine 2>/dev/null) || target=unknown +printf "%s\n" "$target" # # Convert to just ARCH # -case "$build" in +case "$target" in arm*) ARCH=arm ;; i?86*) ARCH=i386 ;; x86_64*) ARCH=x86_64 ;; -unknown) fail "$0: unable to detect built target; try $0 --build=..." ;; -*) fail "$0: unknown or unsupported build target \"$build\"" ;; +mips-*|mipsel-*) ARCH=mips ;; +unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; +*) fail "$0: unknown or unsupported target \"$target\"" ;; esac # @@ -191,7 +210,7 @@ tryflag CFLAGS_C99FSE -nostdinc tryflag CFLAGS_C99FSE -ffreestanding \ || tryflag CFLAGS_C99FSE -fno-builtin tryflag CFLAGS_C99FSE -fexcess-precision=standard \ -|| tryflag CFLAGS_C99FSE -ffloat-store +|| { test "$ARCH" = i386 && tryflag CFLAGS_C99FSE -ffloat-store ; } tryflag CFLAGS_C99FSE -frounding-math # @@ -245,6 +264,18 @@ tryflag CFLAGS_AUTO -Wno-unused-but-set-variable tryflag CFLAGS_AUTO -Wno-unknown-pragmas fi +# Some patched GCC builds have these defaults messed up... +tryflag CFLAGS_AUTO -fno-stack-protector +tryldflag LDFLAGS_AUTO -Wl,--hash-style=sysv + +# Disable dynamic linking if ld is broken and can't do -Bsymbolic-functions +LDFLAGS_DUMMY= +tryldflag LDFLAGS_DUMMY -Wl,-Bsymbolic-functions || { +printf "warning: disabling dynamic linking support\n" +shared=no +} + + printf "creating config.mak... " @@ -265,7 +296,7 @@ CC = $CC CFLAGS= $CFLAGS_AUTO $CFLAGS CFLAGS_C99FSE = $CFLAGS_C99FSE CPPFLAGS = $CPPFLAGS -LDFLAGS = $LDFLAGS +LDFLAGS = $LDFLAGS_AUTO $LDFLAGS EOF test "x$static" = xno && echo "STATIC_LIBS =" test "x$shared" = xno && echo "SHARED_LIBS ="