diff options
Diffstat (limited to 'src/glx/apple/gen_defs.tcl')
-rw-r--r-- | src/glx/apple/gen_defs.tcl | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/glx/apple/gen_defs.tcl b/src/glx/apple/gen_defs.tcl new file mode 100644 index 00000000000..d32694db72e --- /dev/null +++ b/src/glx/apple/gen_defs.tcl @@ -0,0 +1,67 @@ +#This parses and generates #defines from an enum.spec type of file. + +proc main {argc argv} { + if {2 != $argc} { + puts stderr "syntax is: [info script] input.spec output.h" + exit 1 + } + + set fd [open [lindex $argv 0] r] + set data [read $fd] + close $fd + + set fd [open [lindex $argv 1] w] + + set state "" + + puts $fd "#define GL_VERSION_1_1 1" + puts $fd "#define GL_VERSION_1_2 1" + puts $fd "#define GL_VERSION_1_3 1" + puts $fd "#define GL_VERSION_1_4 1" + puts $fd "#define GL_VERSION_1_5 1" + puts $fd "#define GL_VERSION_2_0 1" + #puts $fd "#define GL_VERSION_3_0 1" + + set mask "" + array set ar {} + + foreach line [split $data \n] { + if {[regexp {^\S*#.*} $line] > 0} { + #puts COMMENT:$line + set state "" + } elseif {"enum" eq $state} { + if {[string match "\t*" $line]} { + if {[regexp {^\tuse.*} $line] > 0} { + lassign [split [string trim $line]] use usemask def + set usemask [string trim $usemask] + set def [string trim $def] + puts $fd "/* GL_$def */" + } else { + lassign [split [string trim $line] =] def value + set def [string trim $def] + set value [string trim $value] + + #Trim out the data like: 0x0B00 # 4 F + set value [lindex [split $value] 0] + + puts $fd "#define GL_$def $value" + + #Save this association with the value. + set d $ar($mask) + dict set d $def $value + set ar($mask) $d + } + } else { + set state "" + } + } elseif {[string match "* enum:*" $line]} { + lassign [split $line] mask _ + puts $fd "\n/*[string trim $mask]*/" + set ar($mask) [dict create] + set state enum + } + } + + close $fd +} +main $::argc $::argv |