#! /usr/sbin/perl # # License Applicability. Except to the extent portions of this file are # made subject to an alternative license as permitted in the SGI Free # Software License B, Version 1.1 (the "License"), the contents of this # file are subject only to the provisions of the License. You may not use # this file except in compliance with the License. You may obtain a copy # of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 # Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: # # http://oss.sgi.com/projects/FreeB # # Note that, as provided in the License, the Software is distributed on an # "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS # DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND # CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A # PARTICULAR PURPOSE, AND NON-INFRINGEMENT. # # Original Code. The Original Code is: OpenGL Sample Implementation, # Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, # Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. # Copyright in any portions created by third parties is as indicated # elsewhere herein. All Rights Reserved. # # Additional Notice Provisions: The application programming interfaces # established by SGI in conjunction with the Original Code are The # OpenGL(R) Graphics System: A Specification (Version 1.2.1), released # April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version # 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X # Window System(R) (Version 1.3), released October 19, 1998. This software # was created using the OpenGL(R) version 1.2.1 Sample Implementation # published by SGI, but has not been independently verified as being # compliant with the OpenGL(R) version 1.2.1 Specification. # # $Date: 2004/03/14 08:29:09 $ $Revision: 1.1.1.4 $ # $Header: /cvs/xorg/xc/extras/ogl-sample/main/doc/man/tools/constCheck.pl,v 1.1.1.4 2004/03/14 08:29:09 eich Exp $ #----------------------------------------------------------------------------- # # Command line options # use Getopt::Std; getopts( 'v' ); $verbose = 1 if $opt_v; #----------------------------------------------------------------------------- # # Configuration Variables # $ROOT = $ENV{'ROOT'}; #----------------------------------------------------------------------------- # # Reference Files # $gl_h = "$ROOT/usr/include/GL/gl.h"; $glu_h = "$ROOT/usr/include/GL/glu.h"; $glx_h = "$ROOT/usr/include/GL/glx.h"; $glxtokens_h = "$ROOT/usr/include/GL/glxtokens.h"; #----------------------------------------------------------------------------- # # Build lookup tables # %glTokens = (); open( INFILE, "$gl_h" ); while ( <INFILE> ) { $glTokens{$1} = 1 if /^\#\s*define\s+GL_([\w\d_]+)/; } close( INFILE ); %gluTokens = (); open( INFILE, "$glu_h" ); while ( <INFILE> ) { $gluTokens{$1} = 1 if /^\#\s*define\s+GLU_([\w\d_]+)/; } close( INFILE ); %glxTokens = (); open( INFILE, "$glx_h" ); while ( <INFILE> ) { $glxTokens{$1} = 1 if /^\#\s*define\s+GLX_([\w\d_]+)/; } close( INFILE ); open( INFILE, "$glxtokens_h" ); while ( <INFILE> ) { $glxTokens{$1} = 1 if /^\#\s*define\s+GLX_([\w\d_]+)/; } close( INFILE ); #----------------------------------------------------------------------------- # # Check files # $fmt = "[%s:%d] Undefined %s constant : '%s'\n"; foreach $file ( @ARGV ) { $line = 1; open( INFILE, "$file" ) || ( warn "Unable to open file '$file'\n", next ); print "Checking '$file' ...\n" if $verbose; while ( <INFILE> ) { @words = split; @tokens = grep( /_\w*const\([\w\d_]+\)/, @words ); foreach ( @tokens ) { /(_\w*const)\(([\w\d]+)\)/; $constTag = $1; $token = $2; SWITCH : { $constTag =~ /_const|_econst|_extstring/ && do { printf( $fmt, $file, $line, "GL", $token) unless $glTokens{$token} == 1; last SWITCH; }; # # _arbconst's tack an extra "_ARB" onto the end of the # token. We need to check that. # $constTag =~ /_arbconst/ && do { $arbToken = $token . "_ARB"; printf( $fmt, $file, $line, "GL", $token) unless $glTokens{$arbToken} == 1; last SWITCH; }; $constTag =~ /_gluconst/ && do { printf( $fmt, $file, $line, "GLU", $token) unless $gluTokens{$token} == 1; last SWITCH; }; $constTag =~ /_glxconst|_glxerror|_glxextstring/ && do { printf( $fmt, $file, $line, "GLX", $token) unless $glxTokens{$token} == 1; last SWITCH; }; } } $line++; } close( INFILE ); }