summaryrefslogtreecommitdiff
path: root/project/codegen.mk
diff options
context:
space:
mode:
Diffstat (limited to 'project/codegen.mk')
-rw-r--r--project/codegen.mk46
1 files changed, 46 insertions, 0 deletions
diff --git a/project/codegen.mk b/project/codegen.mk
new file mode 100644
index 0000000..fe1b610
--- /dev/null
+++ b/project/codegen.mk
@@ -0,0 +1,46 @@
+clean: clean-gen
+
+clean-gen:
+ rm -f gen.tag
+ rm -f $(GEN_IR_SRCS)
+ rm -f $(GEN_IR_HEADERS)
+
+GEN_ALL = $(GEN_IR_SRCS) \
+ $(GEN_IR_HEADERS) \
+
+
+# gen-ir
+GEN_IR_TOOL = $(SOURCE_DIR)/scripts/gen_ir.py
+GEN_IR_SPEC = $(SOURCE_DIR)/scripts/ir_spec.py
+
+
+build/gen/ir/ir/%.c: $(SOURCE_DIR)/scripts/templates/%.c \
+ $(GEN_IR_TOOL) $(GEN_IR_SPEC) tree.tag
+ $(GEN_IR_TOOL) $(GEN_IR_SPEC) $< > $@
+
+
+build/gen/ir/ir/%.h: $(SOURCE_DIR)/scripts/templates/%.h \
+ $(GEN_IR_TOOL) $(GEN_IR_SPEC) tree.tag
+ $(GEN_IR_TOOL) $(GEN_IR_SPEC) $< > $@
+
+
+build/gen/include/libfirm/nodes.h: $(SOURCE_DIR)/scripts/templates/nodes.h \
+ $(GEN_IR_TOOL) $(GEN_IR_SPEC) tree.tag
+ $(GEN_IR_TOOL) $(GEN_IR_SPEC) $< > $@
+
+
+
+# gen-all
+gen-ir: $(GEN_IR_SRCS) $(GEN_IR_HEADERS)
+
+gen-all: gen-ir
+
+gen.tag: $(GEN_ALL)
+ touch gen.tag
+
+gen: gen.tag
+
+
+.PHONY: clean-gen \
+ gen gen-all \
+ gen-ir