-#!/usr/local/bin/perl -w
+#! /usr/bin/env perl
+# Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the OpenSSL license (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
+
#
# generate a .def file
#
# existence:platform:kind:algorithms
#
# - "existence" can be "EXIST" or "NOEXIST" depending on if the symbol is
-# found somewhere in the source,
+# found somewhere in the source,
# - "platforms" is empty if it exists on all platforms, otherwise it contains
# comma-separated list of the platform, just as they are if the symbol exists
# for those platforms, or prepended with a "!" if not. This helps resolve
my $do_ctestall = 0;
my $do_checkexist = 0;
-my $VMSVAX=0;
-my $VMSNonVAX=0;
my $VMS=0;
my $W32=0;
my $NT=0;
-my $OS2=0;
my $linux=0;
# Set this to make typesafe STACK definitions appear in DEF
my $safe_stack_def = 0;
my @known_platforms = ( "__FreeBSD__", "PERL5",
- "EXPORT_VAR_AS_FUNCTION", "ZLIB"
+ "EXPORT_VAR_AS_FUNCTION", "ZLIB", "_WIN32"
);
my @known_ossl_platforms = ( "VMS", "WIN32", "WINNT", "OS2" );
my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
"CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1",
"SHA256", "SHA512", "RMD160",
"MDC2", "WHIRLPOOL", "RSA", "DSA", "DH", "EC", "EC2M",
- "HMAC", "AES", "CAMELLIA", "SEED", "GOST",
- "SCRYPT", "CHACHA", "POLY1305",
+ "HMAC", "AES", "CAMELLIA", "SEED", "GOST", "ARIA",
+ "SCRYPT", "CHACHA", "POLY1305", "BLAKE2",
+ "SIPHASH",
# EC_NISTP_64_GCC_128
"EC_NISTP_64_GCC_128",
# Envelope "algorithms"
"PSK", "SRP", "HEARTBEATS",
# CMS
"CMS",
+ "OCSP",
# CryptoAPI Engine
"CAPIENG",
- # SSL v3 method
- "SSL3_METHOD",
+ # SSL methods
+ "SSL3_METHOD", "TLS1_METHOD", "TLS1_1_METHOD", "TLS1_2_METHOD", "DTLS1_METHOD", "DTLS1_2_METHOD",
# NEXTPROTONEG
"NEXTPROTONEG",
# Deprecated functions
"UNIT_TEST",
# User Interface
"UI",
+ #
+ "TS",
# OCB mode
"OCB",
+ "CMAC",
# APPLINK (win build feature?)
"APPLINK"
);
$W32 = 1;
$NT = 1;
}
- if ($_ eq "VMS-VAX") {
- $VMS=1;
- $VMSVAX=1;
- }
- if ($_ eq "VMS-NonVAX") {
- $VMS=1;
- $VMSNonVAX=1;
- }
if ($_ eq "linux") {
$linux=1;
}
- $VMS=$VMSNonVAX=1 if $_ eq "VMS";
- $OS2=1 if $_ eq "OS2";
+ $VMS=1 if $_ eq "VMS";
if ($_ eq "zlib" || $_ eq "enable-zlib" || $_ eq "zlib-dynamic"
|| $_ eq "enable-zlib-dynamic") {
$zlib = 1;
$do_ssl=1 if $_ eq "libssl";
if ($_ eq "ssl") {
- $do_ssl=1;
+ $do_ssl=1;
$libname=$_
}
$do_crypto=1 if $_ eq "libcrypto";
}
-if (!$libname) {
+if (!$libname) {
if ($do_ssl) {
$libname="LIBSSL";
}
}
# If no platform is given, assume WIN32
-if ($W32 + $VMS + $OS2 + $linux == 0) {
+if ($W32 + $VMS + $linux == 0) {
$W32 = 1;
}
die "Please, only one platform at a time"
- if ($W32 + $VMS + $OS2 + $linux > 1);
+ if ($W32 + $VMS + $linux > 1);
if (!$do_ssl && !$do_crypto)
{
my $crypto ="include/openssl/crypto.h";
$crypto.=" include/internal/o_dir.h";
$crypto.=" include/internal/o_str.h";
-$crypto.=" include/internal/threads.h";
+$crypto.=" include/internal/err.h";
+$crypto.=" include/internal/asn1t.h";
$crypto.=" include/openssl/des.h" ; # unless $no_des;
$crypto.=" include/openssl/idea.h" ; # unless $no_idea;
$crypto.=" include/openssl/rc4.h" ; # unless $no_rc4;
$crypto.=" include/openssl/stack.h" ; # unless $no_stack;
$crypto.=" include/openssl/buffer.h" ; # unless $no_buffer;
$crypto.=" include/openssl/bio.h" ; # unless $no_bio;
-$crypto.=" include/openssl/dso.h" ; # unless $no_dso;
+$crypto.=" include/internal/dso.h" ; # unless $no_dso;
$crypto.=" include/openssl/lhash.h" ; # unless $no_lhash;
$crypto.=" include/openssl/conf.h";
$crypto.=" include/openssl/txt_db.h";
}
&update_numbers(*OUT,"LIBCRYPTO",*crypto_list,$max_crypto,@crypto_symbols);
close OUT;
-}
+}
} elsif ($do_checkexist) {
&check_existing(*ssl_list, @ssl_symbols)
$def .=
"#INFO:"
.join(',',@current_platforms).":"
- .join(',',@current_algorithms).";";
+ .join(',',"STDIO",@current_algorithms).";";
$def .= "int PEM_read_$1(void);";
$def .= "int PEM_write_$1(void);";
$def .=
$def .=
"#INFO:"
.join(',',@current_platforms).":"
- .join(',',@current_algorithms).";";
+ .join(',',"STDIO",@current_algorithms).";";
$def .= "int PEM_write_$1(void);";
$def .=
"#INFO:"
$def .=
"#INFO:"
.join(',',@current_platforms).":"
- .join(',',@current_algorithms).";";
+ .join(',',"STDIO",@current_algorithms).";";
$def .= "int PEM_read_$1(void);";
$def .=
"#INFO:"
.join(',',@current_platforms).":"
- .join(',',@current_algorithms).";";
+ .join(',',"STDIO",@current_algorithms).";";
# Things that are everywhere
$def .= "int PEM_read_bio_$1(void);";
next;
$platform{"PEM_write_NS_CERT_SEQ"} = "VMS";
$platform{"PEM_read_P8_PRIV_KEY_INFO"} = "VMS";
$platform{"PEM_write_P8_PRIV_KEY_INFO"} = "VMS";
- $platform{"EVP_sha384"} = "!VMSVAX";
- $platform{"EVP_sha512"} = "!VMSVAX";
- $platform{"SHA384_Init"} = "!VMSVAX";
- $platform{"SHA384_Transform"} = "!VMSVAX";
- $platform{"SHA384_Update"} = "!VMSVAX";
- $platform{"SHA384_Final"} = "!VMSVAX";
- $platform{"SHA384"} = "!VMSVAX";
- $platform{"SHA512_Init"} = "!VMSVAX";
- $platform{"SHA512_Transform"} = "!VMSVAX";
- $platform{"SHA512_Update"} = "!VMSVAX";
- $platform{"SHA512_Final"} = "!VMSVAX";
- $platform{"SHA512"} = "!VMSVAX";
-
# Info we know about
if ($platforms) {
# platforms
- if ($keyword eq "VMSVAX" && $VMSVAX) { return 1; }
- if ($keyword eq "VMSNonVAX" && $VMSNonVAX) { return 1; }
if ($keyword eq "VMS" && $VMS) { return 1; }
if ($keyword eq "WIN32" && $W32) { return 1; }
+ if ($keyword eq "_WIN32" && $W32) { return 1; }
if ($keyword eq "WINNT" && $NT) { return 1; }
- if ($keyword eq "OS2" && $OS2) { return 1; }
# Special platforms:
# EXPORT_VAR_AS_FUNCTION means that global variables
- # will be represented as functions. This currently
- # only happens on VMS-VAX.
- if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && ($VMSVAX || $W32)) {
+ # will be represented as functions.
+ if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && $W32) {
return 1;
}
if ($keyword eq "ZLIB" && $zlib) { return 1; }
if ($W32)
{ $libname.="32"; }
- elsif ($OS2)
- { # DLL names should not clash on the whole system.
- # However, they should not have any particular relationship
- # to the name of the static library. Chose descriptive names
- # (must be at most 8 chars).
- my %translate = (ssl => 'open_ssl', crypto => 'cryptssl');
- $libname = $translate{$name} || $name;
- $liboptions = <<EOO;
-INITINSTANCE
-DATA MULTIPLE NONSHARED
-EOO
- # Vendor field can't contain colon, drat; so we omit http://
- $description = "\@#$http_vendor:$version#\@$what; DLL for library $name. Build for EMX -Zmtd";
- }
- if ($W32 || $OS2)
+ if ($W32)
{
print OUT <<"EOF";
;
}
print OUT $symline;
$symvtextcount += length($symline) - 2;
- } elsif($v && !$OS2) {
- printf OUT " %s%-39s @%-8d DATA\n",
- ($W32)?"":"_",$s2,$n;
+ } elsif($v) {
+ printf OUT " %s%-39s DATA\n",
+ ($W32)?"":"_",$s2;
} else {
- printf OUT " %s%-39s @%d\n",
- ($W32||$OS2)?"":"_",$s2,$n;
+ printf OUT " %s%s\n",
+ ($W32)?"":"_",$s2;
}
}
}
if ($cvnums ne $tvnums) {
die "Invalid version number: $testversion "
."for current version $currversion\n"
- if (substr($cvnums, -1) < substr($tvnums, -1)
- || substr($cvnums, 0, 4) ne substr($tvnums, 0, 4));
+ if (substr($cvnums, 0, 4) ne substr($tvnums, 0, 4));
return;
}
#If we get here then the base version (i.e. the numbers) are the same - they