Fixed the pod path in archive
[sdlgit/SDL_perl.git] / make / lib / SDL / Build / MSWin32.pm
CommitLineData
bfd90409 1#!/usr/bin/env perl
2#
3# MSWin32.pm
4#
5# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
6#
7# ------------------------------------------------------------------------------
8#
9# This library is free software; you can redistribute it and/or
10# modify it under the terms of the GNU Lesser General Public
11# License as published by the Free Software Foundation; either
12# version 2.1 of the License, or (at your option) any later version.
13#
14# This library is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17# Lesser General Public License for more details.
18#
19# You should have received a copy of the GNU Lesser General Public
20# License along with this library; if not, write to the Free Software
21# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22#
23# ------------------------------------------------------------------------------
24#
25# Please feel free to send questions, suggestions or improvements to:
26#
27# David J. Goehrig
28# dgoehrig@cpan.org
29#
30
31package SDL::Build::MSWin32;
a10ede21 32use Data::Dumper;
2a668066 33use Config;
7da4be06 34use Carp;
bfd90409 35use base 'SDL::Build';
bfd90409 36
f3e4e3e6 37#Ideal Solution but it is not called!
38#sub process_xs
39#{
40# my ($self, $file) = @_;
41# $file =~ s/\\/\//g; #replace \ for / (Win32 needs this);
42# $self->SUPER::process_xs($file);
43#}
d02b2c8e 44
a10ede21 45sub opengl_headers
bfd90409 46{
a10ede21 47 return GL => 'SDL_opengl.h';
bfd90409 48}
49
a10ede21 50sub fetch_includes
bfd90409 51{
2a668066 52 my ($sdlinc, $sdllib);
53 if(defined($ENV{SDL_INST_DIR})) {
54 $sdlinc = $ENV{SDL_INST_DIR}.'/include';
55 $sdllib = $ENV{SDL_INST_DIR}.'/lib';
56 }
57 else {
58 $sdlinc = $Config{incpath};
59 $sdllib = $Config{libpth};
60 }
a10ede21 61 return (
2a668066 62 $sdlinc => $sdllib,
63 $sdlinc.'/gl' => $sdllib,
64 $sdlinc.'/GL' => $sdllib,
65 $sdlinc.'/SDL' => $sdllib,
66 $sdlinc.'/smpeg' => $sdllib,
a10ede21 67 );
bfd90409 68}
69
2a668066 70# we need to override build_links method because on Windows we need to replace
71# some library names - see %replace hash below
72sub build_links
73{
74 my ($self, $libraries, $build_systems) = @_;
75
76 my %links;
77 my %replace = (
78 GL => opengl32,
79 GLU => glu32,
80 );
9632eafc 81
2a668066 82 while (my ($subsystem, $buildable) = each %$build_systems)
83 {
84 my %sub_links;
85 for my $build (grep { $buildable->{ $_ } } keys %$buildable)
86 {
87 $sub_links{ $buildable->{ $build }[1] }++;
88 my $newbuild = $replace{$build} || $build;
89 push @{ $links{ $subsystem }{libs} }, "-l$newbuild";
90 }
9632eafc 91
2a668066 92 $links{ $subsystem }{paths} = [ map { "-L$_" } keys %sub_links ];
93 }
94 return \%links;
95}
9632eafc 96
97sub alt_link_flags
98{
99 my $self = shift;
100 my $sdl_dir = shift;
101
2a668066 102 return $self->SUPER::alt_link_flags($sdl_dir).' -mwindows -lSDLmain -lSDL';
9632eafc 103}
104
105sub alt_compile_flags
106{
107 my $self = shift;
108 my $sdl_dir = shift;
109
99734ed6 110 return $self->SUPER::alt_compile_flags($sdl_dir).' -D_GNU_SOURCE=1 -Dmain=SDL_main';
9632eafc 111}
112
bfd90409 1131;