v3d: Pass the version being generated to the pack generator script.

It turns out that most V3D versions change very few packets, so keeping
separate copies of the XML per version makes changing the XML a pain as
you have to replicate your changes to each one.  This is the start of
changing it so that one XML can generate headers for multiple versions.
This commit is contained in:
Eric Anholt 2018-06-27 10:46:04 -07:00
parent a99c9e63a0
commit 6f7ad7ed11
4 changed files with 22 additions and 20 deletions

View file

@ -42,26 +42,30 @@ LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/broadcom/, $(BROADCOM_GE
define header-gen
@mkdir -p $(dir $@)
@echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
$(hide) $(PRIVATE_SCRIPT) $(PRIVATE_SCRIPT_FLAGS) $(PRIVATE_XML) > $@
$(hide) $(PRIVATE_SCRIPT) $(PRIVATE_SCRIPT_FLAGS) $(PRIVATE_XML) $(PRIVATE_VER) > $@
endef
$(intermediates)/broadcom/cle/v3d_packet_v21_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/cle/gen_pack_header.py
$(intermediates)/broadcom/cle/v3d_packet_v21_pack.h: PRIVATE_XML := $(LOCAL_PATH)/cle/v3d_packet_v21.xml
$(intermediates)/broadcom/cle/v3d_packet_v21_pack.h: PRIVATE_VER := 21
$(intermediates)/broadcom/cle/v3d_packet_v21_pack.h: $(LOCAL_PATH)/cle/v3d_packet_v21.xml $(LOCAL_PATH)/cle/gen_pack_header.py
$(call header-gen)
$(intermediates)/broadcom/cle/v3d_packet_v33_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/cle/gen_pack_header.py
$(intermediates)/broadcom/cle/v3d_packet_v33_pack.h: PRIVATE_XML := $(LOCAL_PATH)/cle/v3d_packet_v33.xml
$(intermediates)/broadcom/cle/v3d_packet_v33_pack.h: PRIVATE_VER := 33
$(intermediates)/broadcom/cle/v3d_packet_v33_pack.h: $(LOCAL_PATH)/cle/v3d_packet_v33.xml $(LOCAL_PATH)/cle/gen_pack_header.py
$(call header-gen)
$(intermediates)/broadcom/cle/v3d_packet_v41_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/cle/gen_pack_header.py
$(intermediates)/broadcom/cle/v3d_packet_v41_pack.h: PRIVATE_XML := $(LOCAL_PATH)/cle/v3d_packet_v41.xml
$(intermediates)/broadcom/cle/v3d_packet_v41_pack.h: PRIVATE_VER := 41
$(intermediates)/broadcom/cle/v3d_packet_v41_pack.h: $(LOCAL_PATH)/cle/v3d_packet_v41.xml $(LOCAL_PATH)/cle/gen_pack_header.py
$(call header-gen)
$(intermediates)/broadcom/cle/v3d_packet_v42_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/cle/gen_pack_header.py
$(intermediates)/broadcom/cle/v3d_packet_v42_pack.h: PRIVATE_XML := $(LOCAL_PATH)/cle/v3d_packet_v42.xml
$(intermediates)/broadcom/cle/v3d_packet_v42_pack.h: PRIVATE_VER := 42
$(intermediates)/broadcom/cle/v3d_packet_v42_pack.h: $(LOCAL_PATH)/cle/v3d_packet_v42.xml $(LOCAL_PATH)/cle/gen_pack_header.py
$(call header-gen)

View file

@ -30,7 +30,7 @@ $(BROADCOM_GENXML_GENERATED_FILES): cle/gen_pack_header.py
.xml_pack.h:
$(MKDIR_GEN)
$(PYTHON_GEN) $(srcdir)/cle/gen_pack_header.py $< > $@ || ($(RM) $@; false)
$(PYTHON_GEN) $(srcdir)/cle/gen_pack_header.py $< `echo $@ | sed -r 's|.*_v([0-9][0-9])_pack.h|\1|g'` > $@ || ($(RM) $@; false)
GEN_ZIPPED = $(srcdir)/../intel/genxml/gen_zipped_file.py
cle/v3d_xml.h: $(GEN_ZIPPED) $(BROADCOM_GENXML_XML_FILES)

View file

@ -392,7 +392,7 @@ class Value(object):
self.value = int(attrs["value"])
class Parser(object):
def __init__(self):
def __init__(self, ver):
self.parser = xml.parsers.expat.ParserCreate()
self.parser.StartElementHandler = self.start_element
self.parser.EndElementHandler = self.end_element
@ -403,6 +403,7 @@ class Parser(object):
# Set of enum names we've seen.
self.enums = set()
self.registers = {}
self.ver = ver
def gen_prefix(self, name):
if name[0] == "_":
@ -415,8 +416,7 @@ class Parser(object):
def start_element(self, name, attrs):
if name == "vcxml":
self.platform = "V3D {}".format(attrs["gen"])
self.ver = attrs["gen"].replace('.', '')
self.platform = "V3D {}.{}".format(self.ver[0], self.ver[1])
print(pack_header % {'license': license, 'platform': self.platform, 'guard': self.gen_guard()})
elif name in ("packet", "struct", "register"):
default_field = None
@ -579,5 +579,5 @@ if len(sys.argv) < 2:
input_file = sys.argv[1]
p = Parser()
p = Parser(sys.argv[2])
p.parse(input_file)

View file

@ -26,8 +26,18 @@ v3d_versions = [
]
v3d_xml_files = []
foreach v: v3d_versions
v3d_xml_files += 'v3d_packet_v@0@.xml'.format(v)
v3d_xml_pack = []
foreach v : v3d_versions
f = 'v3d_packet_v@0@.xml'.format(v)
_name = '@0@_pack.h'.format(f.split('.')[0])
v3d_xml_files += f
v3d_xml_pack += custom_target(
_name,
input : ['gen_pack_header.py', f],
output : _name,
command : [prog_python2, '@INPUT@', '@0@'.format(v)],
capture : true,
)
endforeach
v3d_xml_h = custom_target(
@ -38,18 +48,6 @@ v3d_xml_h = custom_target(
capture : true,
)
v3d_xml_pack = []
foreach f : v3d_xml_files
_name = '@0@_pack.h'.format(f.split('.')[0])
v3d_xml_pack += custom_target(
_name,
input : ['gen_pack_header.py', f],
output : _name,
command : [prog_python2, '@INPUT@'],
capture : true,
)
endforeach
libbroadcom_cle = static_library(
['broadcom_cle', v3d_xml_h],
'v3d_decoder.c',