CXXFLAGS= -O2 -g -std=c++1y -Wall -Wextra
LDFLAGS = -lglfw -ldl
INCLUDE = -Iexternal/glad/include/
CXX = g++

all: pgm

pgm: main.o opengl_helper.o window_helper.o vec_mat.o camera_scene.o camera_control_helper.o glad.o
	$(CXX) $^ -o $@ $(LDFLAGS)

main.o: src/main.cpp src/opengl_helper.hpp src/window_helper.hpp src/vec_mat.hpp src/camera_control_helper.hpp src/camera_scene.hpp
	$(CXX) -c src/main.cpp -o $@ $(CXXFLAGS) $(INCLUDE)

opengl_helper.o: src/opengl_helper.cpp src/opengl_helper.hpp
	$(CXX) -c src/opengl_helper.cpp -o $@ $(CXXFLAGS) $(INCLUDE)

window_helper.o: src/window_helper.cpp src/window_helper.hpp
	$(CXX) -c src/window_helper.cpp -o $@ $(CXXFLAGS) $(INCLUDE)

vec_mat.o: src/vec_mat.cpp src/vec_mat.hpp
	$(CXX) -c src/vec_mat.cpp -o $@ $(CXXFLAGS) $(INCLUDE)

camera_scene.o: src/camera_scene.cpp src/camera_scene.hpp src/vec_mat.hpp 
	$(CXX) -c src/camera_scene.cpp -o $@ $(CXXFLAGS) $(INCLUDE)

camera_control_helper.o: src/camera_control_helper.cpp src/camera_control_helper.hpp src/camera_scene.hpp src/vec_mat.hpp 
	$(CXX) -c src/camera_control_helper.cpp -o $@ $(CXXFLAGS) $(INCLUDE)

glad.o: external/glad/src/glad.cpp
	$(CXX) -c $^ -o $@ $(CXXFLAGS) $(INCLUDE)

.PHONY: clean
clean:
	rm -f *.o pgm *~
