]> Pileus Git - ~andy/ct/blobdiff - common.mk
Convert to plain old make
[~andy/ct] / common.mk
diff --git a/common.mk b/common.mk
new file mode 100644 (file)
index 0000000..43996c7
--- /dev/null
+++ b/common.mk
@@ -0,0 +1,41 @@
+# Utilities
+GCC      ?= gcc
+LEX      ?= flex
+YACC     ?= bison
+CT       ?= ct
+
+CFLAGS   ?= -Wall -Werror -g --std=c99
+
+ifdef PKGS
+CPPFLAGS += $(shell pkg-config --cflags $(PKGS))
+LDFLAGS  += $(shell pkg-config --libs   $(PKGS))
+endif
+
+# Targets
+all: $(PROG)
+
+clean:
+       rm -f $(PROG) *.o *.a parse.h parse.c scan.c
+
+# C Rules
+$(PROG): $(SOURCES:%.c=%.o)
+       $(GCC) $(CFLAGS) -o $@ $+ $(LDFLAGS)
+
+%.o: %.c makefile
+       $(GCC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
+
+# Lex / Yacc rules
+%.c: %.l parse.h makefile
+       $(LEX) -o $@ $<
+
+%.c %.h: %.y makefile
+       $(YACC) -d -o $*.c $*.y
+
+# CT Rules
+%.c: %.ct makefile
+       $(CT) -o $@ $<
+
+# Miscellaneous
+.SECONDARY:
+
+# vim: ft=make