# Compiler, Linker, and Assembler CC := clang AR := ar AS := nasm # All needed build directories INC_DIR := include SRC_DIR := sys BIN_DIR := bin LIB_DIR := lib OBJ_DIR := build # Flags, Libraries and Includes CFLAGS := -g -O1 -march=native -ffast-math -fno-strict-aliasing -fwrapv -fms-extensions -Wno-microsoft-anon-tag -Wno-incompatible-function-pointer-types AFLAGS := -f elf64 INCS := -I$(INC_DIR) ELIBS := # Named generic rules (must be evaluated lazily) COMPILE = $(CC) -MMD $(CFLAGS) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ -c $< LINK = $(CC) -MMD $(CFLAGS) $(TCFLAGS) -o $@ $^ $(ELIBS) $(TCLIBS) COMPLINK = $(CC) -MMD $(CFLAGS) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ $^ $(ELIBS) $(TCLIBS) ASSEMBLE = $(AS) $(AFLAGS) $(TCFLAGS) -o $@ $< ARCHIVE = $(AR) crs $@ $^ include rules.mk