Remove obsolete comment.
[openssl.git] / util / mk1mf.pl
index b009072c835c884b652f253b27281ef4d7f3d4b1..7463bdcd5ae80f8389b04c837e07c0c55da9f225 100755 (executable)
@@ -6,12 +6,15 @@
 #
 
 $INSTALLTOP="/usr/local/ssl";
+$OPENSSLDIR="/usr/local/ssl";
 $OPTIONS="";
 $ssl_version="";
 $banner="\t\@echo Building OpenSSL";
 
-my $no_static_engine = 0;
+my $no_static_engine = 1;
 my $engines = "";
+local $zlib_opt = 0;   # 0 = no zlib, 1 = static, 2 = dynamic
+local $zlib_lib = "";
 
 
 open(IN,"<Makefile") || die "unable to open Makefile!\n";
@@ -19,6 +22,7 @@ while(<IN>) {
     $ssl_version=$1 if (/^VERSION=(.*)$/);
     $OPTIONS=$1 if (/^OPTIONS=(.*)$/);
     $INSTALLTOP=$1 if (/^INSTALLTOP=(.*$)/);
+    $OPENSSLDIR=$1 if (/^OPENSSLDIR=(.*$)/);
 }
 close(IN);
 
@@ -61,7 +65,7 @@ and [options] can be one of
        no-md2 no-md4 no-md5 no-sha no-mdc2     - Skip this digest
        no-ripemd
        no-rc2 no-rc4 no-rc5 no-idea no-des     - Skip this symetric cipher
-       no-bf no-cast no-aes
+       no-bf no-cast no-aes no-camellia
        no-rsa no-dsa no-dh                     - Skip this public key cipher
        no-ssl2 no-ssl3                         - Skip this version of SSL
        just-ssl                                - remove all non-ssl keys/digest
@@ -113,7 +117,8 @@ $out_def="out";
 $inc_def="outinc";
 $tmp_def="tmp";
 
-$mkdir="-mkdir";
+$perl="perl" unless defined $perl;
+$mkdir="-mkdir" unless defined $mkdir;
 
 ($ssl,$crypto)=("ssl","crypto");
 $ranlib="echo ranlib";
@@ -194,6 +199,7 @@ $cflags= "$xcflags$cflags" if $xcflags ne "";
 
 $cflags.=" -DOPENSSL_NO_IDEA" if $no_idea;
 $cflags.=" -DOPENSSL_NO_AES"  if $no_aes;
+$cflags.=" -DOPENSSL_NO_CAMELLIA"  if $no_camellia;
 $cflags.=" -DOPENSSL_NO_RC2"  if $no_rc2;
 $cflags.=" -DOPENSSL_NO_RC4"  if $no_rc4;
 $cflags.=" -DOPENSSL_NO_RC5"  if $no_rc5;
@@ -210,6 +216,7 @@ $cflags.=" -DOPENSSL_NO_DES"  if $no_des;
 $cflags.=" -DOPENSSL_NO_RSA"  if $no_rsa;
 $cflags.=" -DOPENSSL_NO_DSA"  if $no_dsa;
 $cflags.=" -DOPENSSL_NO_DH"   if $no_dh;
+$cflags.=" -DOPENSSL_NO_WHIRLPOOL"   if $no_whirlpool;
 $cflags.=" -DOPENSSL_NO_SOCK" if $no_sock;
 $cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2;
 $cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3;
@@ -221,6 +228,9 @@ $cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh;
 $cflags.=" -DOPENSSL_NO_ENGINE"   if $no_engine;
 $cflags.=" -DOPENSSL_NO_HW"   if $no_hw;
 
+$cflags.= " -DZLIB" if $zlib_opt;
+$cflags.= " -DZLIB_SHARED" if $zlib_opt == 2;
+
 if ($no_static_engine)
        {
        $cflags .= " -DOPENSSL_NO_STATIC_ENGINE";
@@ -239,6 +249,7 @@ else
 
 $ex_libs="$l_flags$ex_libs" if ($l_flags ne "");
 
+
 %shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL",
                  "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
 
@@ -254,6 +265,7 @@ if ($msdos)
 $link="$bin_dir$link" if ($link !~ /^\$/);
 
 $INSTALLTOP =~ s|/|$o|g;
+$OPENSSLDIR =~ s|/|$o|g;
 
 #############################################
 # We parse in input file and 'store' info for later printing.
@@ -283,8 +295,14 @@ for (;;)
        if ($key eq "KRB5_INCLUDES")
                { $cflags .= " $val";}
 
+       if ($key eq "ZLIB_INCLUDE")
+               { $cflags .= " $val" if $val ne "";}
+
+       if ($key eq "LIBZLIB")
+               { $zlib_lib = "$val" if $val ne "";}
+
        if ($key eq "LIBKRB5")
-               { $ex_libs .= " $val";}
+               { $ex_libs .= " $val" if $val ne "";}
 
        if ($key eq "TEST")
                { $test.=&var_add($dir,$val, 0); }
@@ -314,6 +332,31 @@ for (;;)
        }
 close(IN);
 
