package platform::VMS; 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; # VMS has a cultural standard where all installed libraries are prefixed. # For OpenSSL, the choice is 'ossl$' (this prefix was claimed in a # conversation with VSI, Tuesday January 26 2016) sub osslprefix { 'OSSL$' } sub binext { '.EXE' } sub dsoext { '.EXE' } sub shlibext { '.EXE' } sub libext { '.OLB' } sub defext { '.OPT' } sub objext { '.OBJ' } sub depext { '.D' } sub asmext { '.ASM' } # Other extra that aren't defined in platform::BASE sub shlibvariant { $target{shlib_variant} || '' } sub optext { '.OPT' } sub optname { return $_[1] } sub opt { return $_[0]->optname($_[1]) . $_[0]->optext() } # Other projects include the pointer size in the name of installed libraries, # so we do too. 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}; return platform::BASE::__concat($_[0]->osslprefix(), platform::BASE->staticname($_[1]), $target{pointer_size}); } # To enable installation of multiple major OpenSSL releases, we include the # version number in installed shared library names. my $sover_filename = join('', map { sprintf "%02d", $_ } split(m|\.|, $config{shlib_version})); sub shlib_version_as_filename { return $sover_filename; } sub sharedname { return platform::BASE::__concat($_[0]->osslprefix(), platform::BASE->sharedname($_[1]), $_[0]->shlib_version_as_filename(), ($_[0]->shlibvariant() // ''), "_shr$target{pointer_size}"); } 1;