CXX      := g++

IMGUI_DIR := third_party/imgui

CXXFLAGS := -std=c++20 -Wall -Wextra -g \
            -I$(IMGUI_DIR) -I$(IMGUI_DIR)/backends
LDFLAGS  := -lglfw -lGL -ldl -lpthread

SRCS := main.cpp \
        engine/engine.cpp \
        engine/transmission.cpp \
        engine/vehicle.cpp \
        engine/simulation.cpp \
        gui/gui.cpp \
        $(IMGUI_DIR)/imgui.cpp \
        $(IMGUI_DIR)/imgui_draw.cpp \
        $(IMGUI_DIR)/imgui_tables.cpp \
        $(IMGUI_DIR)/imgui_widgets.cpp \
        $(IMGUI_DIR)/imgui_demo.cpp \
        $(IMGUI_DIR)/backends/imgui_impl_glfw.cpp \
        $(IMGUI_DIR)/backends/imgui_impl_opengl3.cpp

OBJS   := $(SRCS:.cpp=.o)
TARGET := engine_sim

$(TARGET): $(OBJS)
	$(CXX) $(OBJS) -o $(TARGET) $(LDFLAGS)

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
	rm -f $(OBJS) $(TARGET)

run:
	make
	./engine_sim

.PHONY: clean
