#!/usr/bin/env perl use strict; use Config; use ExtUtils::MakeMaker; # # Configure SDL proper # use vars qw/ $sdl_cflags $sdl_libs @dirs $inc_flags %ext @defs /; # # Configuration detection of Linux / Unix # chomp ($sdl_cflags = "-I/usr/X11R6/include " . `sdl-config --cflags`); chomp ($sdl_libs = "-L/usr/X11R6/lib " . `sdl-config --libs`); $sdl_libs =~ s/-Wl,-rpath,\/usr\/local\/lib//; # suppress the insanity $sdl_libs =~ s/-pthread//; # # Search paths # @dirs=( '/usr/local/include', '/usr/local/include/SDL', '/usr/local/include/smpeg', '/usr/X11R6/include', '/usr/X11R6/include/GL', ); $inc_flags = $ENV{'DEBUG'} . ' ' . $ENV{'CFLAGS'}; # # Registed extensions # %ext = ( SDL_image => { inc => 'HAVE_SDL_IMAGE', test => 'SDL_image.h' }, SDL_mixer => { inc => 'HAVE_SDL_MIXER', test => 'SDL_mixer.h' }, SDL_net => { inc => 'HAVE_SDL_NET', test => 'SDL_net.h' }, SDL_ttf => { inc => 'HAVE_SDL_TTF', test => 'SDL_ttf.h' }, SDL_gfx => { inc => 'HAVE_SDL_GFX', test => 'SDL_gfxPrimitives.h' }, SDL_console => { inc => 'HAVE_SDL_CONSOLE', test => 'CON_console.h' }, png => { inc => 'HAVE_PNG', test => 'png.h' }, jpeg => { inc => 'HAVE_JPEG', test => 'jpeglib.h' }, GL => { inc => 'HAVE_GL', test => 'gl.h' }, GLU => { inc => 'HAVE_GLU', test => 'glu.h' }, smpeg => { inc => 'HAVE_SMPEG', test => 'smpeg.h' }, ); # # Locate optional packages # my ($e,$d); for $e ( keys %ext ) { for $d (@dirs) { $ext{$e}{exists} ||= -e "$d/$ext{$e}{test}" } } sub found_mod { printf "%-24s%s\n", "Found $_[0]", ( $_[1] ? "yes" : "no" ); } for $e ( sort keys %ext ) { found_mod ($e,$ext{$e}{exists}); } # # Get GLU version # if ( $ext{GLU}{exists} ) { print "Detecting GLU Version\n"; system ("gcc -o detect detect.c $sdl_cflags -lGLU -lGL $sdl_libs -pthread"); my $version = `./detect` * 10; push @defs, "-DHAVE_GLU_VERSION=$version"; system ("rm detect"); } # # Test For thread support # if ( $Config{usethreads} ) { push @defs, "-DUSE_THREADS"; } # # Specify Makefile options # my %options = ( 'NAME' => 'SDL_perl', 'VERSION_FROM' => 'lib/SDL.pm', 'LIBS' => [ join( " ", "$sdl_libs", map { $ext{$_}{exists} ? "-l$_" : '' } (sort keys %ext), ) ], 'DEFINE' => join ( " ", @defs, map { $ext{$_}{exists} ? "-D$ext{$_}{inc}" : '' } sort keys %ext), 'INC' => "$inc_flags $sdl_cflags", 'OBJECT' => ( ($ext{SDL_image}{exists} ? 'SFont.o ' : "") . 'SDL_perl.o ' . ($ext{GL}{exists} ? 'OpenGL.o ' : "") ), ); # # Write Makefile # WriteMakefile(%options );