MAKEFLAGS += --no-builtin-rules MAKEFLAGS += --no-builtin-variables # Compiler, Linker, and Assembler CC := gcc AR := ar AS := gcc PKG := PKG_CONFIG_PATH=lib/pkgconfig pkg-config OS := linux ARCH := amd64 #WL_PROTO:=$(shell $(PKG) --variable=pkgdatadir wayland-protocols) #WL_SCAN:=$(shell $(PKG) --variable=wayland_scanner wayland-scanner) # All needed build directories INC_DIR := include BIN_DIR := bin SYS_DIR := sys LIB_DIR := lib SRC_DIR := src OBJ_DIR := obj TST_DIR := test # runtime library INIT = $(RT1) $(RTI) `gcc --print-file-name=crtbeginT.o` FINI = `gcc --print-file-name=crtend.o` $(RTN) $(RT3) # Flags, Libraries and Includes CFLAGS := -g -march=native -fno-strict-aliasing -fwrapv -fms-extensions -Wno-microsoft-anon-tag STATIC := -ffreestanding -nodefaultlibs -nostartfiles -nostdinc -static AFLAGS := -g INCS := -I $(SYS_DIR)/$(OS)/$(ARCH) -I $(SYS_DIR)/$(OS)/port -I $(INC_DIR) -isystem $(INC_DIR)/vendor/libc ELIBS := -L$(LIB_DIR) -lc # Named generic rules (must be evaluated lazily) COMPILE = @echo "CC "$(@:$(OBJ_DIR)/%=%);\ $(CC) -MD $(CFLAGS) $(STATIC) $(TCFLAGS) $(INCS) $(TINCS) -o $@ -c $< LINK = @echo "LD "$(@:$(OBJ_DIR)/%=%);\ $(CC) -MD $(CFLAGS) $(STATIC) $(TCFLAGS) -o $@ $(INIT) $< $(TLIBS) $(ELIBS) $(FINI) COMPLINK = @echo "CC "$(@:$(OBJ_DIR)/%=%);\ $(CC) -MD $(CFLAGS) $(STATIC) $(TCFLAGS) $(INCS) $(TINCS) -o $@ $(INIT) $^ $(TLIBS) $(ELIBS) $(FINI) ASSEMBLE = @echo "AS "$(@:$(OBJ_DIR)/%=%);\ $(AS) $(AFLAGS) -o $@ -c $< ARCHIVE = @echo "AR "$(@:$(OBJ_DIR)/%=%);\ $(AR) crs $@ $^ include rules.mk