summaryrefslogtreecommitdiff
path: root/tools/d2c/d2c.mk
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-04-02 11:58:42 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-04-02 12:39:30 (GMT)
commit1db4ef323b7a76093356ae76268132f3760e1631 (patch)
treefec36ee0ec1b6b2010b62ca4177edca0e31e2114 /tools/d2c/d2c.mk
parent1bc80837dde03a32b5ab185067f7bd4c499a9850 (diff)
Rewritten the whole instruction definition format.
Diffstat (limited to 'tools/d2c/d2c.mk')
-rw-r--r--tools/d2c/d2c.mk48
1 files changed, 33 insertions, 15 deletions
diff --git a/tools/d2c/d2c.mk b/tools/d2c/d2c.mk
index dbc9b83..10bd226 100644
--- a/tools/d2c/d2c.mk
+++ b/tools/d2c/d2c.mk
@@ -5,20 +5,27 @@ d2c_verbose = $(d2c_verbose_@AM_V@)
d2c_verbose_ = $(d2c_verbose_@AM_DEFAULT_V@)
d2c_verbose_0 = @echo " D2C " $<;
+fini_verbose = $(fini_verbose_@AM_V@)
+fini_verbose_ = $(fini_verbose_@AM_DEFAULT_V@)
+fini_verbose_0 = echo " FINI " `basename $$f`;
+
fix_verbose = $(fix_verbose_@AM_V@)
fix_verbose_ = $(fix_verbose_@AM_DEFAULT_V@)
fix_verbose_0 = echo " FIX " `basename $$f`;
# D2C_BIN =
-# D2C_TYPE =
+# GEN_BIN =
+
# D2C_OUTDIR =
+# D2C_TYPE =
# D2C_ARCH =
-# D2C_HEADER =
+# D2C_ARCH_CN =
+# D2C_GUARD =
# D2C_ENCODINGS =
-# D2C_MACROS =
-# D2C_OPERANDS =
-# D2C_PREFIX =
+# D2C_ID_PREFIX =
+# D2C_ID_COUNT =
+# D2C_SPECIFIC =
# FIXED_C_INCLUDES =
# FIXED_H_INCLUDES =
@@ -27,25 +34,36 @@ fix_verbose_0 = echo " FIX " `basename $$f`;
SUFFIXES = .g
.d.g:
- $(d2c_verbose)$(D2C_BIN) -i $< -t $(D2C_TYPE) -d $(D2C_OUTDIR) -a $(D2C_ARCH) -H $(D2C_HEADER) $(D2C_ENCODINGS) $(D2C_MACROS) $(D2C_OPERANDS) -p "$(D2C_PREFIX)"
+ $(d2c_verbose)$(D2C_BIN) -x cc -o $(D2C_OUTDIR) -t $(D2C_TYPE) -a $(D2C_ARCH) -n $(D2C_ARCH_CN) \
+ -G $(D2C_GUARD) $(D2C_ENCODINGS) --id-prefix=$(D2C_ID_PREFIX) --id-expected=$(D2C_ID_COUNT) \
+ $(D2C_SPECIFIC) $<
@touch $@
-d2c_final_rules: fix_includes_in_c_templates fix_includes_in_h_templates untabify_disass
+d2c_final_rules: finish_headers fix_includes_in_c_templates fix_includes_in_h_templates untabify_disass
+
+finish_headers:
+ @for f in `find $(D2C_OUTDIR) -type f -name '*.h'`; do \
+ grep -q '#endif' $$f && continue; \
+ $(fini_verbose)$(D2C_BIN) -x fini -o $(D2C_OUTDIR) -t $(D2C_TYPE) -a $(D2C_ARCH) -n $(D2C_ARCH_CN) \
+ -G $(D2C_GUARD) $(D2C_ENCODINGS) --id-prefix=$(D2C_ID_PREFIX) --id-expected=$(D2C_ID_COUNT) \
+ $(D2C_SPECIFIC) $$f \
+ || ( echo "Can not complete $$f" ; exit 1 ) ; \
+ done
fix_includes_in_c_templates:
- @for f in `find .gen/ -name '*tmpl.c'`; do \
- if grep -q '##INCLUDES##' $$f; then \
- $(fix_verbose)sed -i 's@##INCLUDES##@$(FIXED_C_INCLUDES)@' $$f; \
- fi; \
+ @for f in `find $(D2C_OUTDIR) -type f -name '*.c'`; do \
+ if grep -q '##INCLUDES##' $$f; then \
+ $(fix_verbose)sed -i 's@##INCLUDES##@$(FIXED_C_INCLUDES)@' $$f; \
+ fi; \
done
fix_includes_in_h_templates:
- @for f in `find .gen/ -name '*tmpl.h'`; do \
- if grep -q '##INCLUDES##' $$f; then \
+ @for f in `find $(D2C_OUTDIR) -type f -name '*.h'`; do \
+ if grep -q '##INCLUDES##' $$f; then \
$(fix_verbose)sed -i 's@##INCLUDES##@$(FIXED_H_INCLUDES)@' $$f ; \
- fi; \
+ fi; \
done
# Merci http://www.commandlinefu.com/commands/view/10276/grep-tab-t
untabify_disass:
- @find .gen/ -name '*[ch]' -exec grep -q $$'\t' {} \; -exec sed -i 's/\t/ /g' {} \;
+ @find $(D2C_OUTDIR) -type f -name '*.[ch]' -exec grep -q $$'\t' {} \; -exec sed -i 's/\t/ /g' {} \;