apt-layer/Makefile

75 lines
No EOL
1.6 KiB
Makefile

# 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