1package My::Build::Win32_MSVC;
2
3use strict;
4use base qw(My::Build::Win32);
5use My::Build::Utility qw(awx_install_arch_file awx_install_arch_dir);
6use Alien::wxWidgets::Utility qw(awx_cc_version);
7use Config;
8
9sub awx_configure {
10    my $self = shift;
11    my %config = $self->SUPER::awx_configure;
12
13    $config{c_flags} .= ' -GF -TP ';
14
15    if( $self->awx_debug ) {
16        $config{link_flags} .= ' -debug ';
17    }
18
19    my $cccflags = $self->wx_config( 'cxxflags' );
20    my $libs = $self->wx_config( 'libs' );
21    my $incdir = $self->awx_wx_config_data->{wxinc};
22    my $cincdir = $self->awx_wx_config_data->{wxcontrinc};
23    my $iincdir = awx_install_arch_dir( $self, 'rEpLaCe/include' );
24
25    foreach ( split /\s+/, $cccflags ) {
26        m(^-DSTRICT) && next;
27        m(^-I) && do {
28            next if m{(?:regex|zlib|jpeg|png|tiff|expat[\\/]lib)$};
29            if( $self->notes( 'build_wx' ) ) {
30                $_ =~ s{\Q$cincdir\E}{$iincdir};
31                $_ =~ s{\Q$incdir\E}{$iincdir};
32            }
33            if( $_ =~ /-I\Q$self->{awx_setup_dir}\E/ && !$self->is_wince ) {
34                $config{include_path} .=
35                  '-I' . awx_install_arch_file( $self, 'rEpLaCe/lib' ) . ' ';
36            } else {
37                $config{include_path} .= "$_ ";
38            }
39            next;
40        };
41        m(^-D) && do { $config{defines} .= "$_ "; next; };
42        $config{c_flags} .= "$_ ";
43    }
44
45    foreach ( split /\s+/, $libs ) {
46        m(wx|unicows)i || next;
47        next if m{(?:(?:zlib|regexu?|expat|png|jpeg|tiff)[uhd]{0,2}\.lib)$};
48        $config{link_libraries} .= "$_ ";
49    }
50    $config{link_libraries} .= 'msvcprt.lib ' if awx_cc_version( 'cl' ) > 6;
51
52    my $dlls = $self->awx_wx_config_data->{dlls};
53    $config{_libraries} = {};
54
55    while( my( $key, $value ) = each %$dlls ) {
56        $config{_libraries}{$key} =
57          { map { $_ => File::Basename::basename( $value->{$_} ) }
58                keys %$value };
59        if( $value->{link} ) {
60            $config{_libraries}{$key}{link} = $value->{link};
61        } elsif( $value->{lib} ) {
62            $config{_libraries}{$key}{link} = $config{_libraries}{$key}{lib};
63        }
64    }
65
66    $config{config}{build} =
67        $self->awx_wx_config_data->{build_kind} || 'multi';
68
69    return %config;
70}
71
72sub awx_compiler_kind { 'cl' }
73
74sub awx_strip_dlls { }
75
76
771;
78