X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=scripts%2Fextgen.py;h=c7c06b2c07c115a11bf6986f8f52d2761ef87999;hb=af38b327d25410b87084fe937b311ebde1ba6c5d;hp=fd239d7077de3344f998bd6ffab84f22007c01ac;hpb=9a80c8511180570716adcc1cc9344d8a5e09e76a;p=libs%2Fgl.git diff --git a/scripts/extgen.py b/scripts/extgen.py index fd239d70..c7c06b2c 100755 --- a/scripts/extgen.py +++ b/scripts/extgen.py @@ -32,7 +32,9 @@ if sys.argv[i].startswith("gl"): target_ext = sys.argv[i] backport_ext = None +deprecated_version = None out_base = None +ignore_things = [] if target_ext.endswith(".glext"): fn = target_ext target_ext = None @@ -45,10 +47,15 @@ if target_ext.endswith(".glext"): elif parts[0]=="core_version": if parts[1]==target_api: core_version = parts[2] + elif parts[0]=="deprecated": + if parts[1]==target_api: + deprecated_version = parts[2] elif parts[0]=="secondary": secondary.append(parts[1]) elif parts[0]=="backport": backport_ext = parts[1] + elif parts[0]=="ignore": + ignore_things.append(parts[1]) if i+11: + core_version_candidates.sort(reverse=True) + if core_version_candidates[1][0]+1>=core_version_candidates[0][0]: + ver0 = core_version_candidates[0][1] + ver1 = core_version_candidates[1][1] + print "Warning: multiple likely core version candidates: %d.%d %d.%d"%(ver0[0], ver0[1], ver1[0], ver1[1]) + core_version = core_version_candidates[0][1] + +if not deprecated_version: + deprecated_version = min_deprecated_version + if backport_ext: if backport_ext=="none": backport_ext = None else: - backport_ext = extensions[backport_ext] + bpe_name = backport_ext + backport_ext = extensions.get(backport_ext) if backport_ext not in backport_ext_candidates: - print "Warning: explicitly specified backport extension %s does not look like a backport extension" + print "Warning: explicitly specified backport extension %s does not look like a backport extension"%bpe_name elif backport_ext_candidates: if len(backport_ext_candidates)>1: print "Warning: multiple backport extension candidates: %s"%(" ".join(e.name for e in backport_ext_candidates)) @@ -460,7 +501,7 @@ if funcs: #define GET_PROC_ADDRESS(x) get_proc_address(#x) #endif -#ifdef WIN32 +#ifdef _WIN32 #define GET_PROC_ADDRESS_1_1(x) &::x #else #define GET_PROC_ADDRESS_1_1(x) GET_PROC_ADDRESS(x) @@ -477,10 +518,15 @@ for f in funcs: out.write("\nExtension::SupportLevel init_%s()\n{\n"%target_ext.name.lower()) if core_version: - out.write("\tif(is_version_at_least(%d, %d)"%tuple(core_version)) + out.write("\tif(is_disabled(\"GL_%s\"))\n\t\treturn Extension::UNSUPPORTED;\n"%target_ext.name) + out.write("#if !defined(__APPLE__) || defined(GL_VERSION_%d_%d)\n"%tuple(core_version)) + out.write("\tif(") if backport_ext: - out.write(" || is_supported(\"GL_%s\")"%backport_ext.name) - out.write(")\n\t{\n") + out.write("is_supported(\"GL_%s\") || "%backport_ext.name) + out.write("is_supported(Version(%d, %d)"%tuple(core_version)) + if deprecated_version: + out.write(", Version(%d, %d)"%tuple(deprecated_version)) + out.write("))\n\t{\n") for f in funcs: if target_api in f.supported_apis: gpa_suffix = "" @@ -489,7 +535,9 @@ if core_version: out.write("\t\t%s = reinterpret_cast<%s>(GET_PROC_ADDRESS%s(%s));\n"%(f.name, f.typedef, gpa_suffix, f.name)) out.write("\t\treturn Extension::CORE;\n") out.write("\t}\n") + out.write("#endif\n") if source_ext and source_ext!=backport_ext: + out.write("#if !defined(__APPLE__) || defined(GL_%s)\n"%target_ext.name) out.write("\tif(is_supported(\"GL_%s\"))\n\t{\n"%(source_ext.name)) for f in funcs: if f.sources: @@ -509,6 +557,7 @@ if source_ext and source_ext!=backport_ext: out.write("\t\t%s = reinterpret_cast<%s>(GET_PROC_ADDRESS(%s));\n"%(f.name, f.typedef, src.name)) out.write("\t\treturn Extension::EXTENSION;\n") out.write("\t}\n") + out.write("#endif\n") out.write("\treturn Extension::UNSUPPORTED;\n") out.write("}\n")