+# lackey - curses calendar program
+# See COPYING file for license details.
+
-include config.mk
# Settings
-CC ?= gcc
-CFLAGS ?= -Wall --std=c99
-CPPFLAGS ?= -Isrc
-LDFLAGS ?= -lncursesw
+VERSION ?= 0.1-rc1
+PREFIX ?= /usr/local
+MANPREFIX ?= $(PREFIX)/share/man
+
+# Compiler
+GCC ?= gcc
+CFLAGS ?= -Wall --std=c99
+CPPFLAGS ?= -Isrc
+LDFLAGS ?= -lncursesw -lical
# Sources
-PROG = lackey
-TEST = test
-SOURCES = main screen util
-TESTS = test util
-VIEWS = day week month year todo notes settings help
+PROG ?= lackey
+PROG_SRC ?= main view date cal conf util
+TEST ?= test
+TEST_SRC ?= test date cal conf util
+VIEWS ?= day week month year events todo settings help edit
+CALS ?= dummy ical
+
+# For ncursesw
+CPPFLAGS += $(strip $(shell pkg-config --cflags ncursesw))
# Targets
-all: $(PROG) $(TEST)
+all: $(PROG)
+
+clean:
+ rm -f src/*.o views/*.o cals/*.o $(PROG) $(TEST)
-run-$(PROG): $(PROG)
- @urxvt -e ./$<
- @cat /tmp/lackey.log
+dist:
+ tar -czf $(PROG)-$(VERSION).tar.gz --transform s::$(PROG)-$(VERSION)/: \
+ README COPYING config.mk.example makefile */*.txt */*.1 */*.c */*.h
-run-$(TEST): $(TEST)
- ./$<
+install: all
+ install -m 755 -D $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
+ install -m 644 -D doc/$(PROG).1 $(DESTDIR)$(MANPREFIX)/man1/$(PROG).1
-clean:
- rm -f src/*.o view/*.o $(PROG) $(TEST)
+uninstall:
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROG)
+ rm -f $(DESTDIR)$(MANPREFIX)/man1/$(PROG).1
+
+memcheck: $(PROG)
+ valgrind --log-file=valgrind.out \
+ --track-origins=yes \
+ --leak-check=full \
+ --leak-resolution=high \
+ ./$(PROG)
# Rules
-$(PROG): $(SOURCES:%=src/%.o) $(VIEWS:%=view/%.o)
- $(CC) $(CFLAGS) -o $@ $+ $(LDFLAGS)
+$(PROG): $(PROG_SRC:%=src/%.o) $(VIEWS:%=views/%.o) $(CALS:%=cals/%.o)
+ $(GCC) $(CFLAGS) -o $@ $+ $(LDFLAGS)
+
+$(TEST): $(TEST_SRC:%=src/%.o) $(CALS:%=cals/%.o)
+ $(GCC) $(CFLAGS) -o $@ $+ $(LDFLAGS)
-$(TEST): $(TESTS:%=src/%.o) $(VIEWS:%=view/%.o)
- $(CC) $(CFLAGS) -o $@ $+ $(LDFLAGS)
+%.o: %.c $(wildcard src/*.h makefile config.mk)
+ $(GCC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
-%.o: %.c $(SOURCES:%=src/%.h) makefile
- $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
+.PHONY: all clean dist install uninstall