cowos

custom OS from scratch in C
git clone git://git.daat.foo/cowos.git
Log | Files | Refs | README | LICENSE

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