include ../premake.make LDLIBS += -lboost_unit_test_framework BIN := $(shell basename $$(pwd)) SRCS := $(notdir $(wildcard src/*.cpp)) SRCS += $(notdir $(filter-out ../src/main.cpp,$(wildcard ../src/*.cpp))) OBJS := $(SRCS:.cpp=.o) DEPS := $(SRCS:.cpp=.d) BUILDDIR := build/intermediates/ CXX ?= g++ RM := /bin/rm -rf INSTALL := /usr/bin/install -c CXXFLAGS := $(CXXFLAGS) -Wshadow -Wall -Wpedantic -Wextra -g -fno-strict-aliasing -std=c++17 -pthread -I../src ifeq ($(DEBUG),1) CXXFLAGS += -D DEBUG -O0 CONFIG := debug else CXXFLAGS += -D NDEBUG -O3 CONFIG := release endif OUTDIR := build/$(CONFIG)/ vpath %.cpp src ../src vpath %.d $(BUILDDIR) vpath %.o $(BUILDDIR) .PHONY: all clean prebuild all: prebuild $(OUTDIR)$(BIN) prebuild: @mkdir -p $(BUILDDIR) $(OUTDIR) $(OUTDIR)$(BIN): $(OBJS) $(DEPS) $(CXX) $(addprefix $(BUILDDIR),$(OBJS)) $(LDFLAGS) $(LDLIBS) -o $(OUTDIR)$(BIN) @ln -sf $(OUTDIR)$(BIN) $(BIN) %.o: %.cpp %.d $(CXX) $(CXXFLAGS) -MMD -MP -MT $@ -MF $*.d -c $< @mv $@ $*.d $(BUILDDIR) -include $(BUILDDIR)*.d %.d: ; clean: $(RM) build $(BIN)