Added libalien-wxwidgets-perl
[pkg-perl] / deb-src / libalien-wxwidgets-perl / libalien-wxwidgets-perl-0.50 / inc / My / Build / Win32_MinGW_Bakefile.pm
1 package My::Build::Win32_MinGW_Bakefile;
2
3 use strict;
4 use base qw(My::Build::Win32_MinGW My::Build::Win32_Bakefile);
5 use My::Build::Utility qw(awx_install_arch_file awx_install_arch_auto_file);
6 use Config;
7 use Fatal qw(chdir);
8
9 sub awx_wx_config_data {
10     My::Build::Win32::_init();
11
12     my $self = shift;
13     return $self->{awx_data} if $self->{awx_data};
14
15     my %data = ( %{$self->SUPER::awx_wx_config_data},
16                  'cxx'     => 'g++',
17                  'ld'      => 'g++',
18                );
19
20     my $cflags = 'CXXFLAGS=" -Os -DNO_GCC_PRAGMA "';
21     my $final = $self->awx_debug ? 'BUILD=debug'
22                                  : 'BUILD=release';
23     my $unicode = $self->awx_unicode ? 'UNICODE=1' : 'UNICODE=0';
24     $unicode .= ' MSLU=1' if $self->awx_mslu;
25
26     my $dir = Cwd::cwd;
27     my $make = $self->_find_make;
28     chdir File::Spec->catdir( $ENV{WXDIR}, 'samples', 'minimal' );
29     my @t = qx($make -n -f makefile.gcc $final $unicode $cflags SHARED=1);
30
31     my( $orig_libdir, $libdir, $digits );
32     foreach ( @t ) {
33         chomp;
34
35         if( m/\s-l\w+/ ) {
36             m/-lwxbase(\d+)/ and $digits = $1;
37             s/^[cg]\+\+//;
38             s/(?:\s|^)-[co]//g;
39             s/\s+\S+\.(exe|o)/ /gi;
40             s{-L(\S+)}
41              {$orig_libdir = File::Spec->canonpath
42                                  ( File::Spec->rel2abs( $1 ) );
43               '-L' . ( $libdir = awx_install_arch_file( $self, 'rEpLaCe/lib' ) )}eg;
44             $data{libs} = $_;
45         } elsif( s/^\s*g\+\+\s+// ) {
46             s/\s+\S+\.(cpp|o|d)/ /g;
47             s/\s+-M[DP]\b/ /g;
48             s/(?:\s|^)-[co]//g;
49             s{[-/]I(\S+)}{'-I' . File::Spec->canonpath
50                                      ( File::Spec->rel2abs( $1 ) )}egi;
51             s{[-/]I(\S+)[\\/]samples[\\/]minimal(\s|$)}{-I$1\\contrib\\include }i;
52             s{[-/]I(\S+)[\\/]samples(\s|$)}{ }i;
53             $data{cxxflags} = $_;
54         }
55     }
56
57     chdir $dir;
58     die 'Could not find wxWidgets lib directory' unless $libdir;
59
60     $data{dlls} = $self->awx_grep_dlls( $orig_libdir, $digits, $self->awx_is_monolithic );
61     $data{version} = $digits;
62
63     $self->{awx_data} = \%data;
64 }
65
66 sub _make_command {
67     my $make = $_[0]->_find_make;
68     "$make -f makefile.gcc all "
69 }
70
71 sub build_wxwidgets {
72     my( $self ) = shift;
73
74     $self->My::Build::Win32_Bakefile::build_wxwidgets( @_ );
75 }
76
77 1;