]> git.tdb.fi Git - libs/gl.git/blobdiff - scripts/extgen.py
Final touches of OS X support
[libs/gl.git] / scripts / extgen.py
index 4333cf37345f176d06fdf52abe2e6f30d8cc1f0c..eef6475adbdad5506ad39068286e2efa03b3922a 100755 (executable)
@@ -247,8 +247,13 @@ if funcs or enums:
        for e in enums:
                out.write("#define %s 0x%04X\n"%(e.name, e.value))
        out.write("#endif\n\n")
+
+       # Apple's OpenGL implementation doesn't have a GetProcAddress function; link
+       # directly to the OpenGL library
+       out.write("\n#if !defined(__APPLE__) || !defined(GL_%s)\n"%ext)
        for f in funcs:
                out.write("extern %s %s;\n"%(f.typedef, f.name))
+       out.write("#endif\n")
 
 out.write("\nextern Extension %s;\n"%ext)
 
@@ -268,9 +273,10 @@ namespace GL {
 """)
 
 if funcs:
-       out.write("\n")
-for f in funcs:
-       out.write("%s %s = 0;\n"%(f.typedef, f.name))
+       out.write("\n#if !defined(__APPLE__) || !defined(GL_%s)\n"%ext)
+       for f in funcs:
+               out.write("%s %s = 0;\n"%(f.typedef, f.name))
+       out.write("\n#endif\n")
 
 out.write("\nExtension::SupportLevel init_%s()\n{\n"%ext.lower())
 out.write("#ifdef GL_%s\n"%ext)
@@ -279,17 +285,23 @@ if ver:
        if backport_ext:
                out.write(" || is_supported(\"GL_%s\")"%backport_ext)
        out.write(")\n\t{\n")
-       for f in funcs:
-               out.write("\t\t%s = reinterpret_cast<%s>(get_proc_address(\"%s\"));\n"%(f.name, f.typedef, f.name))
+       if funcs:
+               out.write("#ifndef __APPLE__\n")
+               for f in funcs:
+                       out.write("\t\t%s = reinterpret_cast<%s>(get_proc_address(\"%s\"));\n"%(f.name, f.typedef, f.name))
+               out.write("#endif\n")
        out.write("\t\treturn Extension::CORE;\n")
        out.write("\t}\n")
 if ext!=backport_ext:
        out.write("\tif(is_supported(\"GL_%s\"))\n\t{\n"%(ext))
-       for f in funcs:
-               n = f.name
-               if f.source:
-                       n = f.source.name
-               out.write("\t\t%s = reinterpret_cast<%s>(get_proc_address(\"%s\"));\n"%(f.name, f.typedef, n))
+       if funcs:
+               out.write("#ifndef __APPLE__\n")
+               for f in funcs:
+                       n = f.name
+                       if f.source:
+                               n = f.source.name
+                       out.write("\t\t%s = reinterpret_cast<%s>(get_proc_address(\"%s\"));\n"%(f.name, f.typedef, n))
+               out.write("#endif\n")
        out.write("\t\treturn Extension::EXTENSION;\n")
        out.write("\t}\n")
 out.write("#endif\n")