musl - musl - an implementation of the standard library for Linux-based systems

index : musl
musl - an implementation of the standard library for Linux-based systems
summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013年08月14日 02:50:25 -0400
committerRich Felker <dalias@aerifal.cx>2013年08月14日 02:50:25 -0400
commitfb72a97df9222be61ec582ba7b1e9ce496b65e3e (patch)
tree49e87d623470f496aa4e0c0fdc57db6903a1830c
parent4ce6bd83456981081721b2acd8ef48b282cd88ee (diff)
downloadmusl-fb72a97df9222be61ec582ba7b1e9ce496b65e3e.tar.gz
rework makefile subarch logic to allow shared files
instead of subarchs getting their own .s files which are used directly by the makefile to replace the .c file, they now must provide a .sub file whose contents are a pathname, relative to the location of the .sub file, which will substitute for the .c file. essentially these files are acting as symbolic links, but implemented as text files.
Diffstat
-rw-r--r--Makefile 16
1 files changed, 12 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 9206ca02..33c2de1b 100644
--- a/Makefile
+++ b/Makefile
@@ -90,8 +90,16 @@ $(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 $@ $<
+# This incantation ensures that changes to any subarch asm files will
+# force the corresponding object file to be rebuilt, even if the implicit
+# rule below goes indirectly through a .sub file.
+define mkasmdep
+$(dir $(patsubst %/,%,$(dir $(1))))$(notdir $(1:.s=.o)): $(1)
+endef
+$(foreach s,$(wildcard src/*/$(ARCH)*/*.s),$(eval $(call mkasmdep,$(s))))
+
+%.o: $(ARCH)$(ASMSUBARCH)/%.sub
+ $(CC) $(CFLAGS_ALL_STATIC) -c -o $@ $(dir $<)$(shell cat $<)
%.o: $(ARCH)/%.s
$(CC) $(CFLAGS_ALL_STATIC) -c -o $@ $<
@@ -99,8 +107,8 @@ $(MEMOPS_SRCS:%.c=%.o) $(MEMOPS_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_MEMOPS)
%.o: %.c $(GENH) $(IMPH)
$(CC) $(CFLAGS_ALL_STATIC) -c -o $@ $<
-%.lo: $(ARCH)$(ASMSUBARCH)/%.s
- $(CC) $(CFLAGS_ALL_SHARED) -c -o $@ $<
+%.lo: $(ARCH)$(ASMSUBARCH)/%.sub
+ $(CC) $(CFLAGS_ALL_SHARED) -c -o $@ $(dir $<)$(shell cat $<)
%.lo: $(ARCH)/%.s
$(CC) $(CFLAGS_ALL_SHARED) -c -o $@ $<
generated by cgit v1.2.1 (git 2.18.0) at 2025年09月27日 22:26:15 +0000

AltStyle によって変換されたページ (->オリジナル) /