--- /dev/null
+CC ?= clang
+CFLAGS += -Wall -Wextra -Wno-missing-field-initializers -O3 -std=c99 -MD -DLICE_TARGET_AMD64
+LDFLAGS +=
+
+LICESOURCES = ast.c parse.c lice.c gen.c gen_amd64.c lexer.c util.c conv.c decl.c init.c list.c opt.c
+ARGSSOURCES = misc/argsgen.c util.c list.c
+TESTSOURCES = test.c util.c list.c
+LICEOBJECTS = $(LICESOURCES:.c=.o)
+TESTOBJECTS = $(TESTSOURCES:.c=.o)
+ARGSOBJECTS = $(ARGSSOURCES:.c=.o)
+LICEDEPENDS = $(LICESOURCES:.c=.d)
+TESTDEPENDS = $(TESTSOURCES:.c=.d)
+ARGSDEPENDS = $(ARGSSOURCES:.c=.d)
+LICEBIN = lice
+TESTBIN = testsuite
+ARGSBIN = argsgenerator
+
+all: $(LICEBIN) $(TESTBIN)
+
+$(LICEBIN): $(LICEOBJECTS)
+ $(CC) $(LDFLAGS) $(LICEOBJECTS) -o $@
+
+$(TESTBIN): $(TESTOBJECTS)
+ $(CC) $(LDFLAGS) $(TESTOBJECTS) -o $@
+
+$(ARGSBIN): $(ARGSOBJECTS)
+ $(CC) $(LDFLAGS) $(ARGSOBJECTS) -o $@
+
+c.o:
+ $(CC) -c $(CFLAGS) $< -o $@
+
+args: $(ARGSBIN)
+ @./$(ARGSBIN)
+
+clean:
+ rm -f $(LICEOBJECTS)
+ rm -f $(TESTOBJECTS)
+ rm -f $(LICEDEPENDS)
+ rm -f $(TESTDEPENDS)
+ rm -f $(ARGSDEPENDS)
+ rm -f $(LICEBIN)
+ rm -f $(TESTBIN)
+ rm -f $(ARGSBIN)
+
+test: $(LICEBIN) $(TESTBIN)
+ @./$(TESTBIN)