config.mk (991B)
1 ## toolchain 2 CC ?= cc 3 CXX ?= c++ 4 AR ?= ar 5 RANLIB ?= ranlib 6 7 STRIP ?= strip 8 9 TAR ?= tar 10 ZIP ?= gzip 11 12 ## project build directories 13 BIN := bin 14 OBJ := obj 15 LIB := lib 16 TST := $(BIN)/tests 17 18 $(BIN): 19 @mkdir -p $(BIN) 20 21 $(OBJ): 22 @mkdir -p $(OBJ) 23 24 $(LIB): 25 @mkdir -p $(LIB) 26 27 $(TST): $(BIN) 28 @mkdir -p $(TST) 29 30 ## project-wide includes 31 INC := include 32 33 ## append project-wide toolchain flags 34 CFLAGS := $(CFLAGS) -std=c11 -Wall -Wextra -Wpedantic -Werror 35 CPPFLAGS := $(CPPFLAGS) -I$(INC) -D_XOPEN_SOURCE=700 36 LDFLAGS := $(LDFLAGS) -L$(LIB) 37 38 REGIME ?= DEBUG 39 40 DEBUG_CFLAGS := $(DEBUG_CFLAGS) -Og -ggdb 41 DEBUG_CPPFLAGS := $(DEBUG_CPPFLAGS) -UNDEBUG 42 DEBUG_LDFLAGS := $(DEBUG_LDFLAGS) 43 44 RELEASE_CFLAGS := $(RELEASE_CFLAGS) -O3 -flto 45 RELEASE_CPPFLAGS:= $(RELEASE_CPPFLAGS) -DNDEBUG 46 RELEASE_LDFLAGS := $(RELEASE_LDFLAGS) -flto 47 48 ## append regime-specific toolchain flags 49 CFLAGS := $(CFLAGS) $($(REGIME)_CFLAGS) 50 CPPFLAGS := $(CPPFLAGS) $($(REGIME)_CPPFLAGS) 51 LDFLAGS := $(LDFLAGS) $($(REGIME)_LDFLAGS)