# Compiler, Linker, and Assembler CC := clang AR := ar AS := nasm # All needed build directories INC_DIR := include SRC_DIR := src BIN_DIR := bin LIB_DIR := lib OBJ_DIR := build # Flags, Libraries and Includes INCS := -I$(INC_DIR) CFLAGS := -g -fno-strict-aliasing -fwrapv -fms-extensions AFLAGS := -f elf64 TGTFLAG := TGTINCS := TGTLIBS := # Named generic rules (must be evaluated lazily) COMPILE = $(CC) -MMD $(CFLAGS) $(TGTFLAGS) $(INCS) $(TGTINCS) -o $@ -c $< LINK = $(CC) -MMD $(CFLAGS) $(TGTFLAGS) -o $@ $^ $(LIBS) $(TGTLIBS) COMPLINK = $(CC) -MMD $(CFLAGS) $(TGTFLAGS) $(INCS) $(TGTINCS) -o $@ $^ $(LIBS) ASSEMBLE = $(AS) $(AFLAGS) $(TGTFLAGS) -o $@ $< ARCHIVE = $(AR) crs $@ $^ include rules.mk