add build system support for arch endian & float abi variants
authorRich Felker <dalias@aerifal.cx>
Fri, 19 Jul 2013 00:30:58 +0000 (20:30 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 19 Jul 2013 00:30:58 +0000 (20:30 -0400)
Makefile
configure

index 6a86211..2fb1c99 100644 (file)
--- 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
 
index 96f93b2..042c41b 100755 (executable)
--- 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