package platform::Windows; use strict; use warnings; use Carp; use vars qw(@ISA); require platform::BASE; @ISA = qw(platform::BASE); # Assume someone set @INC right before loading this module use configdata; sub binext { '.exe' } sub dsoext { '.dll' } sub shlibext { '.dll' } sub libext { '.lib' } sub defext { '.def' } sub objext { '.obj' } sub depext { '.d' } sub asmext { '.asm' } # Other extra that aren't defined in platform::BASE sub resext { '.res' } sub shlibextimport { '.lib' } sub shlibvariant { $target{shlib_variant} || '' } sub staticname { # Non-installed libraries are *always* static, and their names remain # the same, except for the mandatory extension my $in_libname = platform::BASE->staticname($_[1]); return $in_libname if $unified_info{attributes}->{libraries}->{$_[1]}->{noinst}; # To make sure not to clash with an import library, we make the static # variant of our installed libraries get '_static' added to their names. return platform::BASE->staticname($_[1]) . ($disabled{shared} ? '' : '_static'); } # To mark forward compatibility, we include the OpenSSL major release version # number in the installed shared library names. (my $sover_filename = $config{shlib_version}) =~ s|\.|_|g; sub shlib_version_as_filename { return $sover_filename } sub sharedname { return platform::BASE::__concat(platform::BASE->sharedname($_[1]), "-", $_[0]->shlib_version_as_filename(), ($_[0]->shlibvariant() // '')); } sub sharedname_import { return platform::BASE::__isshared($_[1]) ? $_[1] : undef; } sub sharedlib_import { return platform::BASE::__concat($_[0]->sharedname_import($_[1]), $_[0]->shlibextimport()); } 1;