aboutsummaryrefslogtreecommitdiffstats
path: root/src/broadcom
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2018-06-27 10:46:04 -0700
committerEric Anholt <[email protected]>2018-06-29 13:36:28 -0700
commit6f7ad7ed11d92a302e309c3bc042cc76547cd2f7 (patch)
treea29dfbff969b056ac47e1f390a05bad831200f08 /src/broadcom
parenta99c9e63a07477634ab73945e5da5b9f580e5828 (diff)
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.
Diffstat (limited to 'src/broadcom')
-rw-r--r--src/broadcom/Android.genxml.mk6
-rw-r--r--src/broadcom/Makefile.genxml.am2
-rw-r--r--src/broadcom/cle/gen_pack_header.py8
-rw-r--r--src/broadcom/cle/meson.build26
4 files changed, 22 insertions, 20 deletions
diff --git a/src/broadcom/Android.genxml.mk b/src/broadcom/Android.genxml.mk
index fc5494fb673..908569fcc76 100644
--- a/src/broadcom/Android.genxml.mk
+++ b/src/broadcom/Android.genxml.mk
@@ -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)
diff --git a/src/broadcom/Makefile.genxml.am b/src/broadcom/Makefile.genxml.am
index 6cfabaebcb8..7949bf6f705 100644
--- a/src/broadcom/Makefile.genxml.am
+++ b/src/broadcom/Makefile.genxml.am
@@ -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)
diff --git a/src/broadcom/cle/gen_pack_header.py b/src/broadcom/cle/gen_pack_header.py
index 5fde7bb07ad..df547fb5ab1 100644
--- a/src/broadcom/cle/gen_pack_header.py
+++ b/src/broadcom/cle/gen_pack_header.py
@@ -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)
diff --git a/src/broadcom/cle/meson.build b/src/broadcom/cle/meson.build
index b1ff8322524..a45538c986f 100644
--- a/src/broadcom/cle/meson.build
+++ b/src/broadcom/cle/meson.build
@@ -26,30 +26,28 @@ v3d_versions = [
]
v3d_xml_files = []
-foreach v: v3d_versions
- v3d_xml_files += 'v3d_packet_v@[email protected]'.format(v)
-endforeach
-
-v3d_xml_h = custom_target(
- 'v3d_xml.h',
- input : ['../../intel/genxml/gen_zipped_file.py', v3d_xml_files],
- output : 'v3d_xml.h',
- command : [prog_python2, '@INPUT@'],
- capture : true,
-)
-
v3d_xml_pack = []
-foreach f : v3d_xml_files
+foreach v : v3d_versions
+ f = 'v3d_packet_v@[email protected]'.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@'],
+ command : [prog_python2, '@INPUT@', '@0@'.format(v)],
capture : true,
)
endforeach
+v3d_xml_h = custom_target(
+ 'v3d_xml.h',
+ input : ['../../intel/genxml/gen_zipped_file.py', v3d_xml_files],
+ output : 'v3d_xml.h',
+ command : [prog_python2, '@INPUT@'],
+ capture : true,
+)
+
libbroadcom_cle = static_library(
['broadcom_cle', v3d_xml_h],
'v3d_decoder.c',