From 3c826ad11c7a9191d8c8b9ede48bf024158b6bac Mon Sep 17 00:00:00 2001 From: Nigel Stewart Date: Fri, 20 Feb 2015 22:09:24 +1000 Subject: [PATCH] [CoreSupport] Add make_initd.pl code generator for declaring all the _glewInit functions This allows the initializers to call each other according to the interdependencies. --- auto/Makefile | 4 ++++ auto/bin/make_initd.pl | 44 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100755 auto/bin/make_initd.pl diff --git a/auto/Makefile b/auto/Makefile index e05ceef..4f23636 100644 --- a/auto/Makefile +++ b/auto/Makefile @@ -194,6 +194,10 @@ $(S.DEST)/glew.c: $(EXT)/.dummy $(BIN)/make_def_var.pl GL $(GL_CORE_SPEC) >> $@ $(BIN)/make_def_var.pl GL $(GL_EXT_SPEC) >> $@ echo -e "\n#endif /* !GLEW_MX */\n" >> $@; + echo -e "" >> $@; + $(BIN)/make_initd.pl GL $(GL_CORE_SPEC) >> $@ + $(BIN)/make_initd.pl GL $(GL_EXT_SPEC) >> $@ + echo -e "" >> $@; $(BIN)/make_init.pl GL $(GL_CORE_SPEC) >> $@ $(BIN)/make_init.pl GL $(GL_EXT_SPEC) >> $@ cat $(SRC)/glew_init_gl.c >> $@ diff --git a/auto/bin/make_initd.pl b/auto/bin/make_initd.pl new file mode 100755 index 0000000..62343ea --- /dev/null +++ b/auto/bin/make_initd.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl +## +## Copyright (C) 2002-2008, Marcelo E. Magallon +## Copyright (C) 2002-2008, Milan Ikits +## +## This program is distributed under the terms and conditions of the GNU +## General Public License Version 2 as published by the Free Software +## Foundation or, at your option, any later version. + +use strict; +use warnings; + +do 'bin/make.pl'; + +## Output declarations for the _glewInit_[extension] functions defined +## by make_init.pl script. These are necessary for for initializers to +## call each other, such as a core GL 3 context that depends on certain +## extensions. + +#------------------------------------------------------------------------------- + +my @extlist = (); +my %extensions = (); + +our $type = shift; + +if (@ARGV) +{ + @extlist = @ARGV; + + foreach my $ext (sort @extlist) + { + my ($extname, $exturl, $extstring, $types, $tokens, $functions, $exacts) = + parse_ext($ext); + + #print "#ifdef $extname\n\n"; + if (keys %$functions) + { + print "static GLboolean _glewInit_$extname (" . $type . + "EW_CONTEXT_ARG_DEF_INIT);\n"; + } + #print "#endif /* $extname */\n\n"; + } +}