More consistency.
[openssl.git] / util / mk1mf.pl
index 7749505c508d28f2bbfb3119f6c385335f93af0a..e1e9985063490957412673b2e69c8b57a4c5a296 100755 (executable)
@@ -6,8 +6,18 @@
 #
 
 $INSTALLTOP="/usr/local/ssl";
+$OPTIONS="";
+$ssl_version="";
+
+open(IN,"<Makefile.ssl") || die "unable to open Makefile.ssl!\n";
+while(<IN>) {
+    $ssl_version=$1 if (/^VERSION=(.*)$/);
+    $options=$1 if (/^OPTIONS=(.*)$/);
+    $INSTALLTOP=$1 if (/^INSTALLTOP=(.*$)/);
+}
+close(IN);
 
-$ssl_version="0.9.2b";
+die "Makefile.ssl is not the toplevel Makefile!\n" if $ssl_version eq "";
 
 $infile="MINFO";
 
@@ -19,6 +29,7 @@ $infile="MINFO";
        "VC-W31-32",  "Microsoft Visual C++ 1.52 - Windows 3.1 - 386+",
        "VC-MSDOS","Microsoft Visual C++ 1.52 - MSDOS",
        "Mingw32", "GNU C++ - Windows NT or 9x",
+       "Mingw32-files", "Create files with DOS copy ...",
        "BC-NT",   "Borland C++ 4.5 - Windows NT",
        "BC-W31",  "Borland C++ 4.5 - Windows 3.1 - PROBABLY NOT WORKING",
        "BC-MSDOS","Borland C++ 4.5 - MSDOS",
@@ -31,54 +42,16 @@ $infile="MINFO";
 $platform="";
 foreach (@ARGV)
        {
-       if    (/^no-rc2$/)      { $no_rc2=1; }
-       elsif (/^no-rc4$/)      { $no_rc4=1; }
-       elsif (/^no-rc5$/)      { $no_rc5=1; }
-       elsif (/^no-idea$/)     { $no_idea=1; }
-       elsif (/^no-des$/)      { $no_des=1; }
-       elsif (/^no-bf$/)       { $no_bf=1; }
-       elsif (/^no-cast$/)     { $no_cast=1; }
-       elsif (/^no-md2$/)      { $no_md2=1; }
-       elsif (/^no-md5$/)      { $no_md5=1; }
-       elsif (/^no-sha$/)      { $no_sha=1; }
-       elsif (/^no-sha1$/)     { $no_sha1=1; }
-       elsif (/^no-rmd160$/)   { $no_rmd160=1; }
-       elsif (/^no-mdc2$/)     { $no_mdc2=1; }
-       elsif (/^no-patents$/)  { $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; }
-       elsif (/^no-rsa$/)      { $no_rsa=1; }
-       elsif (/^no-dsa$/)      { $no_dsa=1; }
-       elsif (/^no-dh$/)       { $no_dh=1; }
-       elsif (/^no-asm$/)      { $no_asm=1; }
-       elsif (/^no-ssl2$/)     { $no_ssl2=1; }
-       elsif (/^no-ssl3$/)     { $no_ssl3=1; }
-       elsif (/^no-err$/)      { $no_err=1; }
-       elsif (/^no-sock$/)     { $no_sock=1; }
-
-       elsif (/^just-ssl$/)    { $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1;
-                                 $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1;
-                                 $no_ssl2=$no_err=$no_rmd160=$no_rc5=1; }
-
-       elsif (/^rsaref$/)      { $rsaref=1; }
-       elsif (/^gcc$/)         { $gcc=1; }
-       elsif (/^debug$/)       { $debug=1; }
-       elsif (/^shlib$/)       { $shlib=1; }
-       elsif (/^dll$/)         { $shlib=1; }
-       elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
-       elsif (/^-[lL].*$/)     { $l_flags.="$_ "; }
-       elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)
-               { $c_flags.="$_ "; }
-       else
+       if (!&read_options && !defined($ops{$_}))
                {
-               if (!defined($ops{$_}))
-                       {
-                       print STDERR "unknown option - $_\n";
-                       print STDERR "usage: perl mk1mf.pl [system] [options]\n";
-                       print STDERR "\nwhere [system] can be one of the following\n";
-                       foreach $i (sort keys %ops)
-                               { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; }
-                       print STDERR <<"EOF";
+               print STDERR "unknown option - $_\n";
+               print STDERR "usage: perl mk1mf.pl [options] [system]\n";
+               print STDERR "\nwhere [system] can be one of the following\n";
+               foreach $i (sort keys %ops)
+               { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; }
+               print STDERR <<"EOF";
 and [options] can be one of
-       no-md2 no-md5 no-sha no-sha1 no-mdc2 no-rmd160 - Skip this digest
+       no-md2 no-md5 no-sha no-mdc2 no-ripemd  - Skip this digest
        no-rc2 no-rc4 no-idea no-des no-bf no-cast - Skip this symetric cipher
        no-rc5
        no-rsa no-dsa no-dh                     - Skip this public key cipher
@@ -99,15 +72,18 @@ TMP=tmpdir OUT=outdir SRC=srcdir BIN=binpath INC=header-outdir CC=C-compiler
 -<ex_cc_flags>                                 - extra 'cc' flags,
                                                  added (MS), or replace (unix)
 EOF
-                       exit(1);
-                       }
-               $platform=$_;
+               exit(1);
                }
