42 lines
921 B
Makefile
42 lines
921 B
Makefile
TARGET = boru
|
|
SRCDIR = source
|
|
INCDIR = include
|
|
BUILDDIR = build
|
|
|
|
SOURCES = $(wildcard $(SRCDIR)/*.c)
|
|
OBJECTS = $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SOURCES))
|
|
|
|
CC = gcc
|
|
LIBS = -lcrypt
|
|
CFLAGS = -Wall -Wextra -Werror -Wl,-z,now
|
|
CFLAGS_RELEASE = $(CFLAGS) -O2 -s -D_FORTIFY_SOURCE=2
|
|
CFLAGS_DEBUG = $(CFLAGS) -O0 -g -fsanitize=undefined
|
|
|
|
all: release
|
|
|
|
release: CFLAGS := $(CFLAGS_RELEASE)
|
|
release: $(BUILDDIR) $(TARGET)
|
|
|
|
debug: CFLAGS := $(CFLAGS_DEBUG)
|
|
debug: $(BUILDDIR) $(TARGET)
|
|
|
|
$(BUILDDIR):
|
|
mkdir -p $(BUILDDIR)
|
|
|
|
$(BUILDDIR)/%.o: $(SRCDIR)/%.c | $(BUILDDIR)
|
|
$(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@
|
|
|
|
$(TARGET): $(OBJECTS)
|
|
$(CC) $(CFLAGS) -I$(INCDIR) $(OBJECTS) -o $(BUILDDIR)/$(TARGET) $(LIBS)
|
|
|
|
install: $(TARGET)
|
|
install -m 4755 $(BUILDDIR)/$(TARGET) /usr/bin/$(TARGET)
|
|
|
|
uninstall:
|
|
rm -rf /usr/bin/$(TARGET)
|
|
rm -rf /etc/boru.conf
|
|
|
|
clean:
|
|
rm -rf $(BUILDDIR)
|
|
|
|
.PHONY: all debug release install uninstall clean |