1# Installation directories following GNU conventions
2prefix ?= /usr/local
3exec_prefix = $(prefix)
4bindir = $(exec_prefix)/bin
5sbindir = $(exec_prefix)/sbin
6datarootdir = $(prefix)/share
7datadir = $(datarootdir)
8includedir = $(prefix)/include
9mandir = $(datarootdir)/man
10
11BIN=bin
12OBJ=obj
13SRC=src
14
15CC ?= gcc
16CFLAGS ?= -Wextra -Wall
17
18.PHONY: all install uninstall clean
19
20nms: $(OBJ)/nmscharset.o $(OBJ)/nmstermio.o $(OBJ)/nmseffect.o $(OBJ)/nms.o | $(BIN)
21	$(CC) $(CFLAGS) -o $(BIN)/$@ $^
22
23sneakers: $(OBJ)/nmscharset.o $(OBJ)/nmstermio.o $(OBJ)/nmseffect.o $(OBJ)/sneakers.o | $(BIN)
24	$(CC) $(CFLAGS) -o $(BIN)/$@ $^
25
26all: nms sneakers
27
28all-ncurses: nms-ncurses sneakers-ncurses
29
30nms-ncurses: $(OBJ)/nmscharset.o $(OBJ)/nmstermio_ncurses.o $(OBJ)/nmseffect.o $(OBJ)/nms.o | $(BIN)
31	$(CC) $(CFLAGS) -o $(BIN)/nms $^ -lncurses
32
33sneakers-ncurses: $(OBJ)/nmscharset.o $(OBJ)/nmstermio_ncurses.o $(OBJ)/nmseffect.o $(OBJ)/sneakers.o | $(BIN)
34	$(CC) $(CFLAGS) -o $(BIN)/sneakers $^ -lncurses
35
36$(OBJ)/%.o: $(SRC)/%.c | $(OBJ)
37	$(CC) $(CFLAGS) -o $@ -c $<
38
39$(BIN):
40	mkdir $(BIN)
41
42$(OBJ):
43	mkdir $(OBJ)
44
45clean:
46	rm -rf $(BIN)
47	rm -rf $(OBJ)
48
49install:
50	install -d $(DESTDIR)$(mandir)/man6
51	install -m644 nms.6 sneakers.6 $(DESTDIR)$(mandir)/man6
52	install -d $(DESTDIR)$(bindir)
53	cd $(BIN) && install * $(DESTDIR)$(bindir)
54
55uninstall:
56	rm -f $(DESTDIR)$(bindir)/nms;
57	rm -f $(DESTDIR)$(bindir)/sneakers;
58	rm -f $(DESTDIR)$(mandir)/man6/nms.6
59	rm -f $(DESTDIR)$(mandir)/man6/sneakers.6
60