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