git/aika/main
Makefile
75 lines2 KB last change raw · history
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)