# RdpBroker Makefile

CC = gcc
CFLAGS = -Wall -Wextra -O2 -pthread -D_GNU_SOURCE
LDFLAGS = -pthread -lldap -llber -lyaml

# Directories
SRC_DIR = .
BUILD_DIR = build
BIN_DIR = bin

# Source files
SOURCES = main.c config.c auth.c rdp_server.c session_manager.c
OBJECTS = $(SOURCES:%.c=$(BUILD_DIR)/%.o)
TARGET = $(BIN_DIR)/rdpbroker

# Default target
all: directories $(TARGET)

# Create necessary directories
directories:
	@mkdir -p $(BUILD_DIR)
	@mkdir -p $(BIN_DIR)

# Link
$(TARGET): $(OBJECTS)
	@echo "Linking $(TARGET)..."
	$(CC) $(OBJECTS) -o $(TARGET) $(LDFLAGS)
	@echo "Build complete: $(TARGET)"

# Compile
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
	@echo "Compiling $<..."
	$(CC) $(CFLAGS) -c $< -o $@

# Clean
clean:
	@echo "Cleaning build files..."
	rm -rf $(BUILD_DIR) $(BIN_DIR)
	@echo "Clean complete"

# Install dependencies (Debian/Ubuntu)
deps-debian:
	@echo "Installing dependencies for Debian/Ubuntu..."
	apt-get update
	apt-get install -y build-essential libldap2-dev libyaml-dev

# Install dependencies (Alpine - for Docker)
deps-alpine:
	@echo "Installing dependencies for Alpine..."
	apk add --no-cache gcc musl-dev make openldap-dev yaml-dev

# Run
run: $(TARGET)
	@echo "Running RdpBroker..."
	$(TARGET)

# Debug build
debug: CFLAGS += -g -DDEBUG
debug: clean all

.PHONY: all clean directories deps-debian deps-alpine run debug
