CC = gcc
VERSION = $(shell cat VERSION)
PREFIX = /usr/local
SCDOC = scdoc
CFLAGS = -Wall -Wextra -O2 -pedantic \
-D_FORTIFY_SOURCE=2 -fstack-protector-strong \
-fPIE -Wl,-pie \
-DVERSION=\"$(VERSION)\" -DPREFIX=\"$(PREFIX)\"
BIN_DIR = bin
C_DIR = c
SH_DIR = sh
PY_DIR = py
MAN_DIR = man
COMP_DIR = completions
MANDIR = $(PREFIX)/share/man/man1
BASH_COMP_DIR = $(PREFIX)/share/bash-completion/completions
ZSH_COMP_DIR = $(PREFIX)/share/zsh/site-functions
TARGETS = $(BIN_DIR)/arvelie $(BIN_DIR)/neralie
MAN_PAGES = $(MAN_DIR)/arvelie.1 $(MAN_DIR)/neralie.1
.PHONY: all clean scripts install uninstall
all: $(TARGETS) scripts $(MAN_PAGES)
$(BIN_DIR):
mkdir -p $(BIN_DIR)
$(BIN_DIR)/%: $(C_DIR)/%.c | $(BIN_DIR)
$(CC) $(CFLAGS) $< -o $@
$(MAN_DIR)/%.1: $(MAN_DIR)/%.1.scd
$(SCDOC) < $< > $@
scripts:
chmod +x $(SH_DIR)/*.sh
chmod +x $(PY_DIR)/*.py
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
mkdir -p $(DESTDIR)$(MANDIR)
mkdir -p $(DESTDIR)$(BASH_COMP_DIR)
mkdir -p $(DESTDIR)$(ZSH_COMP_DIR)
cp $(BIN_DIR)/arvelie $(DESTDIR)$(PREFIX)/bin/arvelie
cp $(BIN_DIR)/neralie $(DESTDIR)$(PREFIX)/bin/neralie
cp $(MAN_DIR)/arvelie.1 $(DESTDIR)$(MANDIR)/arvelie.1
cp $(MAN_DIR)/neralie.1 $(DESTDIR)$(MANDIR)/neralie.1
cp $(COMP_DIR)/aika.bash $(DESTDIR)$(BASH_COMP_DIR)/arvelie
ln -sf arvelie $(DESTDIR)$(BASH_COMP_DIR)/neralie
cp $(COMP_DIR)/_aika.zsh $(DESTDIR)$(ZSH_COMP_DIR)/_arvelie
ln -sf _arvelie $(DESTDIR)$(ZSH_COMP_DIR)/_neralie
@echo "Installed binaries, man pages, and completions ($(VERSION)) to $(PREFIX)"
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/arvelie
rm -f $(DESTDIR)$(PREFIX)/bin/neralie
rm -f $(DESTDIR)$(MANDIR)/arvelie.1
rm -f $(DESTDIR)$(MANDIR)/neralie.1
rm -f $(DESTDIR)$(BASH_COMP_DIR)/arvelie
rm -f $(DESTDIR)$(BASH_COMP_DIR)/neralie
rm -f $(DESTDIR)$(ZSH_COMP_DIR)/_arvelie
rm -f $(DESTDIR)$(ZSH_COMP_DIR)/_neralie
@echo "Uninstalled binaries, man pages, and completions"
clean:
rm -rf $(BIN_DIR)
rm -f $(MAN_PAGES)