# apt-layer Makefile # Build system for apt-layer C implementation CC = gcc CFLAGS = -Wall -Wextra -std=c99 -g -O2 LDFLAGS = LIBS = -lyaml -ljansson # Directories SRCDIR = src INCDIR = include OBJDIR = obj BINDIR = bin # Source files SOURCES = $(wildcard $(SRCDIR)/*.c) OBJECTS = $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o) # Target binary TARGET = $(BINDIR)/apt-layer # Default target all: $(TARGET) # Create directories $(OBJDIR): mkdir -p $(OBJDIR) $(BINDIR): mkdir -p $(BINDIR) # Build target $(TARGET): $(OBJECTS) | $(BINDIR) $(CC) $(OBJECTS) -o $@ $(LDFLAGS) $(LIBS) # Compile source files $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR) $(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@ # Clean build artifacts clean: rm -rf $(OBJDIR) $(BINDIR) rm -f $(TARGET) # Install (requires sudo) install: $(TARGET) sudo cp $(TARGET) /usr/local/bin/ sudo chmod +x /usr/local/bin/apt-layer # Uninstall uninstall: sudo rm -f /usr/local/bin/apt-layer # Run tests test: $(TARGET) ./tests/run_tests.sh # Development target with debug info debug: CFLAGS += -DDEBUG -g3 debug: $(TARGET) # Check dependencies check-deps: @echo "Checking dependencies..." @which gcc > /dev/null || (echo "gcc not found" && exit 1) @pkg-config --exists yaml-0.1 || (echo "libyaml-dev not found" && exit 1) @pkg-config --exists jansson || (echo "libjansson-dev not found" && exit 1) @echo "All dependencies found" # Install dependencies (Ubuntu/Debian) install-deps: sudo apt update sudo apt install -y build-essential libyaml-dev libjansson-dev pkg-config .PHONY: all clean install uninstall test debug check-deps install-deps