# Переменные
CC = gcc
CFLAGS = -Wall -g `pkg-config --cflags gtk+-3.0`
LDFLAGS = -lwiringPi -lcurl `pkg-config --libs gtk+-3.0`
TARGET = program
BACKEND_PATH = backend/
UI_PATH = ui/
CONTROLLERS_PATH = controllers/

SRCS = \
main.c \
$(BACKEND_PATH)Src/stend_logic.c \
$(BACKEND_PATH)Src/utils.c \
$(BACKEND_PATH)Libs/sx1278/Src/sx1278.c \
$(BACKEND_PATH)Libs/Godex500/Src/Godex500.c \
$(BACKEND_PATH)Libs/CURL/Src/curl2.c \
$(BACKEND_PATH)Libs/cJSON/Src/cJSON.c \
$(BACKEND_PATH)Libs/Logger/Src/logger.c \
$(UI_PATH)Src/MainForm.c\
$(UI_PATH)Src/ui.c\
$(UI_PATH)Src/button_handlers.c\
$(UI_PATH)Src/button_styles.c\
$(UI_PATH)Src/error.c\
$(CONTROLLERS_PATH)Src/ui_controller.c\
$(CONTROLLERS_PATH)Src/stend_controller.c

OBJS = $(SRCS:.c=.o)

# Цель по умолчанию
all: $(TARGET) clean launch

# Правило для создания исполняемого файла
$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) -o $(TARGET) $(OBJS) $(LDFLAGS)

# Правило для компиляции .c файлов в .o файлы
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

# Чистка проекта от скомпилированных файлов
clean:
	rm -f $(OBJS)

launch:
	./$(TARGET)