package My::Builder::Windows; use strict; use warnings; use base 'My::Builder'; sub can_build_binaries_from_sources { my $self = shift; return 0; # no } sub build_binaries { my( $self, $build_out, $build_src ) = @_; die "###ERROR### Building from sources not supported on MS Windows platform"; } sub get_path { my ( $self, $path ) = @_; $path = '"' . $path . '"'; return $path; } sub get_additional_cflags { my $self = shift; if($My::Utility::cc eq 'cl' && $self->notes('env_include')) { my $include = $self->notes('env_include'); $include =~ s/"//g; my @include = split(/;/, $include); my $cflags = ''; my $inc = $_; for( @include ) { my $inc = eval { require Win32; Win32::GetShortPathName($_); }; $inc ||= $_; $cflags .= "-I\"$inc\" " ; } return $cflags; } return ''; } sub get_additional_libs { my $self = shift; if($My::Utility::cc eq 'cl' && $self->notes('env_lib')) { my $lib = $self->notes('env_lib'); $lib =~ s/"//g; my @libs = split(/;/, $lib); my $libs = ''; my $inc = $_; for( @libs ) { my $_lib = $self->escape_path( $_ ); $libs .= "/LIBPATH:$_lib " ; } return $libs; } return ''; } sub escape_path { my( $self, $path ) = @_; my $_path = eval { require Win32; Win32::GetShortPathName($path); }; $_path ||= $path; $_path = qq("$_path") if $_path =~ / /; return $_path; } 1;