CXX      := g++
CC       := gcc
CXXFLAGS := -std=c++17 -g -Wall -I.
CFLAGS   := -g -Wall -I.
LDFLAGS  := -lpaho-mqttpp3 -lpaho-mqtt3a \
            -lopencv_core -lopencv_highgui \
            -ljxl -ljxl_threads \
            -lboost_program_options \
            -lVmbC -lVmbCPP

TARGET   := bin/Fire_Gimbal_Control.out
OBJDIR   := obj

CXX_SRCS := main.cpp MQTT.cpp Camera.cpp
C_SRCS   := ini.c

CXX_OBJS := $(CXX_SRCS:%.cpp=$(OBJDIR)/%.o)
C_OBJS   := $(C_SRCS:%.c=$(OBJDIR)/%.o)
OBJS     := $(CXX_OBJS) $(C_OBJS)

.PHONY: all clean

all: $(TARGET)

$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

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

$(OBJDIR)/%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

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