# Verbosity of make output ifeq ("$(VERBOSE)","1") V := else V := @ endif # Debugging ifeq ("$(DEBUG)","0") D := else D := -g endif # Optimizations ifeq ("$(OPTIMIZE)","1") O := -O1 else ifeq ("$(OPTIMIZE)", "2") O := -O2 else ifeq ("$(OPTIMIZE)", "3") O := -O3 else O := -O0 endif SRC_DIR=src INCLUDE_DIR=include BUILD_DIR=build CC=clang++ WARNINGS_ON=-Weverything WARNINGS_OFF=-Wno-missing-braces -Wno-gnu-anonymous-struct -Wno-old-style-cast\ -Wno-zero-as-null-pointer-constant -Wno-nested-anon-types\ -Wno-padded -Wno-exit-time-destructors -Wno-global-constructors CFLAGS=$(D) $(O) -std=c++11 $(WARNINGS_ON) $(WARNINGS_OFF) -I$(INCLUDE_DIR) LIBS=-lSDL2 _HEADERS = engine.h geometry.h loader.h platform.h point.h transform.h util.h HEADERS = $(patsubst %,$(INCLUDE_DIR)/%,$(_HEADERS)) _OBJS = engine.o loader.o main.o platform.o transform.o OBJS = $(patsubst %,$(BUILD_DIR)/%,$(_OBJS)) $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp $(HEADERS) @ if [ ! -d $(BUILD_DIR) ]; then mkdir $(BUILD_DIR); fi $(V) $(CC) -c -o $@ $< $(CFLAGS) $(BUILD_DIR)/engine: $(OBJS) $(V) $(CC) -o $@ $^ $(CFLAGS) $(LIBS) .PHONY: clean clean: rm -rf $(BUILD_DIR)