.SILENT: .DEFAULT_GOAL := all # ====== Configurations and Binaries ====== # CXX := clang++ RM := rm -f PRINTF := printf # ====== Flags ====== # CCXX_FLAGS := \ -Wall -Wextra -Werror -pedantic \ -MMD -MP CXX_FLAGS := -std=c++14 -nostdlib++ \ $(CCXX_FLAGS) -fno-rtti -fno-exceptions LD_FLAGS := # ====== Sources ====== # TOP_DIR := . SRC_DIR := $(TOP_DIR)/src VOIDC_CXX := $(SRC_DIR)/voidc.cc VOIDC_O := $(VOIDC_CXX:.cc=.o) VOIDC_D := $(VOIDC_CXX:.cc=.d) VOIDC := $(TOP_DIR)/voidc # ====== Rules ====== # .PHONY: all all: $(VOIDC) $(VOIDC): $(VOIDC_O) $(PRINTF) " CXXLD %s\n" $< $(CXX) $< -o $@ $(LD_FLAGS) %.o: %.cc $(PRINTF) " CXX %s\n" $< $(CXX) $< -o $@ -c $(CXX_FLAGS) .PHONY: clean clean: $(RM) $(VOIDC_O) $(VOIDC_D) $(VOIDC)