glapi: Update gl_enum.py to generate enum tables for multiple APIs
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 27 Apr 2010 12:57:56 +0000 (08:57 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 28 Apr 2010 18:05:19 +0000 (14:05 -0400)
src/mesa/glapi/gen/Makefile
src/mesa/glapi/gen/gl_enums.py

index 84600bdd9805eb894a5670fe04759ed31c446267..10998b2ce234f1422b75b2ee699b24ec1db2bc8b 100644 (file)
@@ -151,8 +151,10 @@ $(MESA_DIR)/sparc/glapi_sparc.S: gl_SPARC_asm.py $(COMMON)
 
 ######################################################################
 
-$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_API.xml \
+               -f $(MESA_DIR)/es/glapi/es1_API.xml \
+               -f $(MESA_DIR)/es/glapi/es2_API.xml > $@
 
 $(MESA_DIR)/main/remap_helper.h: remap_helper.py $(COMMON)
        $(PYTHON2) $(PYTHON_FLAGS) $< > $@
index 3a9ea3c86c719e670d78cac9ff54a9efefaa50de..644e085522962fff04158f745caaa476603ec8a5 100644 (file)
@@ -151,8 +151,10 @@ int _mesa_lookup_enum_by_name( const char *symbol )
                return
 
 
-       def printBody(self, api):
-               self.process_enums( api )
+       def printBody(self, api_list):
+               self.enum_table = {}
+               for api in api_list:
+                       self.process_enums( api )
 
                keys = self.enum_table.keys()
                keys.sort()
@@ -209,16 +211,20 @@ int _mesa_lookup_enum_by_name( const char *symbol )
 
 
        def process_enums(self, api):
-               self.enum_table = {}
-               
                for obj in api.enumIterateByName():
                        if obj.value not in self.enum_table:
                                self.enum_table[ obj.value ] = []
 
 
+                       enum = self.enum_table[ obj.value ]
                        name = "GL_" + obj.name
                        priority = obj.priority()
-                       self.enum_table[ obj.value ].append( [name, priority] )
+                       already_in = False;
+                       for n, p in enum:
+                               if n == name:
+                                       already_in = True
+                       if not already_in:
+                               enum.append( [name, priority] )
 
 
 def show_usage():
@@ -226,18 +232,16 @@ def show_usage():
        sys.exit(1)
 
 if __name__ == '__main__':
-       file_name = "gl_API.xml"
-
        try:
                (args, trail) = getopt.getopt(sys.argv[1:], "f:")
        except Exception,e:
                show_usage()
 
+       api_list = []
        for (arg,val) in args:
                if arg == "-f":
-                       file_name = val
-
-       api = gl_XML.parse_GL_API( file_name )
+                       api = gl_XML.parse_GL_API( val )
+                       api_list.append(api);
 
        printer = PrintGlEnums()
-       printer.Print( api )
+       printer.Print( api_list )