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)