+       $platform=$_;
+       }
+foreach (split / /, $OPTIONS)
+       {
+       print STDERR "unknown option - $_\n" if !&read_options;
        }
 
 $no_mdc2=1 if ($no_des);
 
-$no_ssl3=1 if ($no_md5 || $no_sha1);
+$no_ssl3=1 if ($no_md5 || $no_sha);
 $no_ssl3=1 if ($no_rsa && $no_dh);
 
 $no_ssl2=1 if ($no_md5 || $no_rsa);
@@ -117,6 +93,7 @@ $out_def="out";
 $inc_def="outinc";
 $tmp_def="tmp";
 
+$mkdir="mkdir";
 
 ($ssl,$crypto)=("ssl","crypto");
 $RSAglue="RSAglue";
@@ -158,6 +135,10 @@ elsif ($platform eq "Mingw32")
        {
        require 'Mingw32.pl';
        }
+elsif ($platform eq "Mingw32-files")
+       {
+       require 'Mingw32f.pl';
+       }
 elsif ($platform eq "BC-NT")
        {
        $bc=1;
@@ -317,7 +298,7 @@ INCO_D=$inc_dir${o}openssl
 CP=$cp
 RM=$rm
 RANLIB=$ranlib
-MKDIR=mkdir
+MKDIR=$mkdir
 MKLIB=$bin_dir$mklib
 MLFLAGS=$mlflags
 ASM=$bin_dir$asm
@@ -810,3 +791,46 @@ sub do_copy_rule
                }
        return($ret);
        }
+
+sub read_options
+       {
+       if    (/^no-rc2$/)      { $no_rc2=1; }
+       elsif (/^no-rc4$/)      { $no_rc4=1; }
+       elsif (/^no-rc5$/)      { $no_rc5=1; }
+       elsif (/^no-idea$/)     { $no_idea=1; }
+       elsif (/^no-des$/)      { $no_des=1; }
+       elsif (/^no-bf$/)       { $no_bf=1; }
+       elsif (/^no-cast$/)     { $no_cast=1; }
+       elsif (/^no-md2$/)      { $no_md2=1; }
+       elsif (/^no-md5$/)      { $no_md5=1; }
+       elsif (/^no-sha$/)      { $no_sha=1; }
+       elsif (/^no-sha1$/)     { $no_sha1=1; }
+       elsif (/^no-ripemd$/)   { $no_ripemd=1; }
+       elsif (/^no-mdc2$/)     { $no_mdc2=1; }
+       elsif (/^no-patents$/)  { $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; }
+       elsif (/^no-rsa$/)      { $no_rsa=1; }
+       elsif (/^no-dsa$/)      { $no_dsa=1; }
+       elsif (/^no-dh$/)       { $no_dh=1; }
+       elsif (/^no-hmac$/)     { $no_hmac=1; }
+       elsif (/^no-asm$/)      { $no_asm=1; }
+       elsif (/^no-ssl2$/)     { $no_ssl2=1; }
+       elsif (/^no-ssl3$/)     { $no_ssl3=1; }
+       elsif (/^no-err$/)      { $no_err=1; }
+       elsif (/^no-sock$/)     { $no_sock=1; }
+
+       elsif (/^just-ssl$/)    { $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1;
+                                 $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1;
+                                 $no_ssl2=$no_err=$no_rmd160=$no_rc5=1; }
+
+       elsif (/^rsaref$/)      { $rsaref=1; }
+       elsif (/^gcc$/)         { $gcc=1; }
+       elsif (/^debug$/)       { $debug=1; }
+       elsif (/^shlib$/)       { $shlib=1; }
+       elsif (/^dll$/)         { $shlib=1; }
+       elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
+       elsif (/^-[lL].*$/)     { $l_flags.="$_ "; }
+       elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)
+               { $c_flags.="$_ "; }
+       else { return(0); }
+       return(1);
+       }