about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-07-18 20:30:58 -0400
committerRich Felker <dalias@aerifal.cx>2013-07-18 20:30:58 -0400
commit3e7f186ea18d7362e3e117f6e848b5514d8266d1 (patch)
tree4e7223dcbceb3e10a6bd9c3ac81e8b5b31e5cafa
parentf389c4984a0fee80c5322e4d1ec3aa207e9b5c01 (diff)
downloadmusl-3e7f186ea18d7362e3e117f6e848b5514d8266d1.tar.gz
musl-3e7f186ea18d7362e3e117f6e848b5514d8266d1.tar.xz
musl-3e7f186ea18d7362e3e117f6e848b5514d8266d1.zip
add build system support for arch endian & float abi variants
-rw-r--r--Makefile2
-rwxr-xr-xconfigure32
2 files changed, 33 insertions, 1 deletions
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