| #!/usr/bin/perl -w |
| |
| print " |
| /* Auto-generated file... Do not edit ! */ |
| |
| #include \"config.h\" |
| #include \"wine_gl.h\" |
| |
| |
| "; |
| |
| # |
| # Now, the functions from the include file |
| # |
| open(INC, "/usr/X11R6/include/GL/gl.h") || die "Could not open GL/gl.h"; |
| while ($line = <INC>) { |
| if ($line =~ /GLAPI.*GLAPIENTRY/) { |
| # Start of a function declaration |
| ($ret, $name, $args) = ($line =~ /GLAPI (.*) GLAPIENTRY *(.*)\((.*)/); |
| |
| # Remove all extensions except the multitexture one (see OpenGL ABI) |
| if (($name !~ /(MESA|PGI|ARB|EXT)/) || |
| ($name =~ /MultiTexCoord/) || |
| ($name =~ /ActiveTextureARB/)) { |
| print "/***********************************************************************\n"; |
| print " *\t\t$name\n"; |
| print " */\n"; |
| print "$ret WINAPI wine_$name("; |
| @rargs = (); |
| @names = (); |
| |
| # Now, get the parameters |
| while (1) { |
| @args = split /,|\)/, $args; |
| |
| foreach (@args) { |
| if ($_ =~ /[a-z,A-Z]/) { |
| ($a) = ($_ =~ /^\s*(.*)\s*$/); |
| if ($a =~ /\*\*/) { |
| ($var) = ($a =~ /\*\*(\w*)/); |
| } elsif ($a =~ /\*/) { |
| ($var) = ($a =~ /\*(\w*)/); |
| } else { |
| ($var) = ($a =~ /\s(\w*)/); |
| } |
| @rargs = (@rargs, $a); |
| if ($var !~ /void/) { |
| @names = (@names, $var); |
| } |
| } |
| } |
| |
| if ($args !~ /\)/) { |
| $args = <INC>; |
| } else { |
| last; |
| } |
| } |
| |
| print shift @rargs; |
| foreach (@rargs) { |
| print ", $_"; |
| } |
| print ") {\n"; |
| if ($ret !~ /void/) { |
| print " $ret ret;\n"; |
| } |
| print " ENTER_GL();\n"; |
| if ($ret !~ /void/) { |
| print " ret = "; |
| } else { |
| print " "; |
| } |
| print "$name("; |
| |
| $farg = shift @names; |
| if ($farg) { |
| print "$farg"; |
| |
| foreach (@names) { |
| print ", $_"; |
| } |
| } |
| print ");\n"; |
| print " LEAVE_GL();\n"; |
| if ($ret !~ /void/) { |
| print " return ret;\n"; |
| } |
| print "}\n\n"; |
| } |
| } |
| } |
| |
| close(INC); |