CXX = g++
CXXFLAGS = -Wall -Wextra -Werror -std=c++17
CXXFLAGS += \
    -I/usr/include/x86_64-linux-gnu/qt5 \
    -I/usr/include/x86_64-linux-gnu/qt5/QtGui \
    -I/usr/include/x86_64-linux-gnu/qt5/QtCore
#QT can be installed with: sudo apt install qtbase5-dev qtdeclarative5-dev

CXXFLAGS += -fPIC
CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer

LDFLAGS += -lQt5Gui -lQt5Core
LDFLAGS += -fsanitize=address

SRC_DIR = src
OBJ_DIR = obj
BIN = raytracer

SRCS = $(shell find $(SRC_DIR) -name '*.cpp')

OBJS = $(SRCS:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o)

all: $(BIN)

$(BIN): $(OBJS)
	$(CXX) $(OBJS) $(LDFLAGS) -o $@

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
	@mkdir -p $(dir $@)
	$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
	rm -rf $(OBJ_DIR) $(BIN)

re: clean all

.PHONY: all clean re
