allow subarch-specific asm, including asm specific to the default
authorRich Felker <dalias@aerifal.cx>
Sun, 11 Aug 2013 07:27:35 +0000 (03:27 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 11 Aug 2013 07:27:35 +0000 (03:27 -0400)
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.

Makefile
configure

index 00aa706..7250e1e 100644 (file)
--- 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 $@ $<
 
index 48465f7..7aae7d4 100755 (executable)
--- 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