mapi/new: split out public_entries handling
authorEmil Velikov <emil.velikov@collabora.com>
Sun, 9 Dec 2018 21:11:54 +0000 (21:11 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Thu, 24 Jan 2019 18:13:25 +0000 (18:13 +0000)
The only instance that requires the public_entries table is the
dispatch library - split that into another function.

We have to be careful with when undefining the guard, so split it out.

We might want to merge this back in GLVND.
Minor GLVND cleanup will be needed first.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
src/mapi/new/gen_gldispatch_mapi.py

index be7b7495909b9033a94ff2a6279e2433ecc9bc25..959d8798f5c1c4d60e23b404584b68f0b6a118bd 100755 (executable)
@@ -67,6 +67,8 @@ typedef void (APIENTRY  *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLe
     print(generate_noop_array(functions))
     print(generate_public_stubs(functions))
     print(generate_public_entries(functions))
+    print(generate_public_entries_table(functions))
+    print(generate_undef_public_entries())
     print(generate_stub_asm_gcc(functions))
 
 def generate_defines(functions):
@@ -154,10 +156,20 @@ GLAPI {f.rt} APIENTRY {f.name}({f.decArgs})
 """.lstrip("\n").format(f=func, retStr=retStr)
 
     text += "\n"
+    text += "#endif /* MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN */\n"
+    return text
+
+def generate_public_entries_table(functions):
+    text = "#ifdef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN\n"
     text += "static const mapi_func public_entries[] = {\n"
     for func in functions:
         text += "   (mapi_func) %s,\n" % (func.name,)
     text += "};\n"
+    text += "#endif /* MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN */\n"
+    return text
+
+def generate_undef_public_entries():
+    text = "#ifdef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN\n"
     text += "#undef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN\n"
     text += "#endif /* MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN */\n"
     return text