From 3972268b97b789a8212ea9bc7d1b9ce9905a68d8 Mon Sep 17 00:00:00 2001 From: Vladimir Azarov Date: Sun, 13 Oct 2024 20:54:32 +0200 Subject: Base library for tools and sed utility --- Makefile | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) (limited to 'Makefile') 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 -- cgit v1.2.3