scripts added from old sdlpl to generate constants
[sdlgit/SDL_perl.git] / scripts / sdl_const.pl
diff --git a/scripts/sdl_const.pl b/scripts/sdl_const.pl
new file mode 100644 (file)
index 0000000..88503ee
--- /dev/null
@@ -0,0 +1,115 @@
+#!/usr/bin/env perl
+#
+
+open XS, "< sdl_words.txt" or die "could not open sdl_words.txt\n";
+open CPP, "| cpp `sdl-config --cflags` - > SDL.cx" or die "Could not pipe to cpp, $!\n";
+
+print CPP <<HEADER;
+#include <SDL.h>
+#define TEXT_SOLID     1
+#define TEXT_SHADED    2
+#define TEXT_BLENDED   4
+#define UTF8_SOLID     8
+#define UTF8_SHADED    16      
+#define UTF8_BLENDED   32
+#define UNICODE_SOLID  64
+#define UNICODE_SHADED 128
+#define UNICODE_BLENDED        256
+
+--cut--
+HEADER
+
+while (<XS>) {
+       chomp();
+       print CPP "#$_ $_\n";
+       $words{$_} = 0;
+}
+
+close XS;
+close CPP;
+
+#
+# ENUMS AREN'T CPPed we got to do this the hard way
+#
+
+open FP, "> sdl_const.c" or die "Could not write to sdl__const.c\n";
+
+print FP <<HERE;
+#include <SDL.h>
+#include <SDL_image.h>
+#include <SDL_mixer.h>
+#include <SDL_ttf.h>
+#include <SDL_net.h>
+#include <smpeg/smpeg.h>
+#define TEXT_SOLID     1
+#define TEXT_SHADED    2
+#define TEXT_BLENDED   4
+#define UTF8_SOLID     8
+#define UTF8_SHADED    16      
+#define UTF8_BLENDED   32
+#define UNICODE_SOLID  64
+#define UNICODE_SHADED 128
+#define UNICODE_BLENDED        256
+
+int
+main ( int argc, char **argv ) {
+
+HERE
+
+for ( grep { $words{$_} == 0 } keys %words ) { 
+       print FP <<THERE;
+       fprintf(stdout,"sub main::$_ { \%i }\n", $_);
+THERE
+
+}
+
+print FP <<HERE;
+}
+HERE
+
+system("gcc `sdl-config --cflags --libs` -o sdl_const sdl_const.c");
+
+my $enums;
+open ENUMS, "./sdl_const |";
+{
+       local $/ = undef;
+       $enums = <ENUMS>;
+}
+close ENUMS;
+
+$goodstuff .= "\n$enums";
+
+for ( split "\n", $goodstuff ) {
+       if (/sub\s+main::([A-Za-z0-9_]+)/) {
+               $words{$1} = 1;
+       }
+}
+
+for (keys %words) {
+       print STDERR "Failed to find $_\n" unless $words{$_};   
+}
+
+(@words) = grep { $words{$_} == 1 } keys %words;
+
+$words = join(" ",@words);
+
+open CONST, "> ../lib/SDL/Constants.pm";
+
+print CONST <<HERE;
+# SDL::Constants
+#
+# This is an automatically generated file, don't bother editing.
+# Names are read from a list in sdl_words.txt and written by sdl_const.pl.
+#
+# Copyright (C) 2003 David J. Goehrig <dave\@sdlperl.org>
+#
+
+package SDL::Constants;
+
+$goodstuff
+
+1;
+
+HERE
+
+system("rm -f SDL.cx sdl_const sdl_const.c");