Makefile (1040B)
1 MAKEFLAGS += -rR 2 .SUFFIXES: 3 4 override OUTPUT := cowos 5 6 CC := clang 7 8 CFLAGS := -g -O3 -pipe 9 10 CPPFLAGS := 11 12 override CFLAGS += \ 13 -m64 -g -c -ffreestanding -Wall -Werror -fcommon -Iinclude/ -fPIE -mno-80387 \ 14 -mno-mmx \ 15 -mno-sse \ 16 -nostdlib \ 17 -mno-sse2 \ 18 -mno-red-zone -fno-stack-protector \ 19 -fno-stack-check \ 20 -fno-lto \ 21 -target x86_64-unknown-none 22 23 override CPPFLAGS := \ 24 -I src \ 25 $(CPPFLAGS) \ 26 -DLIMINE_API_REVISION=3 \ 27 -MMD \ 28 -MP 29 30 override NASMFLAGS += \ 31 -Wall \ 32 -f elf64 33 34 override LDFLAGS += \ 35 -Wl,-m,elf_x86_64 \ 36 -Wl,--build-id=none \ 37 -nostdlib \ 38 -static \ 39 -z max-page-size=0x1000 \ 40 -T linker.ld 41 42 C_SOURCES = $(shell find . -name '*.c') 43 C_OBJS = $(patsubst %.c,%.o,$(C_SOURCES)) 44 45 .PHONY: all 46 all: bin/$(OUTPUT) 47 48 bin/$(OUTPUT): Makefile $(C_OBJS) linker.ld 49 mkdir ./bin/ -p 50 $(CC) $(LDFLAGS) -o ./bin/$(OUTPUT) $(C_OBJS) -fuse-ld=lld 51 52 %.o: %.c 53 $(CC) $(CFLAGS) $(subst .o,.c,$@) -o $@ 54 55 .PHONY: clean 56 clean: 57 find . -name '*.o' -delete 58 rm -r -f ./bin