1*b0d17251Schristospackage platform::Windows; 2*b0d17251Schristos 3*b0d17251Schristosuse strict; 4*b0d17251Schristosuse warnings; 5*b0d17251Schristosuse Carp; 6*b0d17251Schristos 7*b0d17251Schristosuse vars qw(@ISA); 8*b0d17251Schristos 9*b0d17251Schristosrequire platform::BASE; 10*b0d17251Schristos@ISA = qw(platform::BASE); 11*b0d17251Schristos 12*b0d17251Schristos# Assume someone set @INC right before loading this module 13*b0d17251Schristosuse configdata; 14*b0d17251Schristos 15*b0d17251Schristossub binext { '.exe' } 16*b0d17251Schristossub dsoext { '.dll' } 17*b0d17251Schristossub shlibext { '.dll' } 18*b0d17251Schristossub libext { '.lib' } 19*b0d17251Schristossub defext { '.def' } 20*b0d17251Schristossub objext { '.obj' } 21*b0d17251Schristossub depext { '.d' } 22*b0d17251Schristossub asmext { '.asm' } 23*b0d17251Schristos 24*b0d17251Schristos# Other extra that aren't defined in platform::BASE 25*b0d17251Schristossub resext { '.res' } 26*b0d17251Schristossub shlibextimport { '.lib' } 27*b0d17251Schristossub shlibvariant { $target{shlib_variant} || '' } 28*b0d17251Schristos 29*b0d17251Schristossub staticname { 30*b0d17251Schristos # Non-installed libraries are *always* static, and their names remain 31*b0d17251Schristos # the same, except for the mandatory extension 32*b0d17251Schristos my $in_libname = platform::BASE->staticname($_[1]); 33*b0d17251Schristos return $in_libname 34*b0d17251Schristos if $unified_info{attributes}->{libraries}->{$_[1]}->{noinst}; 35*b0d17251Schristos 36*b0d17251Schristos # To make sure not to clash with an import library, we make the static 37*b0d17251Schristos # variant of our installed libraries get '_static' added to their names. 38*b0d17251Schristos return platform::BASE->staticname($_[1]) 39*b0d17251Schristos . ($disabled{shared} ? '' : '_static'); 40*b0d17251Schristos} 41*b0d17251Schristos 42*b0d17251Schristos# To mark forward compatibility, we include the OpenSSL major release version 43*b0d17251Schristos# number in the installed shared library names. 44*b0d17251Schristos(my $sover_filename = $config{shlib_version}) =~ s|\.|_|g; 45*b0d17251Schristossub shlib_version_as_filename { 46*b0d17251Schristos return $sover_filename 47*b0d17251Schristos} 48*b0d17251Schristossub sharedname { 49*b0d17251Schristos return platform::BASE::__concat(platform::BASE->sharedname($_[1]), 50*b0d17251Schristos "-", 51*b0d17251Schristos $_[0]->shlib_version_as_filename(), 52*b0d17251Schristos ($_[0]->shlibvariant() // '')); 53*b0d17251Schristos} 54*b0d17251Schristos 55*b0d17251Schristossub sharedname_import { 56*b0d17251Schristos return platform::BASE::__isshared($_[1]) ? $_[1] : undef; 57*b0d17251Schristos} 58*b0d17251Schristos 59*b0d17251Schristossub sharedlib_import { 60*b0d17251Schristos return platform::BASE::__concat($_[0]->sharedname_import($_[1]), 61*b0d17251Schristos $_[0]->shlibextimport()); 62*b0d17251Schristos} 63*b0d17251Schristos 64*b0d17251Schristos1; 65