1*b0d17251Schristospackage platform::VMS; 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*b0d17251Schristos# VMS has a cultural standard where all installed libraries are prefixed. 16*b0d17251Schristos# For OpenSSL, the choice is 'ossl$' (this prefix was claimed in a 17*b0d17251Schristos# conversation with VSI, Tuesday January 26 2016) 18*b0d17251Schristossub osslprefix { 'OSSL$' } 19*b0d17251Schristos 20*b0d17251Schristossub binext { '.EXE' } 21*b0d17251Schristossub dsoext { '.EXE' } 22*b0d17251Schristossub shlibext { '.EXE' } 23*b0d17251Schristossub libext { '.OLB' } 24*b0d17251Schristossub defext { '.OPT' } 25*b0d17251Schristossub objext { '.OBJ' } 26*b0d17251Schristossub depext { '.D' } 27*b0d17251Schristossub asmext { '.ASM' } 28*b0d17251Schristos 29*b0d17251Schristos# Other extra that aren't defined in platform::BASE 30*b0d17251Schristossub shlibvariant { $target{shlib_variant} || '' } 31*b0d17251Schristos 32*b0d17251Schristossub optext { '.OPT' } 33*b0d17251Schristossub optname { return $_[1] } 34*b0d17251Schristossub opt { return $_[0]->optname($_[1]) . $_[0]->optext() } 35*b0d17251Schristos 36*b0d17251Schristos# Other projects include the pointer size in the name of installed libraries, 37*b0d17251Schristos# so we do too. 38*b0d17251Schristossub staticname { 39*b0d17251Schristos # Non-installed libraries are *always* static, and their names remain 40*b0d17251Schristos # the same, except for the mandatory extension 41*b0d17251Schristos my $in_libname = platform::BASE->staticname($_[1]); 42*b0d17251Schristos return $in_libname 43*b0d17251Schristos if $unified_info{attributes}->{libraries}->{$_[1]}->{noinst}; 44*b0d17251Schristos 45*b0d17251Schristos return platform::BASE::__concat($_[0]->osslprefix(), 46*b0d17251Schristos platform::BASE->staticname($_[1]), 47*b0d17251Schristos $target{pointer_size}); 48*b0d17251Schristos} 49*b0d17251Schristos 50*b0d17251Schristos# To enable installation of multiple major OpenSSL releases, we include the 51*b0d17251Schristos# version number in installed shared library names. 52*b0d17251Schristosmy $sover_filename = 53*b0d17251Schristos join('', map { sprintf "%02d", $_ } split(m|\.|, $config{shlib_version})); 54*b0d17251Schristossub shlib_version_as_filename { 55*b0d17251Schristos return $sover_filename; 56*b0d17251Schristos} 57*b0d17251Schristossub sharedname { 58*b0d17251Schristos return platform::BASE::__concat($_[0]->osslprefix(), 59*b0d17251Schristos platform::BASE->sharedname($_[1]), 60*b0d17251Schristos $_[0]->shlib_version_as_filename(), 61*b0d17251Schristos ($_[0]->shlibvariant() // ''), 62*b0d17251Schristos "_shr$target{pointer_size}"); 63*b0d17251Schristos} 64*b0d17251Schristos 65*b0d17251Schristos1; 66