75 lines
No EOL
1.6 KiB
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 |