diff options
| -rw-r--r-- | makefile | 60 |
1 files changed, 36 insertions, 24 deletions
@@ -1,5 +1,7 @@ .SUFFIXES: +.SILENT: +# Build configuration options CM_OPT_CC_FLAGS ?= CM_OPT_PANIC_NAME ?= panic_impl CM_OPT_RELEASE ?= 1 @@ -9,56 +11,66 @@ CM_OPT_ENABLE_SSE2 ?= 0 CM_OPT_STANDALONE ?= 1 CC ?= gcc +PRINTF ?= printf +RM_FLAGS = -f +# Project root directory CM_DIR ?= $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) -CM_SOURCE := $(CM_DIR)/cheesemap.c -CM_OBJECT := $(CM_SOURCE:.c=.o) -CM_DEPEND := $(CM_SOURCE:.c=.d) +# Target: cm (cheesemap.o) +cm = $(CM_DIR)/cheesemap.o +cm_SOURCE = $(CM_DIR)/cheesemap.c +cm_DEPEND = $(cm_SOURCE:.c=.d) -CM_DEMO_SOURCE := $(CM_DIR)/cm-demo.c -CM_DEMO := $(CM_DEMO_SOURCE:.c=) -CM_DEMO_DEPEND := $(CM_DEMO_SOURCE:.c=.d) - -CM_CC_FLAGS := -std=gnu11 \ +cm_CFLAGS = -std=gnu11 \ -Wall -Wextra -Werror \ -MMD -MP -I$(CM_DIR) -CM_CC_FLAGS += $(CM_OPT_CC_FLAGS) -CM_CC_FLAGS += -DCM_OPT_PANIC_NAME='$(CM_OPT_PANIC_NAME)' +cm_CFLAGS += $(CM_OPT_CC_FLAGS) +cm_CFLAGS += -DCM_OPT_PANIC_NAME='$(CM_OPT_PANIC_NAME)' ifeq ($(CM_OPT_RELEASE),1) - CM_CC_FLAGS += -O2 -fno-stack-protector + cm_CFLAGS += -O2 -fno-stack-protector else - CM_CC_FLAGS += -g3 + cm_CFLAGS += -g3 endif ifeq ($(CM_OPT_ENABLE_UBSAN),1) - CM_CC_FLAGS += -fsanitize=undefined + cm_CFLAGS += -fsanitize=undefined endif ifeq ($(CM_OPT_ENABLE_ASAN),1) - CM_CC_FLAGS += -fsanitize=address + cm_CFLAGS += -fsanitize=address endif ifeq ($(CM_OPT_ENABLE_SSE2),1) - CM_CC_FLAGS += -DCM_OPT_ENABLE_SSE2=1 -msse2 + cm_CFLAGS += -DCM_OPT_ENABLE_SSE2=1 -msse2 endif +# Target: cm_demo +cm_demo = $(CM_DIR)/cm-demo +cm_demo_SOURCE = $(CM_DIR)/cm-demo.c +cm_demo_DEPEND = $(cm_demo_SOURCE:.c=.d) +cm_demo_CFLAGS = $(cm_CFLAGS) + +-include $(cm_DEPEND) $(cm_demo_DEPEND) + ifeq ($(CM_OPT_STANDALONE),1) .PHONY: all -all: $(CM_OBJECT) $(CM_DEMO) +all: $(cm) $(cm_demo) endif -$(CM_OBJECT): $(CM_SOURCE) - $(CC) $(CM_CC_FLAGS) -c $< -o $@ +$(cm): $(cm_SOURCE) + @$(PRINTF) " CC %s\n" "$(notdir $@)" + $(CC) $(cm_CFLAGS) -c $< -o $@ -$(CM_DEMO): $(CM_DEMO_SOURCE) $(CM_OBJECT) - $(CC) $(CM_CC_FLAGS) $(CM_DEMO_SOURCE) $(CM_OBJECT) -o $@ +$(cm_demo): $(cm_demo_SOURCE) $(cm) + @$(PRINTF) " CC %s\n" "$(notdir $@)" + $(CC) $(cm_demo_CFLAGS) $^ -o $@ .PHONY: clean clean:: - $(RM) $(CM_OBJECT) $(CM_DEPEND) - $(RM) $(CM_DEMO) $(CM_DEMO_DEPEND) - --include $(CM_DEPEND) $(CM_DEMO_DEPEND) + @$(PRINTF) " RM %s\n" "$(notdir $(cm))" + $(RM) $(RM_FLAGS) $(cm) $(cm_DEPEND) + @$(PRINTF) " RM %s\n" "$(notdir $(cm_demo))" + $(RM) $(RM_FLAGS) $(cm_demo) $(cm_demo_DEPEND) |
