]> Pileus Git - lackey/blob - makefile
Start work on line editing
[lackey] / makefile
1 # lackey - curses calendar program
2 # See COPYING file for license details.
3
4 -include config.mk
5
6 # Settings
7 VERSION   ?= 0.1-rc1
8 PREFIX    ?= /usr/local
9 MANPREFIX ?= $(PREFIX)/share/man
10
11 # Compiler
12 GCC       ?= gcc
13 CFLAGS    ?= -Wall --std=c99
14 LDFLAGS   ?= -lncursesw -lical
15
16 # Sources
17 PROG      ?= lackey
18 PROG_SRC  ?= main view form date cal args conf util
19 TEST      ?= test
20 TEST_SRC  ?= test form date cal conf util
21 VIEWS     ?= day week month year events todo settings help edit
22 CALS      ?= dummy ical
23
24 # Objects
25 views/%.o  cals/%.o:  CFLAGS += -Isrc
26 src/view.o views/%.o: CFLAGS += $(strip $(shell pkg-config --cflags ncursesw))
27 src/form.o:           CFLAGS += $(strip $(shell pkg-config --cflags ncursesw))
28
29 # Targets
30 all: $(PROG)
31
32 clean:
33         rm -f src/*.o views/*.o cals/*.o $(PROG) $(TEST)
34
35 dist:
36         tar -czf $(PROG)-$(VERSION).tar.gz --transform s::$(PROG)-$(VERSION)/: \
37                 README COPYING config.mk.example makefile */*.txt */*.1 */*.c */*.h
38
39 install: all
40         install -m 755 -D $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
41         install -m 644 -D doc/$(PROG).1 $(DESTDIR)$(MANPREFIX)/man1/$(PROG).1
42
43 uninstall:
44         rm -f $(DESTDIR)$(PREFIX)/bin/$(PROG)
45         rm -f $(DESTDIR)$(MANPREFIX)/man1/$(PROG).1
46
47 memcheck: $(PROG)
48         valgrind --log-file=valgrind.out \
49                  --track-origins=yes     \
50                  --leak-check=full       \
51                  --leak-resolution=high  \
52                  ./$(PROG)
53
54 # Rules
55 $(PROG): $(PROG_SRC:%=src/%.o) $(VIEWS:%=views/%.o) $(CALS:%=cals/%.o)
56         $(GCC) $(CFLAGS) -o $@ $+ $(LDFLAGS)
57
58 $(TEST): $(TEST_SRC:%=src/%.o) $(CALS:%=cals/%.o)
59         $(GCC) $(CFLAGS) -o $@ $+ $(LDFLAGS)
60
61 %.o: %.c $(wildcard src/*.h makefile config.mk)
62         $(GCC) $(CFLAGS) -c -o $@ $<
63
64 .PHONY: all clean dist install uninstall