aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2023-05-10 20:38:32 +0200
committerlemon <lsof@mailbox.org>2023-05-10 20:38:32 +0200
commit9100ed2b5dd01df8e6b766c7bc2a12c0dd44f1ff (patch)
tree0598b126bdddb7db462a2f0915e272d4345c0c39 /Makefile
initial commit
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile33
1 files changed, 33 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f9f3e12
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,33 @@
+SRC=main.c io.c mem.c parse.c lex.c type.c targ.c eval.c ir.c irdump.c
+CFLAGS=-Wall -std=c11 -pedantic
+OBJ=$(patsubst %.c,obj/%.o,$(SRC))
+OUT=cchomp
+
+all: CFLAGS += -g -Og
+all: $(OUT)
+
+opt: CFLAGS += -O2
+opt: $(OUT)
+
+dbg: CFLAGS += -g -fsanitize=address -fsanitize=undefined
+dbg: $(OUT)
+
+$(OUT): $(OBJ)
+ $(CC) $(CFLAGS) -o $@ $(OBJ)
+
+obj/%.o: %.c common.h
+ @mkdir -p obj/
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+obj/main.o: parse.h
+obj/parse.o: parse.h ir.h
+obj/ir.o: ir.h
+obj/irdump.o: ir.h op.def
+obj/lex.o: parse.h
+obj/eval.o: parse.h
+obj/io.o: parse.h keywords.def
+
+clean:
+ $(RM) -r obj/ $(OUT)
+
+.PHONY: clean