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:
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user