Add better support for FreeBSD on non-x86 machines.
[oweals/openssl.git] / Configure
index ab2fb3083d78a730e3f680876739df579af9acc1..28e80266bc94e66a7a8b03b3abde4e0e5c7a004b 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -262,11 +262,10 @@ my %table=(
 "hpux64-parisc-gcc","gcc:-DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dlfcn:hpux64-shared:-fpic::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 
 # IA-64 targets
-# I have no idea if this one actually works, feedback needed. <appro>
-"hpux-ia64-cc","cc:-Ae +DD32 +O3 +ESlit -z -DB_ENDIAN::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o:::::::::dlfcn:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"hpux-ia64-cc","cc:-Ae +DD32 +O3 +Olit=all -z -DB_ENDIAN::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o:::::::::dlfcn:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 # Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with
 # with debugging of the following config.
-"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +ESlit -z -DB_ENDIAN::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o:::::::::dlfcn:hpux64-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o:::::::::dlfcn:hpux64-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 
 # More attempts at unified 10.X and 11.X targets for HP C compiler.
 #
@@ -396,6 +395,7 @@ my %table=(
 "NetBSD-m68",  "gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 "NetBSD-x86",  "gcc:-DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 "FreeBSD-elf",  "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::-pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"FreeBSD-sparc64","gcc:-DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::-pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE:::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2 BF_PTR::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 "FreeBSD",      "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
 "bsdi-gcc",     "gcc:-O3 -ffast-math -DL_ENDIAN -DPERL5 -m486::(unknown):::RSA_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_bsdi_asm}",
 "bsdi-elf-gcc",     "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
@@ -480,7 +480,7 @@ my %table=(
 # SCO cc.
 "sco5-cc",  "cc:-belf::(unknown)::-lsocket -lresolv -lnsl:${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:svr3-shared:-Kpic", # des options?
 "sco5-cc-pentium",  "cc:-Kpentium::(unknown)::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:::", # des options?
-"sco5-gcc",  "gcc:-O3 -fomit-frame-pointer::(unknown)::-lsocket -lresolv -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:svr3-shared:-fPIC", # the SCO assembler doesn't seem to like our assembler files ...
+"sco5-gcc",  "gcc:-O3 -fomit-frame-pointer::(unknown)::-lsocket -lresolv -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:svr3-shared:-fPIC",
 
 # Sinix/ReliantUNIX RM400
 # NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g  */
@@ -759,27 +759,6 @@ PROCESS_ARGS:
                                $depflags .= "-DOPENSSL_NO_MDC2 ";
                                $openssl_algorithm_defines .= "#define OPENSSL_NO_MDC2\n";
                                }
-                       if ($algo eq "EC")
-                               {
-                               push @skip, "ecdsa";
-                               push @skip, "ecdh";
-                               $options .= " no-ecdsa";
-                               $options .= " no-ecdh";
-                               $flags .= "-DOPENSSL_NO_ECDSA ";
-                               $flags .= "-DOPENSSL_NO_ECDH ";
-                               $depflags .= "-DOPENSSL_NO_ECDSA ";
-                               $depflags .= "-DOPENSSL_NO_ECDH ";
-                               $openssl_algorithm_defines .= "#define OPENSSL_NO_ECDSA\n";
-                               $openssl_algorithm_defines .= "#define OPENSSL_NO_ECDH\n";
-                               }
-                       if ($algo eq "SHA" || $algo eq "SHA1")
-                               {
-                               push @skip, "ecdsa";
-                               $options .= " no-ecdsa";
-                               $flags .= "-DOPENSSL_NO_ECDSA ";
-                               $depflags .= "-DOPENSSL_NO_ECDSA ";
-                               $openssl_algorithm_defines .= "#define OPENSSL_NO_ECDSA\n";
-                               }
                        if ($algo eq "MD5")
                                {
                                $no_md5 = 1;
@@ -977,6 +956,8 @@ my $shared_extension = $fields[$idx_shared_extension];
 my $ranlib = $fields[$idx_ranlib];
 my $arflags = $fields[$idx_arflags];
 
+my $no_shared_warn=0;
+
 $cflags="$flags$cflags" if ($flags ne "");
 
 # Kerberos settings.  The flavor must be provided from outside, either through
@@ -1037,10 +1018,12 @@ else
                        }
                }
        $withargs{"krb5-lib"} .= " -lresolv"
-               if ("$lresolv");
+               if ("$lresolv" ne "");
        $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include"
                if $withargs{"krb5-include"} eq "" &&
                   $withargs{"krb5-dir"} ne "";
+
+       $libs.=$withargs{"krb5-lib"}." " if $withargs{"krb5-lib"} ne "";
        }
 
 # The DSO code currently always implements all functions so that no
@@ -1096,7 +1079,7 @@ else
 #              }
        }       
 
