-# Settings
-CC = gcc
-CFLAGS = -Wall --std=c99
-CPPFLAGS =
-LDFLAGS = -lncursesw
-PROG = acal
+-include config.mk
-# Views
-SOURCES = main screen
-VIEWS = day week month year todo notes settings help
+# Settings
+CC ?= gcc
+CFLAGS ?= -Wall --std=c99
+CPPFLAGS ?= -Isrc
+LDFLAGS ?= -lncursesw
-default: test
+# Sources
+PROG = acal
+TEST = test
+SOURCES = main screen util
+TESTS = test util
+VIEWS = day week month year todo notes settings help
# Targets
-all: $(PROG)
+all: $(PROG) $(TEST)
+
+run-$(PROG): $(PROG)
+ @urxvt -e ./$<
+ @cat acal.log
-test: $(PROG)
+run-$(TEST): $(TEST)
./$<
clean:
- rm -f *.o view/*.o $(PROG)
+ rm -f src/*.o view/*.o $(PROG) $(TEST)
# Rules
-$(PROG): $(SOURCES:%=%.o) $(VIEWS:%=view/%.o)
+$(PROG): $(SOURCES:%=src/%.o) $(VIEWS:%=view/%.o)
+ $(CC) $(CLFAGS) -o $@ $+ $(LDFLAGS)
+
+$(TEST): $(TESTS:%=src/%.o) $(VIEWS:%=view/%.o)
$(CC) $(CLFAGS) -o $@ $+ $(LDFLAGS)
%.o: %.c $(SOURCES:%=%.h) makefile