summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorVladimir Azarov <avm@intermediate-node.net>2024-11-05 20:24:40 +0100
committerVladimir Azarov <avm@intermediate-node.net>2024-11-05 21:49:55 +0100
commitf777f6a9450d2bd5fc7ec531e6fb69f79942499a (patch)
treedc33cd941f49708274a74548862ba7b133013c55 /Makefile
parent3972268b97b789a8212ea9bc7d1b9ce9905a68d8 (diff)
Musl make
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile32
1 files changed, 19 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index 113c375..5c5c2aa 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
AR = ar
CC = gcc
-CFLAGS = -O0 -g -Wall
+CFLAGS = -g
arch = x86_64
@@ -12,18 +12,18 @@ cflags = -pipe -std=c99 -nostdinc -D_XOPEN_SOURCE=700 \
-Iarch/$(arch) -Iarch/generic -Isrc/include -Isrc/internal \
-Igenerated/include -Iinclude $(CFLAGS)
-prefix = /
+prefix = /tmp/root
includedir = $(prefix)/include
libdir = $(prefix)/lib
-src_dirs = src/* src/mallocng crt
+src_dirs = crt src/* src/mallocng
common_src = $(wildcard $(addsuffix /*.c, $(src_dirs)))
arch_src = $(wildcard $(addsuffix /$(arch)/*.[csS], $(src_dirs)))
common_obj = $(common_src:.c=.o)
arch_obj = $(patsubst %, %.o, $(basename $(arch_src)))
replaced_obj = $(subst /$(arch)/,/, $(arch_obj))
-all_obj = $(filter-out $(replaced_obj), $(common_obj) $(arch_obj))
+all_obj = $(sort $(filter-out $(replaced_obj), $(common_obj) $(arch_obj)))
memops_obj = $(filter %/memcpy.o %/memmove.o %/memcmp.o %/memset.o, $(all_obj))
crt_obj = $(filter crt/%, $(all_obj))
@@ -50,10 +50,10 @@ gcc_prefix = $(dir $(shell gcc -print-libgcc-file-name))
tool_cflags = -Wall -nostdinc -Wno-main \
-ffreestanding -fno-pic -fno-stack-protector \
-Igenerated/include -Iarch/$(arch) \
- -I /usr/lib/clang/17/include \
+ -I$(gcc_prefix)include \
-Iarch/generic $(CFLAGS)
-.PRECIOUS: $(addprefix tools/, common.o sed.o)
+.PRECIOUS: $(addprefix tools/, common.o sed.o make.o)
tools/%.o: tools/%.c tools/common.h
$(CC) $(tool_cflags) -c -o $@ $<
@@ -68,18 +68,16 @@ default: $(lib_obj)
$(dirs):
mkdir -p $@
-$(generated_headers): | $(dirs)
-
generated/include/bits/alltypes.h: arch/$(arch)/bits/alltypes.h.in \
- include/alltypes.h.in tools/sed
+ include/alltypes.h.in tools/sed | $(dirs)
cat $(filter %.in, $^) | tools/sed -f tools/mkalltypes.sed >$@
-generated/include/bits/syscall.h: arch/$(arch)/bits/syscall.h.in tools/sed
+generated/include/bits/syscall.h: arch/$(arch)/bits/syscall.h.in \
+ tools/sed | $(dirs)
cp $< $@
tools/sed 's/__NR_/SYS_/' < $< >>$@
src/internal/version.o: cflags += -DVERSION=\"$(shell cat VERSION)\"
-crt/crt1.o: arch/$(arch)/crt_arch.h
$(memops_obj): cflags += -fno-tree-loop-distribute-patterns
$(crt_obj): cflags += -DCRT
@@ -96,8 +94,12 @@ install_cmd = install -D -m 644 $< $@
%.o: %.c $(generated_headers) $(implementation_headers)
$(cc_cmd)
+crt/crt1.o: crt/crt1.c arch/$(arch)/crt_arch.h $(generated_headers) $(implementation_headers)
+ $(cc_cmd)
+
%.o: crt/$(arch)/%.o
cp $< $@
+
%.o: crt/%.o
cp $< $@
@@ -124,7 +126,11 @@ install-libs: $(addprefix $(DESTDIR)$(libdir)/, $(lib_obj))
install-headers: $(all_inc:include/%=$(DESTDIR)$(includedir)/%)
install: install-libs install-headers
+musl-1.2.5-mod.tar.gz:
+ git archive --format=tar.gz --prefix=musl-1.2.5-mod/ -o $@ HEAD
+
clean:
rm -rf generated
- rm -f crt/*.o src/*/*.o libc.a crt1.o crti.o crtn.o
- rm -f tools/*.o tools/sed
+ rm -f crt/*.o crt/*/*.o src/*/*.o src/*/*/*.o libc.a crt*.o
+ rm -f tools/*.o tools/sed tools/make
+ rm -f musl-*.tar.gz