From: Eric Anholt Date: Wed, 27 Jun 2018 17:46:04 +0000 (-0700) Subject: v3d: Pass the version being generated to the pack generator script. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6f7ad7ed11d92a302e309c3bc042cc76547cd2f7;p=mesa.git 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. --- 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@0@.xml'.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@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@'], + 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',