Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

117 lines (89 sloc) 2.049 kb
#!/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");
Jump to Line
Something went wrong with that request. Please try again.