X-Git-Url: https://git.openssl.org/gitweb/?a=blobdiff_plain;f=util%2Fmkdef.pl;h=6cbdf776833c5c9ca3de685474a9370067fd5b27;hb=40e950aed64808201993ed1e80df1b8b83ef5305;hp=4c15a942d2636a3e5c10625958619a70e80c9099;hpb=57544ee2248a2f9d976844fe8eaaf404d4d70f1a;p=openssl.git diff --git a/util/mkdef.pl b/util/mkdef.pl index 4c15a942d2..6cbdf77683 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -83,7 +83,7 @@ my @known_platforms = ( "__FreeBSD__", "PERL5", "NeXT", my @known_ossl_platforms = ( "VMS", "WIN16", "WIN32", "WINNT", "OS2" ); my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF", "CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1", - "RIPEMD", + "SHA256", "SHA512", "RIPEMD", "MDC2", "RSA", "DSA", "DH", "EC", "ECDH", "ECDSA", "HMAC", "AES", # Envelope "algorithms" "EVP", "X509", "ASN1_TYPEDEFS", @@ -93,12 +93,12 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF", # External "algorithms" "FP_API", "STDIO", "SOCK", "KRB5", # Engines - "STATIC_ENGINE", "ENGINE", "HW", + "STATIC_ENGINE", "ENGINE", "HW", "GMP", # Deprecated functions "DEPRECATED" ); my $options=""; -open(IN,") { $options=$1 if (/^OPTIONS=(.*)$/); } @@ -112,7 +112,8 @@ my $no_cast; my $no_md2; my $no_md4; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2; my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; my $no_aes; my $no_krb5; my $no_ec; my $no_ecdsa; my $no_ecdh; my $no_engine; my $no_hw; -my $no_fp_api; my $no_static_engine; my $no_deprecated; +my $no_fp_api; my $no_static_engine; my $no_gmp; my $no_deprecated; + foreach (@ARGV, split(/ /, $options)) { @@ -184,6 +185,7 @@ foreach (@ARGV, split(/ /, $options)) elsif (/^no-krb5$/) { $no_krb5=1; } elsif (/^no-engine$/) { $no_engine=1; } elsif (/^no-hw$/) { $no_hw=1; } + elsif (/^no-gmp$/) { $no_gmp=1; } } @@ -221,6 +223,7 @@ my $ssl="ssl/ssl.h"; $ssl.=" ssl/kssl.h"; my $crypto ="crypto/crypto.h"; +$crypto.=" crypto/o_dir.h"; $crypto.=" crypto/des/des.h crypto/des/des_old.h" ; # unless $no_des; $crypto.=" crypto/idea/idea.h" ; # unless $no_idea; $crypto.=" crypto/rc4/rc4.h" ; # unless $no_rc4; @@ -273,6 +276,7 @@ $crypto.=" crypto/ocsp/ocsp.h"; $crypto.=" crypto/ui/ui.h crypto/ui/ui_compat.h"; $crypto.=" crypto/krb5/krb5_asn.h"; $crypto.=" crypto/tmdiff.h"; +$crypto.=" crypto/store/store.h"; my $symhacks="crypto/symhacks.h"; @@ -428,7 +432,11 @@ sub do_defs print STDERR "DEBUG: parsing ----------\n" if $debug; while() { - last if (/\/\* Error codes for the \w+ functions\. \*\//); + if (/\/\* Error codes for the \w+ functions\. \*\//) + { + undef @tag; + last; + } if ($line ne '') { $_ = $line . $_; $line = ''; @@ -477,7 +485,7 @@ sub do_defs push(@tag,$1); $tag{$1}=-1; } - } elsif (/^\#\s*ifdef\s+(.*)/) { + } elsif (/^\#\s*ifdef\s+(\S*)/) { push(@tag,"-"); push(@tag,$1); $tag{$1}=1; @@ -510,7 +518,7 @@ sub do_defs } } elsif (/^\#\s*endif/) { my $tag_i = $#tag; - while($tag[$tag_i] ne "-") { + while($tag_i > 0 && $tag[$tag_i] ne "-") { my $t=$tag[$tag_i]; print STDERR "DEBUG: \$t=\"$t\"\n" if $debug; if ($tag{$t}==2) { @@ -846,6 +854,9 @@ sub do_defs /(\w+(\{[0-9]+\})?)\W*\(\)/s; $s = $1; print STDERR "DEBUG: found function $s\n" if $debug; + + } elsif (/TYPEDEF_\w+_OF/) { + next; } elsif (/\(/ and not (/=/)) { print STDERR "File $file: cannot parse: $_;\n"; next; @@ -1079,6 +1090,7 @@ sub is_valid if ($keyword eq "HW" && $no_hw) { return 0; } if ($keyword eq "FP_API" && $no_fp_api) { return 0; } if ($keyword eq "STATIC_ENGINE" && $no_static_engine) { return 0; } + if ($keyword eq "GMP" && $no_gmp) { return 0; } if ($keyword eq "DEPRECATED" && $no_deprecated) { return 0; } # Nothing recognise as true @@ -1134,27 +1146,55 @@ sub print_test_file } } +sub get_version { + local *MF; + my $v = '?'; + open MF, 'Makefile' or return $v; + while () { + $v = $1, last if /^VERSION=(.*?)\s*$/; + } + close MF; + return $v; +} + sub print_def_file { (*OUT,my $name,*nums,my @symbols)=@_; my $n = 1; my @e; my @r; my @v; my $prev=""; my $liboptions=""; + my $libname = $name; + my $http_vendor = 'www.openssl.org/'; + my $version = get_version(); + my $what = "OpenSSL: implementation of Secure Socket Layer"; + my $description = "$what $version, $name - http://$http_vendor"; if ($W32) - { $name.="32"; } + { $libname.="32"; } elsif ($W16) - { $name.="16"; } + { $libname.="16"; } elsif ($OS2) - { $liboptions = "INITINSTANCE\nDATA NONSHARED"; } + { # 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 = <