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 | |
a10ede21 |
37 | sub opengl_headers |
bfd90409 |
38 | { |
a10ede21 |
39 | return GL => 'SDL_opengl.h'; |
bfd90409 |
40 | } |
41 | |
a10ede21 |
42 | sub fetch_includes |
bfd90409 |
43 | { |
2a668066 |
44 | my ($sdlinc, $sdllib); |
45 | if(defined($ENV{SDL_INST_DIR})) { |
46 | $sdlinc = $ENV{SDL_INST_DIR}.'/include'; |
47 | $sdllib = $ENV{SDL_INST_DIR}.'/lib'; |
48 | } |
49 | else { |
50 | $sdlinc = $Config{incpath}; |
51 | $sdllib = $Config{libpth}; |
52 | } |
a10ede21 |
53 | return ( |
2a668066 |
54 | $sdlinc => $sdllib, |
55 | $sdlinc.'/gl' => $sdllib, |
56 | $sdlinc.'/GL' => $sdllib, |
57 | $sdlinc.'/SDL' => $sdllib, |
58 | $sdlinc.'/smpeg' => $sdllib, |
a10ede21 |
59 | ); |
bfd90409 |
60 | } |
61 | |
2a668066 |
62 | # we need to override build_links method because on Windows we need to replace |
63 | # some library names - see %replace hash below |
64 | sub build_links |
65 | { |
66 | my ($self, $libraries, $build_systems) = @_; |
67 | |
68 | my %links; |
69 | my %replace = ( |
70 | GL => opengl32, |
71 | GLU => glu32, |
72 | ); |
9632eafc |
73 | |
2a668066 |
74 | while (my ($subsystem, $buildable) = each %$build_systems) |
75 | { |
76 | my %sub_links; |
77 | for my $build (grep { $buildable->{ $_ } } keys %$buildable) |
78 | { |
79 | $sub_links{ $buildable->{ $build }[1] }++; |
80 | my $newbuild = $replace{$build} || $build; |
81 | push @{ $links{ $subsystem }{libs} }, "-l$newbuild"; |
82 | } |
9632eafc |
83 | |
2a668066 |
84 | $links{ $subsystem }{paths} = [ map { "-L$_" } keys %sub_links ]; |
85 | } |
86 | return \%links; |
87 | } |
9632eafc |
88 | |
89 | sub alt_link_flags |
90 | { |
91 | my $self = shift; |
92 | my $sdl_dir = shift; |
93 | |
2a668066 |
94 | return $self->SUPER::alt_link_flags($sdl_dir).' -mwindows -lSDLmain -lSDL'; |
9632eafc |
95 | } |
96 | |
97 | sub alt_compile_flags |
98 | { |
99 | my $self = shift; |
100 | my $sdl_dir = shift; |
101 | |
99734ed6 |
102 | return $self->SUPER::alt_compile_flags($sdl_dir).' -D_GNU_SOURCE=1 -Dmain=SDL_main'; |
9632eafc |
103 | } |
104 | |
bfd90409 |
105 | 1; |