+if ($shlib)
+       {
+       $extra_install= <<"EOF";
+       \$(CP) \$(O_SSL) \$(INSTALLTOP)${o}bin
+       \$(CP) \$(O_CRYPTO) \$(INSTALLTOP)${o}bin
+       \$(CP) \$(L_SSL) \$(INSTALLTOP)${o}lib
+       \$(CP) \$(L_CRYPTO) \$(INSTALLTOP)${o}lib
+EOF
+       if ($no_static_engine)
+               {
+               $extra_install .= <<"EOF"
+       \$(MKDIR) \$(INSTALLTOP)${o}lib${o}engines
+       \$(CP) \$(E_SHLIB) \$(INSTALLTOP)${o}lib${o}engines
+EOF
+               }
+       }
+else
+       {
+       $extra_install= <<"EOF";
+       \$(CP) \$(O_SSL) \$(INSTALLTOP)${o}lib
+       \$(CP) \$(O_CRYPTO) \$(INSTALLTOP)${o}lib
+EOF
+       $ex_libs .= " $zlib_lib" if $zlib_opt == 1;
+       }
+
 $defs= <<"EOF";
 # This makefile has been automatically generated from the OpenSSL distribution.
 # This single makefile will build the complete OpenSSL distribution and
@@ -334,6 +377,7 @@ $defs .= $preamble if defined $preamble;
 
 $defs.= <<"EOF";
 INSTALLTOP=$INSTALLTOP
+OPENSSLDIR=$OPENSSLDIR
 
 # Set your compiler options
 PLATFORM=$platform
@@ -375,6 +419,10 @@ SHA1_ASM_OBJ=$sha1_asm_obj
 SHA1_ASM_SRC=$sha1_asm_src
 RMD160_ASM_OBJ=$rmd160_asm_obj
 RMD160_ASM_SRC=$rmd160_asm_src
+WHIRLPOOL_ASM_OBJ=$whirlpool_asm_obj
+WHIRLPOOL_ASM_SRC=$whirlpool_asm_src
+CPUID_ASM_OBJ=$cpuid_asm_obj
+CPUID_ASM_SRC=$cpuid_asm_src
 
 # The output directory for everything intersting
 OUT_D=$out_dir
@@ -384,6 +432,7 @@ TMP_D=$tmp_dir
 INC_D=$inc_dir
 INCO_D=$inc_dir${o}openssl
 
+PERL=$perl
 CP=$cp
 RM=$rm
 RANLIB=$ranlib
@@ -470,7 +519,7 @@ lib: \$(LIBS_DEP) \$(E_SHLIB)
 
 exe: \$(T_EXE) \$(BIN_D)$o\$(E_EXE)$exep
 
-install:
+install: all
        \$(MKDIR) \$(INSTALLTOP)
        \$(MKDIR) \$(INSTALLTOP)${o}bin
        \$(MKDIR) \$(INSTALLTOP)${o}include
@@ -478,8 +527,14 @@ install:
        \$(MKDIR) \$(INSTALLTOP)${o}lib
        \$(CP) \$(INCO_D)${o}*.\[ch\] \$(INSTALLTOP)${o}include${o}openssl
        \$(CP) \$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin
-       \$(CP) \$(O_SSL) \$(INSTALLTOP)${o}lib
-       \$(CP) \$(O_CRYPTO) \$(INSTALLTOP)${o}lib
+       \$(MKDIR) \$(OPENSSLDIR)
+       \$(CP) apps${o}openssl.cnf \$(OPENSSLDIR)
+$extra_install
+
+
+test: \$(T_EXE)
+       cd \$(BIN_D)
+       ..${o}ms${o}test
 
 clean:
        \$(RM) \$(TMP_D)$o*.*
@@ -612,6 +667,16 @@ foreach (values %lib_nam)
                $lib_obj =~ s/\s(\S*\/rmd_dgst\S*)/ $1 \$(RMD160_ASM_OBJ)/;
                $rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src);
                }
+       if (($whirlpool_asm_obj ne "") && ($_ eq "CRYPTO"))
+               {
+               $lib_obj =~ s/\s(\S*\/wp_dgst\S*)/ $1 \$(WHIRLPOOL_ASM_OBJ)/;
+               $rules.=&do_asm_rule($whirlpool_asm_obj,$whirlpool_asm_src);
+               }
+       if (($cpuid_asm_obj ne "") && ($_ eq "CRYPTO"))
+               {
+               $lib_obj =~ s/\s(\S*\/cversion\S*)/ $1 \$(CPUID_ASM_OBJ)/;
+               $rules.=&do_asm_rule($cpuid_asm_obj,$cpuid_asm_src);
+               }
        $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj);
        $lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)";
        $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib);
