#! /usr/bin/env perl
# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
#
-# Licensed under the OpenSSL license (the "License"). You may not use
+# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
use lib '.';
use configdata;
+use File::Spec::Functions;
+use lib catdir($config{sourcedir}, 'Configurations');
+use platform;
+
my $name = undef; # internal library/module name
my $ordinals_file = undef; # the ordinals file to use
my $version = undef; # the version to use for the library
$apiv = sprintf "%x%02x%02x", split(/\./, $config{api})
if $config{api};
-my $libname = $unified_info{sharednames}->{$name} // $name;
+my $libname = platform->sharedname($name);
my %OS_data = (
solaris => { writer => \&writer_linux,
sort => sorter_linux(),
- platforms => { UNIX => 1,
- EXPORT_VAR_AS_FUNCTION => 0 } },
+ platforms => { UNIX => 1 } },
linux => 'solaris', # alias
+ "bsd-gcc" => 'solaris', # alias
aix => { writer => \&writer_aix,
sort => sorter_unix(),
- platforms => { UNIX => 1,
- EXPORT_VAR_AS_FUNCTION => 0 } },
+ platforms => { UNIX => 1 } },
VMS => { writer => \&writer_VMS,
sort => OpenSSL::Ordinals::by_number(),
- platforms => { VMS => 1,
- EXPORT_VAR_AS_FUNCTION => 0 } },
+ platforms => { VMS => 1 } },
vms => 'VMS', # alias
WINDOWS => { writer => \&writer_windows,
sort => OpenSSL::Ordinals::by_name(),
platforms => { WIN32 => 1,
- _WIN32 => 1,
- EXPORT_VAR_AS_FUNCTION => 1 } },
+ _WIN32 => 1 } },
windows => 'WINDOWS', # alias
WIN32 => 'WINDOWS', # alias
win32 => 'WIN32', # alias
if ($apiv) {
foreach (@features) {
- next unless /^DEPRECATEDIN_(\d+)_(\d+)_(\d+)$/;
- my $symdep = sprintf "%x%02x%02x", $1, $2, $3;
+ next unless /^DEPRECATEDIN_(\d+)(?:_(\d+)_(\d+))?$/;
+ my $symdep = sprintf "%x%02x%02x", $1, ($2 // 0), ($3 // 0);
$verdict = 0 if $apiv ge $symdep;
}
}
_____
if (defined $version) {
- my ($libvmajor, $libvminor, $libvedit, $libvpatch) =
- $version =~ /^(\d+)_(\d+)_(\d+)([a-z]{0,2})(?:-.*)?$/;
- my $libvpatchnum = 0;
- for (split '', $libvpatch // '') {
- $libvpatchnum += ord(lc($_)) - 96;
- # To compensate because the letter 'z' is always followed by
- # another, i.e. doesn't add any value on its own
- $libvpatchnum-- if lc($_) eq 'z';
- }
- my $match1 = $libvmajor * 100 + $libvminor;
- my $match2 = $libvedit * 100 + $libvpatchnum;
+ $version =~ /^(\d+)\.(\d+)\.(\d+)/;
+ my $libvmajor = $1;
+ my $libvminor = $2 * 100 + $3;
print <<"_____";
-GSMATCH=LEQUAL,$match1,$match2
+GSMATCH=LEQUAL,$libvmajor,$libvminor
_____
}
}