mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 13:00:09 +01:00
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:
parent
a99c9e63a0
commit
6f7ad7ed11
4 changed files with 22 additions and 20 deletions
|
|
@ -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',
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue