Mesa (master): mapi: Allow blocks to be disabled from the output.

Chia-I Wu olv at kemper.freedesktop.org
Fri Dec 24 09:34:22 UTC 2010


Module: Mesa
Branch: master
Commit: 0c205484bfe3de23c370deeba43dff7939179b5a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0c205484bfe3de23c370deeba43dff7939179b5a

Author: Chia-I Wu <olv at lunarg.com>
Date:   Fri Dec 17 01:31:43 2010 +0800

mapi: Allow blocks to be disabled from the output.

For example, a printer may ask not to output noop dispatch table.

---

 src/mapi/mapi/mapi_abi.py |  105 +++++++++++++++++++++++++--------------------
 1 files changed, 58 insertions(+), 47 deletions(-)

diff --git a/src/mapi/mapi/mapi_abi.py b/src/mapi/mapi/mapi_abi.py
index fb91f61..0949219 100644
--- a/src/mapi/mapi/mapi_abi.py
+++ b/src/mapi/mapi/mapi_abi.py
@@ -236,6 +236,11 @@ class ABIPrinter(object):
         self.api_entry = 'KHRONOS_APIENTRY'
         self.api_attrs = 'KHRONOS_APIATTRIBUTES'
 
+        self.lib_need_table_size = True
+        self.lib_need_noop_array = True
+        self.lib_need_stubs = True
+        self.lib_need_entries = True
+
     def c_notice(self):
         return '/* This file is automatically generated by mapi_abi.py.  Do not modify. */'
 
@@ -475,54 +480,60 @@ class ABIPrinter(object):
         print self.c_public_declarations(self.prefix_lib)
         print '#undef MAPI_TMP_DEFINES'
         print '#endif /* MAPI_TMP_DEFINES */'
-        print
-        print '#ifdef MAPI_TMP_TABLE'
-        print self.c_mapi_table()
-        print '#undef MAPI_TMP_TABLE'
-        print '#endif /* MAPI_TMP_TABLE */'
-        print
-
-        pool, pool_offsets = self.c_stub_string_pool()
-        print '#ifdef MAPI_TMP_PUBLIC_STUBS'
-        print 'static const char public_string_pool[] ='
-        print pool
-        print
-        print 'static const struct mapi_stub public_stubs[] = {'
-        print self.c_stub_initializer(self.prefix_lib, pool_offsets)
-        print '};'
-        print '#undef MAPI_TMP_PUBLIC_STUBS'
-        print '#endif /* MAPI_TMP_PUBLIC_STUBS */'
-        print
-
-        print '#ifdef MAPI_TMP_PUBLIC_ENTRIES'
-        print self.c_public_dispatches(self.prefix_lib)
-        print '#undef MAPI_TMP_PUBLIC_ENTRIES'
-        print '#endif /* MAPI_TMP_PUBLIC_ENTRIES */'
-        print
-
-        print '#ifdef MAPI_TMP_NOOP_ARRAY'
-        print '#ifdef DEBUG'
-        print
-        print self.c_noop_functions(self.prefix_noop, self.prefix_lib)
-        print
-        print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop)
-        print self.c_noop_initializer(self.prefix_noop, False)
-        print '};'
-        print
-        print '#else /* DEBUG */'
-        print
-        print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop)
-        print self.c_noop_initializer(self.prefix_noop, True)
-        print '};'
-        print '#endif /* DEBUG */'
-        print '#undef MAPI_TMP_NOOP_ARRAY'
-        print '#endif /* MAPI_TMP_NOOP_ARRAY */'
-        print
 
-        print '#ifdef MAPI_TMP_STUB_ASM_GCC'
-        print self.c_asm_gcc(self.prefix_lib)
-        print '#undef MAPI_TMP_STUB_ASM_GCC'
-        print '#endif /* MAPI_TMP_STUB_ASM_GCC */'
+        if self.lib_need_table_size:
+            print
+            print '#ifdef MAPI_TMP_TABLE'
+            print self.c_mapi_table()
+            print '#undef MAPI_TMP_TABLE'
+            print '#endif /* MAPI_TMP_TABLE */'
+
+        if self.lib_need_noop_array:
+            print
+            print '#ifdef MAPI_TMP_NOOP_ARRAY'
+            print '#ifdef DEBUG'
+            print
+            print self.c_noop_functions(self.prefix_noop, self.prefix_lib)
+            print
+            print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop)
+            print self.c_noop_initializer(self.prefix_noop, False)
+            print '};'
+            print
+            print '#else /* DEBUG */'
+            print
+            print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop)
+            print self.c_noop_initializer(self.prefix_noop, True)
+            print '};'
+            print
+            print '#endif /* DEBUG */'
+            print '#undef MAPI_TMP_NOOP_ARRAY'
+            print '#endif /* MAPI_TMP_NOOP_ARRAY */'
+
+        if self.lib_need_stubs:
+            pool, pool_offsets = self.c_stub_string_pool()
+            print
+            print '#ifdef MAPI_TMP_PUBLIC_STUBS'
+            print 'static const char public_string_pool[] ='
+            print pool
+            print
+            print 'static const struct mapi_stub public_stubs[] = {'
+            print self.c_stub_initializer(self.prefix_lib, pool_offsets)
+            print '};'
+            print '#undef MAPI_TMP_PUBLIC_STUBS'
+            print '#endif /* MAPI_TMP_PUBLIC_STUBS */'
+
+        if self.lib_need_entries:
+            print
+            print '#ifdef MAPI_TMP_PUBLIC_ENTRIES'
+            print self.c_public_dispatches(self.prefix_lib)
+            print '#undef MAPI_TMP_PUBLIC_ENTRIES'
+            print '#endif /* MAPI_TMP_PUBLIC_ENTRIES */'
+
+            print
+            print '#ifdef MAPI_TMP_STUB_ASM_GCC'
+            print self.c_asm_gcc(self.prefix_lib)
+            print '#undef MAPI_TMP_STUB_ASM_GCC'
+            print '#endif /* MAPI_TMP_STUB_ASM_GCC */'
 
     def output_for_app(self):
         print self.c_notice()




More information about the mesa-commit mailing list