-$lflags="$libs$lflags"if ($libs ne "");
+$lflags="$libs$lflags" if ($libs ne "");
 
 if ($no_asm)
        {
@@ -1126,6 +1109,7 @@ if ($zlib)
 my $shared_mark = "";
 if ($shared_target eq "")
        {
+       $no_shared_warn = 1 if !$no_shared;
        $no_shared = 1;
        }
 if (!$no_shared)
@@ -1136,17 +1120,6 @@ if (!$no_shared)
                }
        }
 
-if ($no_shared)
-       {
-       $cflags="-DOPENSSL_NO_DYNAMIC_ENGINE $cflags";
-       $openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
-       }
-else
-       {
-       $cflags="-DOPENSSL_NO_STATIC_ENGINE $cflags";
-       $openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
-       }
-
 if ($sys_id ne "")
        {
        $cflags="-DOPENSSL_SYSNAME_$sys_id $cflags";
@@ -1191,7 +1164,6 @@ if ($rmd160_obj =~ /\.o$/)
 $cflags =~ s/([\\\"])/\\\1/g;
 
 my $version = "unknown";
-my $version_num = "unknown";
 my $major = "unknown";
 my $minor = "unknown";
 my $shlib_version_number = "unknown";
@@ -1203,7 +1175,6 @@ open(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n";
 while (<IN>)
        {
        $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /;
-       $version_num=$1 if /OPENSSL.VERSION.NUMBER.*0x(\S+)/;
        $shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/;
        $shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/;
        }
@@ -1272,7 +1243,6 @@ while (<IN>)
        s/^ARFLAGS=.*/ARFLAGS= $arflags/;
        s/^PERL=.*/PERL= $perl/;
        s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
-       s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
        s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
        s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
        s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
@@ -1320,8 +1290,6 @@ print "ARFLAGS       =$arflags\n";
 print "PERL          =$perl\n";
 print "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n"
        if $withargs{"krb5-include"} ne "";
-print "LIBKRB5       =",$withargs{"krb5-lib"},"\n"
-       if $withargs{"krb5-lib"} ne "";
 
 my $des_ptr=0;
 my $des_risc1=0;
@@ -1536,68 +1504,6 @@ EOF
        }
 }
 
-# create the ms/version32.rc file if needed
-if ($IsWindows) {
-       my ($v1, $v2, $v3, $v4);
-       if ($version_num =~ /(^[0-9a-f]{1})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i) {
-               $v1=hex $1;
-               $v2=hex $2;
-               $v3=hex $3;
-               $v4=hex $4;
-       }
-       open (OUT,">ms/version32.rc") || die "Can't open ms/version32.rc";
-       print OUT <<EOF;
-#include <winver.h>
-
-LANGUAGE 0x09,0x01
-
-1 VERSIONINFO
-  FILEVERSION $v1,$v2,$v3,$v4
-  PRODUCTVERSION $v1,$v2,$v3,$v4
-  FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
-  FILEFLAGS 0x01L
-#else
-  FILEFLAGS 0x00L
-#endif
-  FILEOS VOS__WINDOWS32
-  FILETYPE VFT_DLL
-  FILESUBTYPE 0x0L
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-       BLOCK "040904b0"
-       BEGIN
-           // Required:            
-           VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
-           VALUE "FileDescription", "OpenSSL Shared Library\\0"
-           VALUE "FileVersion", "$version\\0"
-#if defined(CRYPTO)
-           VALUE "InternalName", "libeay32\\0"
-           VALUE "OriginalFilename", "libeay32.dll\\0"
-#elif defined(SSL)
-           VALUE "InternalName", "ssleay32\\0"
-           VALUE "OriginalFilename", "ssleay32.dll\\0"
-#endif
-           VALUE "ProductName", "The OpenSSL Toolkit\\0"
-           VALUE "ProductVersion", "$version\\0"
-           // Optional:
-           //VALUE "Comments", "\\0"
-           VALUE "LegalCopyright", "Copyright © 1998-2002 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
-           //VALUE "LegalTrademarks", "\\0"
-           //VALUE "PrivateBuild", "\\0"
-           //VALUE "SpecialBuild", "\\0"
-       END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x409, 0x4b0
-    END
-END
-EOF
-       close(OUT);
-  }
-  
 print <<EOF;
 
 Configured for $target.
@@ -1610,6 +1516,15 @@ applications as the compiler options required on this system are not known.
 See file INSTALL for details if you need multi-threading.
 EOF
 
+print <<\EOF if ($no_shared_warn);
+
+You gave the option 'shared'.  Normally, that would give you shared libraries.
+Unfortunately, the OpenSSL configuration doesn't include shared library support
+for this platform yet, so it will pretend you gave the option 'no-shared'.  If
+you can inform the developpers (openssl-dev\@openssl.org) how to support shared
+libraries on this platform, they will at least look at it and try their best.
+EOF
+
 exit(0);
 
 sub usage