diff --git a/Makefile b/Makefile index 6a862110..2fb1c998 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ TOOL_LIBS = lib/musl-gcc.specs ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS) ALL_TOOLS = tools/musl-gcc -LDSO_PATHNAME = $(syslibdir)/ld-musl-$(ARCH).so.1 +LDSO_PATHNAME = $(syslibdir)/ld-musl-$(ARCH)$(SUBARCH).so.1 -include config.mak diff --git a/configure b/configure index 96f93b24..042c41bd 100755 --- a/configure +++ b/configure @@ -54,6 +54,20 @@ stripdir () { while eval "fnmatch '*/' \"\${$1}\"" ; do eval "$1=\${$1%/}" ; done } +trycppif () { +printf "checking preprocessor condition %s... " "$1" +echo "#if $1" > "$tmpc" +echo "#error yes" >> "$tmpc" +echo "#endif" >> "$tmpc" +if $CC $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then +printf "false\n" +return 1 +else +printf "true\n" +return 0 +fi +} + tryflag () { printf "checking whether compiler accepts %s... " "$2" echo "typedef int x;" > "$tmpc" @@ -310,6 +324,23 @@ test -z "$LIBCC" && try_libcc=`$CC -print-file-name=libpcc.a 2>/dev/null` \ && tryldflag LIBCC "$try_libcc" printf "using compiler runtime libraries: %s\n" "$LIBCC" +# Figure out arch variants for archs with variants +SUBARCH= +t="$CFLAGS_C99FSE $CPPFLAGS $CFLAGS_AUTO $CFLAGS" + +if test "$ARCH" = "arm" ; then +trycppif __ARMEB__ "$t" && SUBARCH=${SUBARCH}eb +trycppif __SOFTFP__ "$t" || SUBARCH=${SUBARCH}hf +fi + +test "$ARCH" = "mips" && trycppif "_MIPSEL || __MIPSEL || __MIPSEL__" "$t" \ +&& SUBARCH=${SUBARCH}el + +test "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \ +&& SUBARCH=${SUBARCH}el + +test "$SUBARCH" \ +&& printf "configured for %s variant: %s\n" "$ARCH" "$ARCH$SUBARCH" printf "creating config.mak... " @@ -320,6 +351,7 @@ cat << EOF # This version of config.mak was generated by configure # Any changes made here will be lost if configure is re-run ARCH = $ARCH +SUBARCH = $SUBARCH prefix = $prefix exec_prefix = $exec_prefix bindir = $bindir