summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorVladimir Azarov <avm@intermediate-node.net>2024-10-13 20:54:32 +0200
committerVladimir Azarov <avm@intermediate-node.net>2024-10-13 20:54:32 +0200
commit3972268b97b789a8212ea9bc7d1b9ce9905a68d8 (patch)
treeb0cbf5012266da4702afb640f6bb1cdb2f097153 /Makefile
parent47a781f03119d360ef2b2936234d381fd2f4c85d (diff)
Base library for tools and sed utility
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile39
1 files changed, 31 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index aeb1325..113c375 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
AR = ar
CC = gcc
-CFLAGS = -Wall -g -O3 -march=native
+CFLAGS = -O0 -g -Wall
arch = x86_64
@@ -41,20 +41,42 @@ all_inc = $(sort $(inc) $(generated_headers:generated/%=%) \
$(arch_inc:arch/$(arch)/%=include/%) \
$(generic_inc:arch/generic/%=include/%))
+dirs = $(sort $(dir $(generated_headers)))
+
+### Tools ###
+
+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 \
+ -Iarch/generic $(CFLAGS)
+
+.PRECIOUS: $(addprefix tools/, common.o sed.o)
+
+tools/%.o: tools/%.c tools/common.h
+ $(CC) $(tool_cflags) -c -o $@ $<
+
+tools/%: tools/%.o tools/common.o
+ ld -L$(gcc_prefix) -nostdlib -o $@ $^ -lgcc
+
+### Musl ###
+
default: $(lib_obj)
-generated_dirs:
- mkdir -p $(dir $(generated_headers))
+$(dirs):
+ mkdir -p $@
-$(generated_headers): | generated_dirs
+$(generated_headers): | $(dirs)
generated/include/bits/alltypes.h: arch/$(arch)/bits/alltypes.h.in \
- include/alltypes.h.in
- sed -f tools/mkalltypes.sed $^ >$@
+ include/alltypes.h.in tools/sed
+ cat $(filter %.in, $^) | tools/sed -f tools/mkalltypes.sed >$@
-generated/include/bits/syscall.h: arch/$(arch)/bits/syscall.h.in
+generated/include/bits/syscall.h: arch/$(arch)/bits/syscall.h.in tools/sed
cp $< $@
- sed -n -e 's/__NR_/SYS_/p' < $< >>$@
+ tools/sed 's/__NR_/SYS_/' < $< >>$@
src/internal/version.o: cflags += -DVERSION=\"$(shell cat VERSION)\"
crt/crt1.o: arch/$(arch)/crt_arch.h
@@ -105,3 +127,4 @@ install: install-libs install-headers
clean:
rm -rf generated
rm -f crt/*.o src/*/*.o libc.a crt1.o crti.o crtn.o
+ rm -f tools/*.o tools/sed