@@ -677,6 +742,7 @@ sub var_add
        return("") if $no_hw   && $dir =~ /\/hw/;
        return("") if $no_idea && $dir =~ /\/idea/;
        return("") if $no_aes  && $dir =~ /\/aes/;
+       return("") if $no_camellia  && $dir =~ /\/camellia/;
        return("") if $no_rc2  && $dir =~ /\/rc2/;
        return("") if $no_rc4  && $dir =~ /\/rc4/;
        return("") if $no_rc5  && $dir =~ /\/rc5/;
@@ -696,6 +762,7 @@ sub var_add
        return("") if $no_sock && $dir =~ /\/proxy/;
        return("") if $no_bf   && $dir =~ /\/bf/;
        return("") if $no_cast && $dir =~ /\/cast/;
+       return("") if $no_whirlpool && $dir =~ /\/whrlpool/;
 
        $val =~ s/^\s*(.*)\s*$/$1/;
        @a=split(/\s+/,$val);
@@ -710,6 +777,7 @@ sub var_add
        @a=grep(!/^e_.*_bf$/,@a) if $no_bf;
        @a=grep(!/^e_.*_c$/,@a) if $no_cast;
        @a=grep(!/^e_rc4$/,@a) if $no_rc4;
+       @a=grep(!/^e_camellia$/,@a) if $no_camellia;
 
        @a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2;
        @a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3;
@@ -794,13 +862,15 @@ sub do_defs
                elsif ($_ =~ /MD5_ASM/) { $t="$_ "; }
                elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; }
                elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; }
+               elsif ($_ =~ /WHIRLPOOL_ASM/){ $t="$_ "; }
+               elsif ($_ =~ /CPUID_ASM/){ $t="$_ "; }
                else    { $t="$location${o}$_$pf "; }
 
                $Vars{$var}.="$t ";
                $ret.=$t;
                }
        # hack to add version info on MSVC
-       if ($shlib && ($platform eq "VC-WIN32") || ($platform eq "VC-NT"))
+       if ($shlib && (($platform eq "VC-WIN32") || ($platform eq "VC-NT")))
                {
                if ($var eq "CRYPTOOBJ")
                        { $ret.="\$(OBJ_D)\\\$(CRYPTO).res "; }
@@ -920,6 +990,7 @@ sub read_options
                "no-rc5" => \$no_rc5,
                "no-idea" => \$no_idea,
                "no-aes" => \$no_aes,
+               "no-camellia" => \$no_camellia,
                "no-des" => \$no_des,
                "no-bf" => \$no_bf,
                "no-cast" => \$no_cast,
@@ -930,6 +1001,7 @@ sub read_options
                "no-sha1" => \$no_sha1,
                "no-ripemd" => \$no_ripemd,
                "no-mdc2" => \$no_mdc2,
+               "no-whirlpool" => \$no_whirlpool,
                "no-patents" => 
                        [\$no_rc2, \$no_rc4, \$no_rc5, \$no_idea, \$no_rsa],
                "no-rsa" => \$no_rsa,
@@ -937,6 +1009,7 @@ sub read_options
                "no-dh" => \$no_dh,
                "no-hmac" => \$no_hmac,
                "no-aes" => \$no_aes,
+               "no-camellia" => \$no_camellia,
                "no-asm" => \$no_asm,
                "nasm" => \$nasm,
                "nw-nasm" => \$nw_nasm,
@@ -956,7 +1029,7 @@ sub read_options
                        [\$no_rc2, \$no_idea, \$no_des, \$no_bf, \$no_cast,
                          \$no_md2, \$no_sha, \$no_mdc2, \$no_dsa, \$no_dh,
                          \$no_ssl2, \$no_err, \$no_ripemd, \$no_rc5,
-                         \$no_aes],
+                         \$no_aes, \$no_camellia],
                "rsaref" => 0,
                "gcc" => \$gcc,
                "debug" => \$debug,
@@ -965,6 +1038,7 @@ sub read_options
                "dll" => \$shlib,
                "shared" => 0,
                "no-gmp" => 0,
+               "no-rfc3779" => 0,
                "no-shared" => 0,
                "no-zlib" => 0,
                "no-zlib-dynamic" => 0,
@@ -985,10 +1059,10 @@ sub read_options
                        }
                }
        elsif (/^no-comp$/) { $xcflags = "-DOPENSSL_NO_COMP $xcflags"; }
-       elsif (/^enable-zlib$/) { $xcflags = "-DZLIB $xcflags"; }
+       elsif (/^enable-zlib$/) { $zlib_opt = 1 if $zlib_opt == 0 }
        elsif (/^enable-zlib-dynamic$/)
                {
-               $xcflags = "-DZLIB_SHARED -DZLIB $xcflags";
+               $zlib_opt = 2;
                }
        elsif (/^no-static-engine/)
                {