Commit | Line | Data |
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 | |
31 | package SDL::Build::MSWin32; |
a10ede21 |
32 | use Data::Dumper; |
2a668066 |
33 | use Config; |
7da4be06 |
34 | use Carp; |
bfd90409 |
35 | use 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 |
45 | sub opengl_headers |
bfd90409 |
46 | { |
a10ede21 |
47 | return GL => 'SDL_opengl.h'; |
bfd90409 |
48 | } |
49 | |
a10ede21 |
50 | sub 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 |
72 | sub 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 | |
97 | sub 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 | |
105 | sub 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 |
113 | 1; |