summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-08-11 03:27:35 -0400
committerRich Felker <dalias@aerifal.cx>2013-08-11 03:27:35 -0400
commit90d77722511ad5e9b748f69f42c5b2a8467fa049 (patch)
treec4631a36f4fe43a0f6d49f2d8af78c1eb676dd6f
parent7c440977db9444d7e6b1c3dcb1fdf4ee49ca4158 (diff)
downloadmusl-90d77722511ad5e9b748f69f42c5b2a8467fa049.tar.gz
musl-90d77722511ad5e9b748f69f42c5b2a8467fa049.tar.bz2
musl-90d77722511ad5e9b748f69f42c5b2a8467fa049.tar.xz
musl-90d77722511ad5e9b748f69f42c5b2a8467fa049.zip
allow subarch-specific asm, including asm specific to the default
the default subarch is the one whose full name is just the base arch name, with no suffixes. normally, either the asm in the default subarch is suitable for all subarch variants, or separate asm is mandatory for each variant. however, in the case of asm which is purely for optimization purposes, it's possible to have asm that only works (or only performs well) on the default subarch, and not any othe the other variants. thus, I have added a mechanism to give a name to the default variant, for example "armel" for the default, little-endian arm. further such default-subarch names can be added in the future as needed.
-rw-r--r--Makefile3
-rwxr-xr-xconfigure6
2 files changed, 9 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 00aa7069..7250e1e6 100644
--- a/Makefile
+++ b/Makefile
@@ -90,6 +90,9 @@ $(OPTIMIZE_SRCS:%.c=%.o) $(OPTIMIZE_SRCS:%.c=%.lo): CFLAGS += -O3
MEMOPS_SRCS = src/string/memcpy.c src/string/memmove.c src/string/memcmp.c src/string/memset.c
$(MEMOPS_SRCS:%.c=%.o) $(MEMOPS_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_MEMOPS)
+%.o: $(ARCH)$(ASMSUBARCH)/%.s
+ $(CC) $(CFLAGS_ALL_STATIC) -c -o $@ $<
+
%.o: $(ARCH)/%.s
$(CC) $(CFLAGS_ALL_STATIC) -c -o $@ $<
diff --git a/configure b/configure
index 48465f7c..7aae7d4d 100755
--- a/configure
+++ b/configure
@@ -393,6 +393,11 @@ test "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \
test "$SUBARCH" \
&& printf "configured for %s variant: %s\n" "$ARCH" "$ARCH$SUBARCH"
+case "$ARCH$SUBARCH" in
+arm) ASMSUBARCH=el ;;
+*) ASMSUBARCH=$SUBARCH ;;
+esac
+
#
# Some archs (powerpc) have different possible long double formats
# that the compiler can be configured for. The logic for whether this
@@ -424,6 +429,7 @@ cat << EOF
# Any changes made here will be lost if configure is re-run
ARCH = $ARCH
SUBARCH = $SUBARCH
+ASMSUBARCH = $ASMSUBARCH
prefix = $prefix
exec_prefix = $exec_prefix
bindir = $bindir