# 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