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