aboutsummaryrefslogtreecommitdiff
path: root/Makerules
diff options
context:
space:
mode:
Diffstat (limited to 'Makerules')
-rw-r--r--Makerules44
1 files changed, 14 insertions, 30 deletions
diff --git a/Makerules b/Makerules
index 8e49a73..8df0a25 100644
--- a/Makerules
+++ b/Makerules
@@ -232,42 +232,26 @@ ifdef gen-py-const-headers
py-const-files := $(patsubst %.pysym,%.py,$(gen-py-const-headers))
py-const-dir := $(objpfx)
py-const := $(addprefix $(py-const-dir),$(py-const-files))
-py-const-script := $(..)scripts/gen-py-const.awk
+py-const-script := $(..)scripts/gen-as-const.py
-# This is a hack we use to generate .py files with constants for Python
-# pretty printers. It works the same way as gen-as-const.
-# See scripts/gen-py-const.awk for details on how the awk | gcc mechanism
-# works.
+# This is a hack we use to generate .py files with constants for
+# Python code.
#
-# $@.tmp and $@.tmp2 are temporary files we use to store the partial contents
-# of the target file. We do this instead of just writing on $@ because, if the
-# build process terminates prematurely, re-running Make wouldn't run this rule
-# since Make would see that the target file already exists (despite it being
-# incomplete).
+# $@.tmp is a temporary file we use to store the partial contents of
+# the target file. We do this instead of just writing on $@ because,
+# if the build process terminates prematurely, re-running Make
+# wouldn't run this rule since Make would see that the target file
+# already exists (despite it being incomplete).
#
-# The sed line replaces "@name@SOME_NAME@value@SOME_VALUE@" strings from the
-# output of 'gcc -S' with "SOME_NAME = SOME_VALUE" strings.
-# The '-n' option, combined with the '/p' command, makes sed output only the
-# modified lines instead of the whole input file. The output is redirected
-# to a .py file; we'll import it in the pretty printers file to read
-# the constants generated by gen-py-const.awk.
-# The regex has two capturing groups, for SOME_NAME and SOME_VALUE
-# respectively. Notice SOME_VALUE may be prepended by a special character,
-# depending on the assembly syntax (e.g. immediates are prefixed by a '$'
-# in AT&T x86, and by a '#' in ARM). We discard it using a complemented set
-# before the second capturing group.
+# The output is redirected to a .py file; we'll import it in the main
+# Python code to read the constants generated by gen-as-const.py.
$(py-const): $(py-const-dir)%.py: %.pysym $(py-const-script) \
$(common-before-compile)
$(make-target-directory)
- $(AWK) -f $(py-const-script) $< \
- | $(CC) -S -o $@.tmp $(CFLAGS) $(CPPFLAGS) -x c -
- echo '# GENERATED FILE\n' > $@.tmp2
- echo '# Constant definitions for pretty printers.' >> $@.tmp2
- echo '# See gen-py-const.awk for details.\n' >> $@.tmp2
- sed -n -r 's/^.*@name@([^@]+)@value@[^[:xdigit:]Xx-]*([[:xdigit:]Xx-]+)@.*/\1 = \2/p' \
- $@.tmp >> $@.tmp2
- mv -f $@.tmp2 $@
- rm -f $@.tmp
+ $(PYTHON) $(py-const-script) --python \
+ --cc="$(CC) $(CFLAGS) $(CPPFLAGS)" $< \
+ > $@.tmp
+ mv -f $@.tmp $@
generated += $(py-const)
endif # gen-py-const-headers