.PHONY: clean run ifeq (${DEBUG}, 1) LFLAGS += --debug --trace CXXFLAGS += -Wall -Wextra -Wpedantic CXXFLAGS += -DDEBUG -O0 -ggdb -fno-inline WRAP := valgrind --track-origins=yes --leak-check=full --show-leak-kinds=all else CXXFLAGS += -O3 -fno-stack-protector endif OUT := a.out SOURCE.d := source/ OBJECT.d := object/ HEADER := Employee.hpp Worker.hpp Contractee.hpp Manager.hpp Company.hpp HEADER := $(addprefix ${SOURCE.d}/,${HEADER}) SOURCE := main.cpp Employee.cpp Worker.cpp Contractee.cpp Manager.cpp Company.cpp OBJECT := $(addprefix ${OBJECT.d}/,${SOURCE}) OBJECT := ${OBJECT:.cpp=.o} ${SOURCE.d}/%.cpp: ${SOURCE.d}/%.hpp ${OBJECT.d}/%.o: ${SOURCE.d}/%.cpp ${COMPILE.cpp} -o $@ $< ${OUT}: ${HEADER} ${OBJECT} ${LINK.cpp} -o $@ ${OBJECT} ${LDLIBS} run: ${OUT} ${WRAP} ./${OUT} clean: -rm ${OUT} -rm ${OBJECT}