Fix Tools/scripts/generate_opcode_h.py from issue #17861 to work correctly
when building in a separate object tree. More people should build this way. This may still fail if the source is unwritable, I haven't tested that yet.
This commit is contained in:
parent
68290f4895
commit
67d8dc1f58
|
@ -324,10 +324,10 @@ PGENOBJS= $(POBJS) $(PGOBJS)
|
|||
|
||||
##########################################################################
|
||||
# opcode.h generation
|
||||
OPCODE_H_DIR= Include
|
||||
OPCODE_H_SCRIPT= Tools/scripts/generate_opcode_h.py
|
||||
OPCODE_H= $(srcdir)/$(OPCODE_H_DIR)/opcode.h
|
||||
OPCODE_H_GEN= @OPCODEHGEN@ $(OPCODE_H_SCRIPT) Lib/ $(OPCODE_H)
|
||||
OPCODE_H_DIR= $(srcdir)/Include
|
||||
OPCODE_H_SCRIPT= $(srcdir)/Tools/scripts/generate_opcode_h.py
|
||||
OPCODE_H= $(OPCODE_H_DIR)/opcode.h
|
||||
OPCODE_H_GEN= @OPCODEHGEN@ $(OPCODE_H_SCRIPT) $(srcdir)/Lib/opcode.py $(OPCODE_H)
|
||||
#
|
||||
##########################################################################
|
||||
# AST
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
# This script generates the opcode.h header file.
|
||||
|
||||
import sys
|
||||
if len(sys.argv) > 0:
|
||||
sys.path.insert(0, sys.argv[1])
|
||||
# Importing module from our given src directory.
|
||||
import opcode
|
||||
header = """/* Auto-generated by Tools/scripts/generate_opcode_h.py */
|
||||
#ifndef Py_OPCODE_H
|
||||
#define Py_OPCODE_H
|
||||
|
@ -37,17 +33,20 @@ enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE,
|
|||
"""
|
||||
|
||||
|
||||
def main(outfile='Include/opcode.h'):
|
||||
def main(opcode_py, outfile='Include/opcode.h'):
|
||||
opcode = {}
|
||||
exec(open(opcode_py).read(), opcode)
|
||||
opmap = opcode['opmap']
|
||||
with open(outfile, 'w') as fobj:
|
||||
fobj.write(header)
|
||||
for name in opcode.opname:
|
||||
if name in opcode.opmap:
|
||||
fobj.write("#define %-20s\t%-3s\n" % (name, opcode.opmap[name]))
|
||||
for name in opcode['opname']:
|
||||
if name in opmap:
|
||||
fobj.write("#define %-20s\t%-3s\n" % (name, opmap[name]))
|
||||
if name == 'POP_EXCEPT': # Special entry for HAVE_ARGUMENT
|
||||
fobj.write("#define %-20s\t%-3d\n" %
|
||||
('HAVE_ARGUMENT', opcode.HAVE_ARGUMENT))
|
||||
('HAVE_ARGUMENT', opcode['HAVE_ARGUMENT']))
|
||||
fobj.write(footer)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[2])
|
||||
main(sys.argv[1], sys.argv[2])
|
||||
|
|
Loading…
Reference in New Issue