~sbeattie/ubuntu/oneiric/openssl/lp850608

« back to all changes in this revision

Viewing changes to .pc/rc4-amd64.patch/Configure

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2011-05-01 23:51:53 UTC
  • mfrom: (11.1.20 sid)
  • Revision ID: james.westby@ubuntu.com-20110501235153-bjcxitndquaezb68
Tags: 1.0.0d-2ubuntu1
* Resynchronise with Debian (LP: #675566).  Remaining changes:
  - debian/libssl1.0.0.postinst:
    + Display a system restart required notification bubble on libssl1.0.0
      upgrade.
    + Use a different priority for libssl1.0.0/restart-services depending
      on whether a desktop, or server dist-upgrade is being performed.
  - debian/{libssl1.0.0-udeb.dirs, control, rules}: Create
    libssl1.0.0-udeb, for the benefit of wget-udeb (no wget-udeb package
    in Debian).
  - debian/{libcrypto1.0.0-udeb.dirs, libssl1.0.0.dirs, libssl1.0.0.files,
    rules}: Move runtime libraries to /lib, for the benefit of
    wpasupplicant.
  - debian/patches/aesni.patch: Backport Intel AES-NI support, now from
    http://rt.openssl.org/Ticket/Display.html?id=2065 rather than the
    0.9.8 variant.
  - debian/patches/Bsymbolic-functions.patch: Link using
    -Bsymbolic-functions.
  - debian/patches/perlpath-quilt.patch: Don't change perl #! paths under
    .pc.
  - debian/rules:
    + Don't run 'make test' when cross-building.
    + Use host compiler when cross-building.  Patch from Neil Williams.
    + Don't build for processors no longer supported: i486, i586 (on
      i386), v8 (on sparc).
    + Fix Makefile to properly clean up libs/ dirs in clean target.
    + Replace duplicate files in the doc directory with symlinks.
* Update architectures affected by Bsymbolic-functions.patch.
* Drop debian/patches/no-sslv2.patch; Debian now adds the 'no-ssl2'
  configure option, which compiles out SSLv2 support entirely, so this is
  no longer needed.
* Drop openssl-doc in favour of the libssl-doc package introduced by
  Debian.  Add Conflicts/Replaces until the next LTS release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
:
2
 
eval 'exec perl -S $0 ${1+"$@"}'
3
 
    if $running_under_some_shell;
4
 
##
5
 
##  Configure -- OpenSSL source tree configuration script
6
 
##
7
 
 
8
 
require 5.000;
9
 
eval 'use strict;';
10
 
 
11
 
print STDERR "Warning: perl module strict not found.\n" if ($@);
12
 
 
13
 
# see INSTALL for instructions.
14
 
 
15
 
my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [enable-montasm] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n";
16
 
 
17
 
# Options:
18
 
#
19
 
# --openssldir  install OpenSSL in OPENSSLDIR (Default: DIR/ssl if the
20
 
#               --prefix option is given; /usr/local/ssl otherwise)
21
 
# --prefix      prefix for the OpenSSL include, lib and bin directories
22
 
#               (Default: the OPENSSLDIR directory)
23
 
#
24
 
# --install_prefix  Additional prefix for package builders (empty by
25
 
#               default).  This needn't be set in advance, you can
26
 
#               just as well use "make INSTALL_PREFIX=/whatever install".
27
 
#
28
 
# --with-krb5-dir  Declare where Kerberos 5 lives.  The libraries are expected
29
 
#               to live in the subdirectory lib/ and the header files in
30
 
#               include/.  A value is required.
31
 
# --with-krb5-lib  Declare where the Kerberos 5 libraries live.  A value is
32
 
#               required.
33
 
#               (Default: KRB5_DIR/lib)
34
 
# --with-krb5-include  Declare where the Kerberos 5 header files live.  A
35
 
#               value is required.
36
 
#               (Default: KRB5_DIR/include)
37
 
# --with-krb5-flavor  Declare what flavor of Kerberos 5 is used.  Currently
38
 
#               supported values are "MIT" and "Heimdal".  A value is required.
39
 
#
40
 
# --test-sanity Make a number of sanity checks on the data in this file.
41
 
#               This is a debugging tool for OpenSSL developers.
42
 
#
43
 
# no-hw-xxx     do not compile support for specific crypto hardware.
44
 
#               Generic OpenSSL-style methods relating to this support
45
 
#               are always compiled but return NULL if the hardware
46
 
#               support isn't compiled.
47
 
# no-hw         do not compile support for any crypto hardware.
48
 
# [no-]threads  [don't] try to create a library that is suitable for
49
 
#               multithreaded applications (default is "threads" if we
50
 
#               know how to do it)
51
 
# [no-]shared   [don't] try to create shared libraries when supported.
52
 
# no-asm        do not use assembler
53
 
# no-dso        do not compile in any native shared-library methods. This
54
 
#               will ensure that all methods just return NULL.
55
 
# no-krb5       do not compile in any KRB5 library or code.
56
 
# [no-]zlib     [don't] compile support for zlib compression.
57
 
# zlib-dynamic  Like "zlib", but the zlib library is expected to be a shared
58
 
#               library and will be loaded in run-time by the OpenSSL library.
59
 
# enable-montasm 0.9.8 branch only: enable Montgomery x86 assembler backport
60
 
#               from 0.9.9
61
 
# 386           generate 80386 code
62
 
# no-sse2       disables IA-32 SSE2 code, above option implies no-sse2
63
 
# no-<cipher>   build without specified algorithm (rsa, idea, rc5, ...)
64
 
# -<xxx> +<xxx> compiler options are passed through 
65
 
#
66
 
# DEBUG_SAFESTACK use type-safe stacks to enforce type-safety on stack items
67
 
#               provided to stack calls. Generates unique stack functions for
68
 
#               each possible stack type.
69
 
# DES_PTR       use pointer lookup vs arrays in the DES in crypto/des/des_locl.h
70
 
# DES_RISC1     use different DES_ENCRYPT macro that helps reduce register
71
 
#               dependancies but needs to more registers, good for RISC CPU's
72
 
# DES_RISC2     A different RISC variant.
73
 
# DES_UNROLL    unroll the inner DES loop, sometimes helps, somtimes hinders.
74
 
# DES_INT       use 'int' instead of 'long' for DES_LONG in crypto/des/des.h
75
 
#               This is used on the DEC Alpha where long is 8 bytes
76
 
#               and int is 4
77
 
# BN_LLONG      use the type 'long long' in crypto/bn/bn.h
78
 
# MD2_CHAR      use 'char' instead of 'int' for MD2_INT in crypto/md2/md2.h
79
 
# MD2_LONG      use 'long' instead of 'int' for MD2_INT in crypto/md2/md2.h
80
 
# IDEA_SHORT    use 'short' instead of 'int' for IDEA_INT in crypto/idea/idea.h
81
 
# IDEA_LONG     use 'long' instead of 'int' for IDEA_INT in crypto/idea/idea.h
82
 
# RC2_SHORT     use 'short' instead of 'int' for RC2_INT in crypto/rc2/rc2.h
83
 
# RC2_LONG      use 'long' instead of 'int' for RC2_INT in crypto/rc2/rc2.h
84
 
# RC4_CHAR      use 'char' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
85
 
# RC4_LONG      use 'long' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
86
 
# RC4_INDEX     define RC4_INDEX in crypto/rc4/rc4_locl.h.  This turns on
87
 
#               array lookups instead of pointer use.
88
 
# RC4_CHUNK     enables code that handles data aligned at long (natural CPU
89
 
#               word) boundary.
90
 
# RC4_CHUNK_LL  enables code that handles data aligned at long long boundary
91
 
#               (intended for 64-bit CPUs running 32-bit OS).
92
 
# BF_PTR        use 'pointer arithmatic' for Blowfish (unsafe on Alpha).
93
 
# BF_PTR2       intel specific version (generic version is more efficient).
94
 
#
95
 
# Following are set automatically by this script
96
 
#
97
 
# MD5_ASM       use some extra md5 assember,
98
 
# SHA1_ASM      use some extra sha1 assember, must define L_ENDIAN for x86
99
 
# RMD160_ASM    use some extra ripemd160 assember,
100
 
# SHA256_ASM    sha256_block is implemented in assembler
101
 
# SHA512_ASM    sha512_block is implemented in assembler
102
 
# AES_ASM       ASE_[en|de]crypt is implemented in assembler
103
 
 
104
 
# Minimum warning options... any contributions to OpenSSL should at least get
105
 
# past these. 
106
 
 
107
 
my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED";
108
 
 
109
 
my $strict_warnings = 0;
110
 
 
111
 
my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
112
 
 
113
 
# MD2_CHAR slags pentium pros
114
 
my $x86_gcc_opts="RC4_INDEX MD2_INT";
115
 
 
116
 
# MODIFY THESE PARAMETERS IF YOU ARE GOING TO USE THE 'util/speed.sh SCRIPT
117
 
# Don't worry about these normally
118
 
 
119
 
my $tcc="cc";
120
 
my $tflags="-fast -Xa";
121
 
my $tbn_mul="";
122
 
my $tlib="-lnsl -lsocket";
123
 
#$bits1="SIXTEEN_BIT ";
124
 
#$bits2="THIRTY_TWO_BIT ";
125
 
my $bits1="THIRTY_TWO_BIT ";
126
 
my $bits2="SIXTY_FOUR_BIT ";
127
 
 
128
 
my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o MAYBE-MO86-elf.o:dx86-elf.o yx86-elf.o:ax86-elf.o:bx86-elf.o:mx86-elf.o:sx86-elf.o s512sse2-elf.o:cx86-elf.o:rx86-elf.o rc4_skey.o:rm86-elf.o:r586-elf.o";
129
 
my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o MAYBE-MO86-cof.o:dx86-cof.o yx86-cof.o:ax86-cof.o:bx86-cof.o:mx86-cof.o:sx86-cof.o s512sse2-cof.o:cx86-cof.o:rx86-cof.o rc4_skey.o:rm86-cof.o:r586-cof.o";
130
 
my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o MAYBE-MO86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o s512sse2-out.o:cx86-out.o:rx86-out.o rc4_skey.o:rm86-out.o:r586-out.o";
131
 
 
132
 
my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o::";
133
 
my $ia64_asm=":bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o:::sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o::";
134
 
 
135
 
my $no_asm="::::::::::";
136
 
 
137
 
# As for $BSDthreads. Idea is to maintain "collective" set of flags,
138
 
# which would cover all BSD flavors. -pthread applies to them all, 
139
 
# but is treated differently. OpenBSD expands is as -D_POSIX_THREAD
140
 
# -lc_r, which is sufficient. FreeBSD 4.x expands it as -lc_r,
141
 
# which has to be accompanied by explicit -D_THREAD_SAFE and
142
 
# sometimes -D_REENTRANT. FreeBSD 5.x expands it as -lc_r, which
143
 
# seems to be sufficient?
144
 
my $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT";
145
 
 
146
 
#config-string  $cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags
147
 
 
148
 
my %table=(
149
 
# File 'TABLE' (created by 'make TABLE') contains the data from this list,
150
 
# formatted for better readability.
151
 
 
152
 
 
153
 
#"b",           "${tcc}:${tflags}::${tlib}:${bits1}:${tbn_mul}::",
154
 
#"bl-4c-2c",    "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR MD2_CHAR:${tbn_mul}::",
155
 
#"bl-4c-ri",    "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR RC4_INDEX:${tbn_mul}::",
156
 
#"b2-is-ri-dp", "${tcc}:${tflags}::${tlib}:${bits2}IDEA_SHORT RC4_INDEX DES_PTR:${tbn_mul}::",
157
 
 
158
 
# Our development configs
159
 
"purify",       "purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
160
 
"debug",        "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror::(unknown)::-lefence::::",
161
 
"debug-ben",    "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown):::::bn86-elf.o co86-elf.o",
162
 
"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
163
 
"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
164
 
"debug-ben-debug",      "gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG  -DDEBUG_SAFESTACK -ggdb3 -O2 -pipe::(unknown)::::::",
165
 
"debug-ben-debug-noopt",        "gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG  -DDEBUG_SAFESTACK -ggdb3 -pipe::(unknown)::::::",
166
 
"debug-ben-strict",     "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::",
167
 
"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
168
 
"debug-bodo",   "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
169
 
"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll",
170
 
"debug-steve64", "gcc:$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
171
 
"debug-steve32", "gcc:$gcc_devteam_warn -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -g -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
172
 
"debug-steve-opt", "gcc:$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
173
 
"debug-steve",  "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
174
 
"debug-steve-linux-pseudo64",   "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT:${no_asm}:dlfcn:linux-shared",
175
 
"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
176
 
"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
177
 
"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
178
 
"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
179
 
"debug-geoff","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
180
 
"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
181
 
"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
182
 
"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
183
 
"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
184
 
"debug-linux-generic32","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO  -g -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
185
 
"debug-linux-generic64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
186
 
"debug-linux-x86_64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -DTERMIO -g -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
187
 
"dist",         "cc:-O::(unknown)::::::",
188
 
 
189
 
# Basic configs that should work on any (32 and less bit) box
190
 
"gcc",          "gcc:-O3::(unknown):::BN_LLONG:::",
191
 
"cc",           "cc:-O::(unknown)::::::",
192
 
 
193
 
####VOS Configurations
194
 
"vos-gcc","gcc:-O3 -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
195
 
"debug-vos-gcc","gcc:-O0 -g -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
196
 
 
197
 
#### Solaris x86 with GNU C setups
198
 
# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
199
 
# here because whenever GNU C instantiates an assembler template it
200
 
# surrounds it with #APP #NO_APP comment pair which (at least Solaris
201
 
# 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic"
202
 
# error message.
203
 
"solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -march=pentium -Wall -DL_ENDIAN -DOPENSSL_NO_INLINE_ASM::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
204
 
# -shared -static-libgcc might appear controversial, but modules taken
205
 
# from static libgcc do not have relocations and linking them into our
206
 
# shared objects doesn't have any negative side-effects. On the contrary,
207
 
# doing so makes it possible to use gcc shared build with Sun C. Given
208
 
# that gcc generates faster code [thanks to inline assembler], I would
209
 
# actually recommend to consider using gcc shared build even with vendor
210
 
# compiler:-)
211
 
#                                               <appro@fy.chalmers.se>
212
 
"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN -DMD32_REG_T=int::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
213
 
 
214
 
#### Solaris x86 with Sun C setups
215
 
"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
216
 
"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
217
 
 
218
 
#### SPARC Solaris with GNU C setups
219
 
"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
220
 
"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
221
 
# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
222
 
"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
223
 
"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
224
 
####
225
 
"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
226
 
"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
227
 
 
228
 
#### SPARC Solaris with Sun C setups
229
 
# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
230
 
# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
231
 
# SC5.0 note: Compiler common patch 107357-01 or later is required!
232
 
"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
233
 
"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
234
 
"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
235
 
"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
236
 
####
237
 
"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
238
 
"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 
239
 
 
240
 
#### SunOS configs, assuming sparc for the gcc one.
241
 
#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
242
 
"sunos-gcc","gcc:-O3 -mv8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:${no_asm}::",
243
 
 
244
 
#### IRIX 5.x configs
245
 
# -mips2 flag is added by ./config when appropriate.
246
 
"irix-gcc","gcc:-O3 -DTERMIOS -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK DES_UNROLL DES_RISC2 DES_PTR BF_PTR:${no_asm}:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
247
 
"irix-cc", "cc:-O2 -use_readonly_const -DTERMIOS -DB_ENDIAN::(unknown):::BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC2 DES_UNROLL BF_PTR:${no_asm}:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
248
 
#### IRIX 6.x configs
249
 
# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
250
 
# './Configure irix-cc -o32' manually.
251
 
"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
252
 
"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
253
 
# N64 ABI builds.
254
 
"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
255
 
"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
256
 
 
257
 
#### Unified HP-UX ANSI C configs.
258
 
# Special notes:
259
 
# - Originally we were optimizing at +O4 level. It should be noted
260
 
#   that the only difference between +O3 and +O4 is global inter-
261
 
#   procedural analysis. As it has to be performed during the link
262
 
#   stage the compiler leaves behind certain pseudo-code in lib*.a
263
 
#   which might be release or even patch level specific. Generating
264
 
#   the machine code for and analyzing the *whole* program appears
265
 
#   to be *extremely* memory demanding while the performance gain is
266
 
#   actually questionable. The situation is intensified by the default
267
 
#   HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
268
 
#   which is way too low for +O4. In other words, doesn't +O3 make
269
 
#   more sense?
270
 
# - Keep in mind that the HP compiler by default generates code
271
 
#   suitable for execution on the host you're currently compiling at.
272
 
#   If the toolkit is ment to be used on various PA-RISC processors
273
 
#   consider './config +DAportable'.
274
 
# - +DD64 is chosen in favour of +DA2.0W because it's meant to be
275
 
#   compatible with *future* releases.
276
 
# - If you run ./Configure hpux-parisc-[g]cc manually don't forget to
277
 
#   pass -D_REENTRANT on HP-UX 10 and later.
278
 
# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
279
 
#   32-bit message digests. (For the moment of this writing) HP C
280
 
#   doesn't seem to "digest" too many local variables (they make "him"
281
 
#   chew forever:-). For more details look-up MD32_XARRAY comment in
282
 
#   crypto/sha/sha_lcl.h.
283
 
#                                       <appro@fy.chalmers.se>
284
 
#
285
 
# Since there is mention of this in shlib/hpux10-cc.sh
286
 
"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
287
 
"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
288
 
"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1::pa-risc2.o::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
289
 
"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
290
 
 
291
 
# More attempts at unified 10.X and 11.X targets for HP C compiler.
292
 
#
293
 
# Chris Ruemmler <ruemmler@cup.hp.com>
294
 
# Kevin Steves <ks@hp.se>
295
 
"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
296
 
"hpux-parisc1_0-cc","cc:+DAportable +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
297
 
"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2.o::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
298
 
"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
299
 
 
300
 
# HP/UX IA-64 targets
301
 
"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
302
 
# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with
303
 
# with debugging of the following config.
304
 
"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
305
 
# GCC builds...
306
 
"hpux-ia64-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
307
 
"hpux64-ia64-gcc","gcc:-mlp64 -O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-mlp64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 
308
 
 
309
 
# Legacy HPUX 9.X configs...
310
 
"hpux-cc",      "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
311
 
"hpux-gcc",     "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
312
 
 
313
 
#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
314
 
"MPE/iX-gcc",   "gcc:-D_ENDIAN -DBN_DIV2W -O3 -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB::(unknown):MPE:-L/SYSLOG/PUB -lsyslog -lsocket -lcurses:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:::",
315
 
 
316
 
# DEC Alpha OSF/1/Tru64 targets.
317
 
#
318
 
#       "What's in a name? That which we call a rose
319
 
#        By any other word would smell as sweet."
320
 
#
321
 
# - William Shakespeare, "Romeo & Juliet", Act II, scene II.
322
 
#
323
 
# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
324
 
#
325
 
"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${no_asm}:dlfcn:alpha-osf1-shared:::.so",
326
 
"osf1-alpha-cc",  "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${no_asm}:dlfcn:alpha-osf1-shared:::.so",
327
 
"tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${no_asm}:dlfcn:alpha-osf1-shared::-msym:.so",
328
 
 
329
 
# Debian GNU/* (various architectures)
330
 
"debian-alpha","gcc:-DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
331
 
"debian-alpha-ev4","gcc:-DTERMIO -O3 -Wa,--noexecstack -mcpu=ev4 -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
332
 
"debian-alpha-ev5","gcc:-DTERMIO -O3 -Wa,--noexecstack -mcpu=ev5 -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
333
 
"debian-arm","gcc:-DL_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
334
 
"debian-armeb","gcc:-DB_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
335
 
"debian-armel","gcc:-DL_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
336
 
"debian-armhf","gcc:-DL_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
337
 
#"debian-amd64","gcc:-DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -fomit-frame-pointer -g -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
338
 
"debian-amd64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm_linux}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
339
 
"debian-avr32", "gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -fomit-frame-pointer -g -Wall::-D_REENTRANT::-ldl:BN_LLONG_BF_PTR::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
340
 
"debian-kfreebsd-amd64","gcc:-m64 -DL_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
341
 
#"debian-freebsd-alpha","gcc:-DTERMIOS -O -Wa,--noexecstack -fomit-frame-pointer -g -Wall::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
342
 
"debian-kfreebsd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
343
 
"debian-hppa","gcc:-DB_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
344
 
"debian-hurd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -mtune=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
345
 
"debian-ia64","gcc:-DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
346
 
#"debian-i386","gcc:-DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -fomit-frame-pointer -m486 -g -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC",
347
 
"debian-i386","gcc:-DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
348
 
"debian-i386-i486","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i486 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
349
 
"debian-i386-i586","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i586 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
350
 
"debian-i386-i686/cmov","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i686 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
351
 
"debian-m68k","gcc:-DB_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
352
 
"debian-mips",   "gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
353
 
"debian-mipsel",   "gcc:-DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
354
 
"debian-netbsd-i386",   "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
355
 
"debian-netbsd-m68k",   "gcc:-DB_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -Wall::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
356
 
"debian-netbsd-sparc",  "gcc:-DB_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -mv8 -Wall::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
357
 
"debian-openbsd-alpha","gcc:-DTERMIOS -O3 -Wa,--noexecstack -g::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2::::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
358
 
"debian-openbsd-i386",  "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
359
 
"debian-openbsd-mips","gcc:-O2 -Wa,--noexecstack -g -DL_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR:::::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
360
 
"debian-powerpc","gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_UNROLL DES_RISC2 DES_PTR MD2_CHAR RC4_INDEX::linux_ppc32.o::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
361
 
"debian-powerpcspe","gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_UNROLL DES_RISC2 DES_PTR MD2_CHAR RC4_INDEX::linux_ppc32.o::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
362
 
"debian-ppc64","gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc64.o::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
363
 
"debian-s390","gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 
364
 
"debian-sh3",   "gcc:-DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
365
 
"debian-sh4",   "gcc:-DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
366
 
"debian-sh3eb",   "gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
367
 
"debian-sh4eb",   "gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
368
 
"debian-m32r","gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
369
 
"debian-sparc","gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
370
 
"debian-sparc-v8","gcc:-DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -mcpu=v8 -g -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
371
 
"debian-sparc-v9","gcc:-DB_ENDIAN -DTERMIO -O3 -mcpu=v9 -Wa,--noexecstack -Wa,-Av8plus -g -Wall -DULTRASPARC -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
372
 
"debian-sparc64","gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall -DULTRASPARC -DBN_DIV2W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
373
 
 
374
 
####
375
 
#### Variety of LINUX:-)
376
 
####
377
 
# *-generic* is endian-neutral target, but ./config is free to
378
 
# throw in -D[BL]_ENDIAN, whichever appropriate...
379
 
"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
380
 
"linux-ppc",    "gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc32.o::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
381
 
#### IA-32 targets...
382
 
"linux-ia32-icc",       "icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
383
 
"linux-elf",    "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
384
 
"linux-aout",   "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
385
 
####
386
 
"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
387
 
"linux-ppc64",  "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc64.o::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
388
 
"linux-ia64",   "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
389
 
"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
390
 
"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
391
 
"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
392
 
#### SPARC Linux setups
393
 
# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
394
 
# assisted with debugging of following two configs.
395
 
"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
396
 
# it's a real mess with -mcpu=ultrasparc option under Linux, but
397
 
# -Wa,-Av8plus should do the trick no matter what.
398
 
"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
399
 
# GCC 3.1 is a requirement
400
 
"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
401
 
#### Alpha Linux with GNU C and Compaq C setups
402
 
# Special notes:
403
 
# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
404
 
#   ought to run './Configure linux-alpha+bwx-gcc' manually, do
405
 
#   complement the command line with -mcpu=ev56, -mcpu=ev6 or whatever
406
 
#   which is appropriate.
407
 
# - If you use ccc keep in mind that -fast implies -arch host and the
408
 
#   compiler is free to issue instructions which gonna make elder CPU
409
 
#   choke. If you wish to build "blended" toolkit, add -arch generic
410
 
#   *after* -fast and invoke './Configure linux-alpha-ccc' manually.
411
 
#
412
 
#                                       <appro@fy.chalmers.se>
413
 
#
414
 
"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
415
 
"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
416
 
"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
417
 
"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
418
 
 
419
 
#### *BSD [do see comment about ${BSDthreads} above!]
420
 
"BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
421
 
"BSD-x86",      "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
422
 
"BSD-x86-elf",  "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
423
 
"debug-BSD-x86-elf",    "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
424
 
"BSD-sparcv8",  "gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
425
 
 
426
 
"BSD-generic64","gcc:-DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
427
 
# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
428
 
# simply *happens* to work around a compiler bug in gcc 3.3.3,
429
 
# triggered by RIPEMD160 code.
430
 
"BSD-sparc64",  "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
431
 
"BSD-ia64",     "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
432
 
"BSD-x86_64",   "gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
433
 
 
434
 
"bsdi-elf-gcc",     "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
435
 
 
436
 
"nextstep",     "cc:-O -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
437
 
"nextstep3.3",  "cc:-O3 -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
438
 
 
439
 
# NCR MP-RAS UNIX ver 02.03.01
440
 
"ncr-scde","cc:-O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw::(unknown)::-lsocket -lnsl -lc89:${x86_gcc_des} ${x86_gcc_opts}:::",
441
 
 
442
 
# QNX
443
 
"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
444
 
"QNX6",       "gcc:-DTERMIOS::::-lsocket::${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
445
 
"QNX6-i386",  "gcc:-DL_ENDIAN -DTERMIOS -O2 -Wall::::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
446
 
 
447
 
#### SCO/Caldera targets.
448
 
#
449
 
# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
450
 
# Now we only have blended unixware-* as it's the only one used by ./config.
451
 
# If you want to optimize for particular microarchitecture, bypass ./config
452
 
# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
453
 
# Note that not all targets include assembler support. Mostly because of
454
 
# lack of motivation to support out-of-date platforms with out-of-date
455
 
# compiler drivers and assemblers. Tim Rice <tim@multitalents.net> has
456
 
# patiently assisted to debug most of it.
457
 
#
458
 
# UnixWare 2.0x fails destest with -O.
459
 
"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
460
 
"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
461
 
"unixware-7","cc:-O -DFILIO_H -Kalloca::-Kthread::-lsocket -lnsl:BN_LLONG MD2_CHAR RC4_INDEX ${x86_gcc_des}:${x86_elf_asm}:dlfcn:svr5-shared:-Kpic::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
462
 
"unixware-7-gcc","gcc:-DL_ENDIAN -DFILIO_H -O3 -fomit-frame-pointer -march=pentium -Wall::-D_REENTRANT::-lsocket -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:gnu-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
463
 
# SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the SCO cc.
464
 
"sco5-cc",  "cc:-belf::(unknown)::-lsocket -lnsl:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:svr3-shared:-Kpic::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
465
 
"sco5-gcc",  "gcc:-O3 -fomit-frame-pointer::(unknown)::-lsocket -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:svr3-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
466
 
 
467
 
#### IBM's AIX.
468
 
"aix3-cc",  "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
469
 
"aix-gcc",  "gcc:-O -DB_ENDIAN::-pthread:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
470
 
"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-maix64 -shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
471
 
# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
472
 
# at build time. $OBJECT_MODE is respected at ./config stage!
473
 
"aix-cc",   "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
474
 
"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
475
 
 
476
 
#
477
 
# Cray T90 and similar (SDSC)
478
 
# It's Big-endian, but the algorithms work properly when B_ENDIAN is NOT
479
 
# defined.  The T90 ints and longs are 8 bytes long, and apparently the
480
 
# B_ENDIAN code assumes 4 byte ints.  Fortunately, the non-B_ENDIAN and
481
 
# non L_ENDIAN code aligns the bytes in each word correctly.
482
 
#
483
 
# The BIT_FIELD_LIMITS define is to avoid two fatal compiler errors:
484
 
#'Taking the address of a bit field is not allowed. '
485
 
#'An expression with bit field exists as the operand of "sizeof" '
486
 
# (written by Wayne Schroeder <schroede@SDSC.EDU>)
487
 
#
488
 
# j90 is considered the base machine type for unicos machines,
489
 
# so this configuration is now called "cray-j90" ...
490
 
"cray-j90", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::",
491
 
 
492
 
#
493
 
# Cray T3E (Research Center Juelich, beckman@acl.lanl.gov)
494
 
#
495
 
# The BIT_FIELD_LIMITS define was written for the C90 (it seems).  I added
496
 
# another use.  Basically, the problem is that the T3E uses some bit fields
497
 
# for some st_addr stuff, and then sizeof and address-of fails
498
 
# I could not use the ams/alpha.o option because the Cray assembler, 'cam'
499
 
# did not like it.
500
 
"cray-t3e", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:::",
501
 
 
502
 
# DGUX, 88100.
503
 
"dgux-R3-gcc",  "gcc:-O3 -fomit-frame-pointer::(unknown):::RC4_INDEX DES_UNROLL:::",
504
 
"dgux-R4-gcc",  "gcc:-O3 -fomit-frame-pointer::(unknown)::-lnsl -lsocket:RC4_INDEX DES_UNROLL:::",
505
 
"dgux-R4-x86-gcc",      "gcc:-O3 -fomit-frame-pointer -DL_ENDIAN::(unknown)::-lnsl -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
506
 
 
507
 
# Sinix/ReliantUNIX RM400
508
 
# NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g  */
509
 
"ReliantUNIX","cc:-KPIC -g -DTERMIOS -DB_ENDIAN::-Kthread:SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:BN_LLONG DES_PTR DES_RISC2 DES_UNROLL BF_PTR:${no_asm}:dlfcn:reliantunix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
510
 
"SINIX","cc:-O::(unknown):SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:RC4_INDEX RC4_CHAR:::",
511
 
"SINIX-N","/usr/ucb/cc:-O2 -misaligned::(unknown)::-lucb:RC4_INDEX RC4_CHAR:::",
512
 
 
513
 
# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
514
 
"BS2000-OSD","c89:-O -XLLML -XLLMK -XL -DB_ENDIAN -DTERMIOS -DCHARSET_EBCDIC::(unknown)::-lsocket -lnsl:THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
515
 
 
516
 
# OS/390 Unix an EBCDIC-based Unix system on IBM mainframe
517
 
# You need to compile using the c89.sh wrapper in the tools directory, because the
518
 
# IBM compiler does not like the -L switch after any object modules.
519
 
#
520
 
"OS390-Unix","c89.sh:-O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H  -D_ALL_SOURCE::(unknown):::THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
521
 
 
522
 
# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
523
 
"VC-WIN64I","cl::::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32",
524
 
"VC-WIN64A","cl::::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32",
525
 
 
526
 
# Visual C targets
527
 
"VC-NT","cl::::WINNT::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
528
 
"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
529
 
"VC-WIN32","cl::::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
530
 
 
531
 
# Borland C++ 4.5
532
 
"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
533
 
 
534
 
# MinGW
535
 
"mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a",
536
 
 
537
 
# UWIN 
538
 
"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
539
 
 
540
 
# Cygwin
541
 
"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
542
 
"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_coff_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
543
 
"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
544
 
 
545
 
# NetWare from David Ward (dsward@novell.com)
546
 
# requires either MetroWerks NLM development tools, or gcc / nlmconv
547
 
# NetWare defaults socket bio to WinSock sockets. However,
548
 
# the builds can be configured to use BSD sockets instead.
549
 
# netware-clib => legacy CLib c-runtime support
550
 
"netware-clib", "mwccnlm::::::${x86_gcc_opts}::",
551
 
"netware-clib-bsdsock", "mwccnlm::::::${x86_gcc_opts}::",
552
 
"netware-clib-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -I/ndk/ws295sdk/include -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYSNAME_NETWARE -O2 -Wall:::::${x86_gcc_opts}::",
553
 
"netware-clib-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -DNETWARE_BSDSOCK -DNETDB_USE_INTERNET -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYSNAME_NETWARE -O2 -Wall:::::${x86_gcc_opts}::",
554
 
# netware-libc => LibC/NKS support
555
 
"netware-libc", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
556
 
"netware-libc-bsdsock", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
557
 
"netware-libc-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
558
 
"netware-libc-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
559
 
 
560
 
# DJGPP
561
 
"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:",
562
 
 
563
 
# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
564
 
"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
565
 
"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::BN_LLONG::::",
566
 
# K&R C is no longer supported; you need gcc on old Ultrix installations
567
 
##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::",
568
 
 
569
 
##### MacOS X (a.k.a. Rhapsody or Darwin) setup
570
 
"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::",
571
 
"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
572
 
"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc64.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
573
 
"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
574
 
"debug-darwin-i386-cc","cc:-arch i386 -g3 -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
575
 
"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -fomit-frame-pointer -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
576
 
"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
577
 
 
578
 
##### A/UX
579
 
"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
580
 
 
581
 
##### Sony NEWS-OS 4.x
582
 
"newsos4-gcc","gcc:-O -DB_ENDIAN::(unknown):NEWS4:-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::",
583
 
 
584
 
##### GNU Hurd
585
 
"hurd-x86",  "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC",
586
 
 
587
 
##### OS/2 EMX
588
 
"OS2-EMX", "gcc::::::::",
589
 
 
590
 
##### VxWorks for various targets
591
 
"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
592
 
"vxworks-ppc750","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG):::VXWORKS:-r:::::",
593
 
"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
594
 
"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
595
 
"vxworks-mipsle","ccmips:-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -DL_ENDIAN -EL -Wl,-EL -mips2 -mno-branch-likely -G 0 -fno-builtin -msoft-float -DCPU=MIPS32 -DMIPSEL -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r::${no_asm}::::::ranlibmips:",
596
 
 
597
 
##### Compaq Non-Stop Kernel (Tandem)
598
 
"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
599
 
 
600
 
);
601
 
 
602
 
my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
603
 
                    VC-NT VC-CE VC-WIN32
604
 
                    BC-32 OS2-EMX
605
 
                    netware-clib netware-clib-bsdsock
606
 
                    netware-libc netware-libc-bsdsock);
607
 
 
608
 
my $idx = 0;
609
 
my $idx_cc = $idx++;
610
 
my $idx_cflags = $idx++;
611
 
my $idx_unistd = $idx++;
612
 
my $idx_thread_cflag = $idx++;
613
 
my $idx_sys_id = $idx++;
614
 
my $idx_lflags = $idx++;
615
 
my $idx_bn_ops = $idx++;
616
 
my $idx_cpuid_obj = $idx++;
617
 
my $idx_bn_obj = $idx++;
618
 
my $idx_des_obj = $idx++;
619
 
my $idx_aes_obj = $idx++;
620
 
my $idx_bf_obj = $idx++;
621
 
my $idx_md5_obj = $idx++;
622
 
my $idx_sha1_obj = $idx++;
623
 
my $idx_cast_obj = $idx++;
624
 
my $idx_rc4_obj = $idx++;
625
 
my $idx_rmd160_obj = $idx++;
626
 
my $idx_rc5_obj = $idx++;
627
 
my $idx_dso_scheme = $idx++;
628
 
my $idx_shared_target = $idx++;
629
 
my $idx_shared_cflag = $idx++;
630
 
my $idx_shared_ldflag = $idx++;
631
 
my $idx_shared_extension = $idx++;
632
 
my $idx_ranlib = $idx++;
633
 
my $idx_arflags = $idx++;
634
 
 
635
 
my $prefix="";
636
 
my $libdir="";
637
 
my $openssldir="";
638
 
my $exe_ext="";
639
 
my $install_prefix= "$ENV{'INSTALL_PREFIX'}";
640
 
my $cross_compile_prefix="";
641
 
my $fipslibdir="/usr/local/ssl/fips-1.0/lib/";
642
 
my $nofipscanistercheck=0;
643
 
my $fipsdso=0;
644
 
my $fipscanisterinternal="n";
645
 
my $baseaddr="0xFB00000";
646
 
my $no_threads=0;
647
 
my $threads=0;
648
 
my $no_shared=0; # but "no-shared" is default
649
 
my $zlib=1;      # but "no-zlib" is default
650
 
my $no_krb5=0;   # but "no-krb5" is implied unless "--with-krb5-..." is used
651
 
my $no_rfc3779=1; # but "no-rfc3779" is default
652
 
my $montasm=1;   # but "no-montasm" is default
653
 
my $no_asm=0;
654
 
my $no_dso=0;
655
 
my $no_gmp=0;
656
 
my @skip=();
657
 
my $Makefile="Makefile";
658
 
my $des_locl="crypto/des/des_locl.h";
659
 
my $des ="crypto/des/des.h";
660
 
my $bn  ="crypto/bn/bn.h";
661
 
my $md2 ="crypto/md2/md2.h";
662
 
my $rc4 ="crypto/rc4/rc4.h";
663
 
my $rc4_locl="crypto/rc4/rc4_locl.h";
664
 
my $idea        ="crypto/idea/idea.h";
665
 
my $rc2 ="crypto/rc2/rc2.h";
666
 
my $bf  ="crypto/bf/bf_locl.h";
667
 
my $bn_asm      ="bn_asm.o";
668
 
my $des_enc="des_enc.o fcrypt_b.o";
669
 
my $fips_des_enc="fips_des_enc.o";
670
 
my $aes_enc="aes_core.o aes_cbc.o";
671
 
my $bf_enc      ="bf_enc.o";
672
 
my $cast_enc="c_enc.o";
673
 
my $rc4_enc="rc4_enc.o rc4_skey.o";
674
 
my $rc5_enc="rc5_enc.o";
675
 
my $md5_obj="";
676
 
my $sha1_obj="";
677
 
my $rmd160_obj="";
678
 
my $processor="";
679
 
my $default_ranlib;
680
 
my $perl;
681
 
my $fips=0;
682
 
 
683
 
 
684
 
# All of the following is disabled by default (RC5 was enabled before 0.9.8):
685
 
 
686
 
my %disabled = ( # "what"         => "comment" [or special keyword "experimental"]
687
 
                 "camellia"       => "default",
688
 
                 "capieng"        => "default",
689
 
                 "cms"            => "default",
690
 
                 "gmp"            => "default",
691
 
                 "jpake"          => "experimental",
692
 
                 "mdc2"           => "default",
693
 
                 "montasm"        => "default", # explicit option in 0.9.8 only (implicitly enabled in 0.9.9)
694
 
                 "rc5"            => "default",
695
 
                 "rfc3779"        => "default",
696
 
                 "seed"           => "default",
697
 
                 "shared"         => "default",
698
 
                 "zlib"           => "default",
699
 
                 "zlib-dynamic"   => "default"
700
 
               );
701
 
my @experimental = ();
702
 
 
703
 
# This is what $depflags will look like with the above defaults
704
 
# (we need this to see if we should advise the user to run "make depend"):
705
 
my $default_depflags = " -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED";
706
 
 
707
 
 
708
 
# Explicit "no-..." options will be collected in %disabled along with the defaults.
709
 
# To remove something from %disabled, use "enable-foo" (unless it's experimental).
710
 
# For symmetry, "disable-foo" is a synonym for "no-foo".
711
 
 
712
 
# For features called "experimental" here, a more explicit "experimental-foo" is needed to enable.
713
 
# We will collect such requests in @experimental.
714
 
# To avoid accidental use of experimental features, applications will have to use -DOPENSSL_EXPERIMENTAL_FOO.
715
 
 
716
 
 
717
 
my $no_sse2=0;
718
 
 
719
 
&usage if ($#ARGV < 0);
720
 
 
721
 
my $flags;
722
 
my $depflags;
723
 
my $openssl_experimental_defines;
724
 
my $openssl_algorithm_defines;
725
 
my $openssl_thread_defines;
726
 
my $openssl_sys_defines="";
727
 
my $openssl_other_defines;
728
 
my $libs;
729
 
my $libkrb5="";
730
 
my $target;
731
 
my $options;
732
 
my $symlink;
733
 
my $make_depend=0;
734
 
my %withargs=();
735
 
 
736
 
my @argvcopy=@ARGV;
737
 
my $argvstring="";
738
 
my $argv_unprocessed=1;
739
 
 
740
 
while($argv_unprocessed)
741
 
        {
742
 
        $flags="";
743
 
        $depflags="";
744
 
        $openssl_experimental_defines="";
745
 
        $openssl_algorithm_defines="";
746
 
        $openssl_thread_defines="";
747
 
        $openssl_sys_defines="";
748
 
        $openssl_other_defines="";
749
 
        $libs="";
750
 
        $target="";
751
 
        $options="";
752
 
        $symlink=1;
753
 
 
754
 
        $argv_unprocessed=0;
755
 
        $argvstring=join(' ',@argvcopy);
756
 
 
757
 
PROCESS_ARGS:
758
 
        foreach (@argvcopy)
759
 
                {
760
 
                s /^-no-/no-/; # some people just can't read the instructions
761
 
 
762
 
                # rewrite some options in "enable-..." form
763
 
                s /^-?-?shared$/enable-shared/;
764
 
                s /^threads$/enable-threads/;
765
 
                s /^zlib$/enable-zlib/;
766
 
                s /^zlib-dynamic$/enable-zlib-dynamic/;
767
 
 
768
 
                if (/^no-(.+)$/ || /^disable-(.+)$/)
769
 
                        {
770
 
                        if (!($disabled{$1} eq "experimental"))
771
 
                                {
772
 
                                if ($1 eq "ssl")
773
 
                                        {
774
 
                                        $disabled{"ssl2"} = "option(ssl)";
775
 
                                        $disabled{"ssl3"} = "option(ssl)";
776
 
                                        }
777
 
                                elsif ($1 eq "tls")
778
 
                                        {
779
 
                                        $disabled{"tls1"} = "option(tls)"
780
 
                                        }
781
 
                                else
782
 
                                        {
783
 
                                        $disabled{$1} = "option";
784
 
                                        }
785
 
                                }
786
 
                        }                       
787
 
                elsif (/^enable-(.+)$/ || /^experimental-(.+)$/)
788
 
                        {
789
 
                        my $algo = $1;
790
 
                        if ($disabled{$algo} eq "experimental")
791
 
                                {
792
 
                                die "You are requesting an experimental feature; please say 'experimental-$algo' if you are sure\n"
793
 
                                        unless (/^experimental-/);
794
 
                                push @experimental, $algo;
795
 
                                }
796
 
                        delete $disabled{$algo};
797
 
 
798
 
                        $threads = 1 if ($algo eq "threads");
799
 
                        }
800
 
                elsif (/^--test-sanity$/)
801
 
                        {
802
 
                        exit(&test_sanity());
803
 
                        }
804
 
                elsif (/^--strict-warnings/)
805
 
                        {
806
 
                        $strict_warnings = 1;
807
 
                        }
808
 
                elsif (/^reconfigure/ || /^reconf/)
809
 
                        {
810
 
                        if (open(IN,"<$Makefile"))
811
 
                                {
812
 
                                while (<IN>)
813
 
                                        {
814
 
                                        chomp;
815
 
                                        if (/^CONFIGURE_ARGS=(.*)/)
816
 
                                                {
817
 
                                                $argvstring=$1;
818
 
                                                @argvcopy=split(' ',$argvstring);
819
 
                                                die "Incorrect data to reconfigure, please do a normal configuration\n"
820
 
                                                        if (grep(/^reconf/,@argvcopy));
821
 
                                                print "Reconfiguring with: $argvstring\n";
822
 
                                                $argv_unprocessed=1;
823
 
                                                close(IN);
824
 
                                                last PROCESS_ARGS;
825
 
                                                }
826
 
                                        }
827
 
                                close(IN);
828
 
                                }
829
 
                        die "Insufficient data to reconfigure, please do a normal configuration\n";
830
 
                        }
831
 
                elsif (/^386$/)
832
 
                        { $processor=386; }
833
 
                elsif (/^fips$/)
834
 
                        {
835
 
                        $fips=1;
836
 
                        }
837
 
                elsif (/^rsaref$/)
838
 
                        {
839
 
                        # No RSAref support any more since it's not needed.
840
 
                        # The check for the option is there so scripts aren't
841
 
                        # broken
842
 
                        }
843
 
                elsif (/^nofipscanistercheck$/)
844
 
                        {
845
 
                        $fips = 1;
846
 
                        $nofipscanistercheck = 1;
847
 
                        }
848
 
                elsif (/^fipscanisterbuild$/)
849
 
                        {
850
 
                        $fips = 1;
851
 
                        $nofipscanistercheck = 1;
852
 
                        $fipslibdir="";
853
 
                        $fipscanisterinternal="y";
854
 
                        }
855
 
                elsif (/^fipsdso$/)
856
 
                        {
857
 
                        $fips = 1;
858
 
                        $nofipscanistercheck = 1;
859
 
                        $fipslibdir="";
860
 
                        $fipscanisterinternal="y";
861
 
                        $fipsdso = 1;
862
 
                        }
863
 
                elsif (/^[-+]/)
864
 
                        {
865
 
                        if (/^-[lL](.*)$/)
866
 
                                {
867
 
                                $libs.=$_." ";
868
 
                                }
869
 
                        elsif (/^-[^-]/ or /^\+/)
870
 
                                {
871
 
                                $flags.=$_." ";
872
 
                                }
873
 
                        elsif (/^--prefix=(.*)$/)
874
 
                                {
875
 
                                $prefix=$1;
876
 
                                }
877
 
                        elsif (/^--libdir=(.*)$/)
878
 
                                {
879
 
                                $libdir=$1;
880
 
                                }
881
 
                        elsif (/^--openssldir=(.*)$/)
882
 
                                {
883
 
                                $openssldir=$1;
884
 
                                }
885
 
                        elsif (/^--install.prefix=(.*)$/)
886
 
                                {
887
 
                                $install_prefix=$1;
888
 
                                }
889
 
                        elsif (/^--with-krb5-(dir|lib|include|flavor)=(.*)$/)
890
 
                                {
891
 
                                $withargs{"krb5-".$1}=$2;
892
 
                                }
893
 
                        elsif (/^--with-zlib-lib=(.*)$/)
894
 
                                {
895
 
                                $withargs{"zlib-lib"}=$1;
896
 
                                }
897
 
                        elsif (/^--with-zlib-include=(.*)$/)
898
 
                                {
899
 
                                $withargs{"zlib-include"}="-I$1";
900
 
                                }
901
 
                        elsif (/^--with-fipslibdir=(.*)$/)
902
 
                                {
903
 
                                $fipslibdir="$1/";
904
 
                                }
905
 
                        elsif (/^--with-baseaddr=(.*)$/)
906
 
                                {
907
 
                                $baseaddr="$1";
908
 
                                }
909
 
                        else
910
 
                                {
911
 
                                print STDERR $usage;
912
 
                                exit(1);
913
 
                                }
914
 
                        }
915
 
                elsif ($_ =~ /^([^:]+):(.+)$/)
916
 
                        {
917
 
                        eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string
918
 
                        $target=$1;
919
 
                        }
920
 
                else
921
 
                        {
922
 
                        die "target already defined - $target (offending arg: $_)\n" if ($target ne "");
923
 
                        $target=$_;
924
 
                        }
925
 
 
926
 
                unless ($_ eq $target || /^no-/ || /^disable-/)
927
 
                        {
928
 
                        # "no-..." follows later after implied disactivations
929
 
                        # have been derived.  (Don't take this too seroiusly,
930
 
                        # we really only write OPTIONS to the Makefile out of
931
 
                        # nostalgia.)
932
 
 
933
 
                        if ($options eq "")
934
 
                                { $options = $_; }
935
 
                        else
936
 
                                { $options .= " ".$_; }
937
 
                        }
938
 
                }
939
 
        }
940
 
 
941
 
 
942
 
 
943
 
if ($processor eq "386")
944
 
        {
945
 
        $disabled{"sse2"} = "forced";
946
 
        }
947
 
 
948
 
if (!defined($withargs{"krb5-flavor"}) || $withargs{"krb5-flavor"} eq "")
949
 
        {
950
 
        $disabled{"krb5"} = "krb5-flavor not specified";
951
 
        }
952
 
 
953
 
if (!defined($disabled{"zlib-dynamic"}))
954
 
        {
955
 
        # "zlib-dynamic" was specifically enabled, so enable "zlib"
956
 
        delete $disabled{"zlib"};
957
 
        }
958
 
 
959
 
if (defined($disabled{"rijndael"}))
960
 
        {
961
 
        $disabled{"aes"} = "forced";
962
 
        }
963
 
if (defined($disabled{"des"}))
964
 
        {
965
 
        $disabled{"mdc2"} = "forced";
966
 
        }
967
 
if (defined($disabled{"ec"}))
968
 
        {
969
 
        $disabled{"ecdsa"} = "forced";
970
 
        $disabled{"ecdh"} = "forced";
971
 
        }
972
 
 
973
 
# SSL 2.0 requires MD5 and RSA
974
 
if (defined($disabled{"md5"}) || defined($disabled{"rsa"}))
975
 
        {
976
 
        $disabled{"ssl2"} = "forced";
977
 
        }
978
 
 
979
 
# SSL 3.0 and TLS requires MD5 and SHA and either RSA or DSA+DH
980
 
if (defined($disabled{"md5"}) || defined($disabled{"sha"})
981
 
    || (defined($disabled{"rsa"})
982
 
        && (defined($disabled{"dsa"}) || defined($disabled{"dh"}))))
983
 
        {
984
 
        $disabled{"ssl3"} = "forced";
985
 
        $disabled{"tls1"} = "forced";
986
 
        }
987
 
 
988
 
if (defined($disabled{"tls1"}))
989
 
        {
990
 
        $disabled{"tlsext"} = "forced";
991
 
        }
992
 
 
993
 
if ($target eq "TABLE") {
994
 
        foreach $target (sort keys %table) {
995
 
                print_table_entry($target);
996
 
        }
997
 
        exit 0;
998
 
}
999
 
 
1000
 
if ($target eq "LIST") {
1001
 
        foreach (sort keys %table) {
1002
 
                print;
1003
 
                print "\n";
1004
 
        }
1005
 
        exit 0;
1006
 
}
1007
 
 
1008
 
if ($target =~ m/^CygWin32(-.*)$/) {
1009
 
        $target = "Cygwin".$1;
1010
 
}
1011
 
 
1012
 
print "Configuring for $target\n";
1013
 
 
1014
 
&usage if (!defined($table{$target}));
1015
 
 
1016
 
my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1017
 
my $cc = $fields[$idx_cc];
1018
 
# Allow environment CC to override compiler...
1019
 
if($ENV{CC}) {
1020
 
    $cc = $ENV{CC};
1021
 
}
1022
 
my $cflags = $fields[$idx_cflags];
1023
 
my $unistd = $fields[$idx_unistd];
1024
 
my $thread_cflag = $fields[$idx_thread_cflag];
1025
 
my $sys_id = $fields[$idx_sys_id];
1026
 
my $lflags = $fields[$idx_lflags];
1027
 
my $bn_ops = $fields[$idx_bn_ops];
1028
 
my $cpuid_obj = $fields[$idx_cpuid_obj];
1029
 
my $bn_obj = $fields[$idx_bn_obj];
1030
 
my $des_obj = $fields[$idx_des_obj];
1031
 
my $aes_obj = $fields[$idx_aes_obj];
1032
 
my $bf_obj = $fields[$idx_bf_obj];
1033
 
my $md5_obj = $fields[$idx_md5_obj];
1034
 
my $sha1_obj = $fields[$idx_sha1_obj];
1035
 
my $cast_obj = $fields[$idx_cast_obj];
1036
 
my $rc4_obj = $fields[$idx_rc4_obj];
1037
 
my $rmd160_obj = $fields[$idx_rmd160_obj];
1038
 
my $rc5_obj = $fields[$idx_rc5_obj];
1039
 
my $dso_scheme = $fields[$idx_dso_scheme];
1040
 
my $shared_target = $fields[$idx_shared_target];
1041
 
my $shared_cflag = $fields[$idx_shared_cflag];
1042
 
my $shared_ldflag = $fields[$idx_shared_ldflag];
1043
 
my $shared_extension = $fields[$idx_shared_extension];
1044
 
my $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib];
1045
 
my $ar = $ENV{'AR'} || "ar";
1046
 
my $arflags = $fields[$idx_arflags];
1047
 
 
1048
 
if ($fips)
1049
 
        {
1050
 
        delete $disabled{"shared"} if ($disabled{"shared"} eq "default");
1051
 
        $disabled{"asm"}="forced"
1052
 
                if ($target !~ "VC\-.*" &&
1053
 
                    "$cpuid_obj:$bn_obj:$aes_obj:$des_obj:$sha1_obj" eq "::::");
1054
 
        }
1055
 
 
1056
 
foreach (sort @experimental)
1057
 
        {
1058
 
        my $ALGO;
1059
 
        ($ALGO = $_) =~ tr/[a-z]/[A-Z]/;
1060
 
 
1061
 
        # opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined
1062
 
        $openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n";
1063
 
        $cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO";
1064
 
        }
1065
 
 
1066
 
foreach (sort (keys %disabled))
1067
 
        {
1068
 
        $options .= " no-$_";
1069
 
 
1070
 
        printf "    no-%-12s %-10s", $_, "[$disabled{$_}]";
1071
 
 
1072
 
        if (/^dso$/)
1073
 
                { $no_dso = 1; }
1074
 
        elsif (/^threads$/)
1075
 
                { $no_threads = 1; }
1076
 
        elsif (/^shared$/)
1077
 
                { $no_shared = 1; }
1078
 
        elsif (/^zlib$/)
1079
 
                { $zlib = 0; }
1080
 
        elsif (/^montasm$/)
1081
 
                { $montasm = 0; }
1082
 
        elsif (/^static-engine$/)
1083
 
                { }
1084
 
        elsif (/^zlib-dynamic$/)
1085
 
                { }
1086
 
        elsif (/^symlinks$/)
1087
 
                { $symlink = 0; }
1088
 
        elsif (/^sse2$/)
1089
 
                { $no_sse2 = 1; }
1090
 
        else
1091
 
                {
1092
 
                my ($ALGO, $algo);
1093
 
                ($ALGO = $algo = $_) =~ tr/[a-z]/[A-Z]/;
1094
 
 
1095
 
                if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/)
1096
 
                        {
1097
 
                        $openssl_other_defines .= "#define OPENSSL_NO_$ALGO\n";
1098
 
                        print " OPENSSL_NO_$ALGO";
1099
 
                
1100
 
                        if (/^err$/)    { $flags .= "-DOPENSSL_NO_ERR "; }
1101
 
                        elsif (/^asm$/) { $no_asm = 1; }
1102
 
                        }
1103
 
                else
1104
 
                        {
1105
 
                        $openssl_algorithm_defines .= "#define OPENSSL_NO_$ALGO\n";
1106
 
                        print " OPENSSL_NO_$ALGO";
1107
 
 
1108
 
                        if (/^krb5$/)
1109
 
                                { $no_krb5 = 1; }
1110
 
                        else
1111
 
                                {
1112
 
                                push @skip, $algo;
1113
 
                                print " (skip dir)";
1114
 
 
1115
 
                                $depflags .= " -DOPENSSL_NO_$ALGO";
1116
 
                                }
1117
 
                        }
1118
 
                }
1119
 
 
1120
 
        print "\n";
1121
 
        }
1122
 
 
1123
 
my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
1124
 
 
1125
 
$IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin" && !is_msys());
1126
 
 
1127
 
$no_shared = 0 if ($fipsdso && !$IsMK1MF);
1128
 
 
1129
 
$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
1130
 
$exe_ext=".nlm" if ($target =~ /netware/);
1131
 
$exe_ext=".pm"  if ($target =~ /vos/);
1132
 
if ($openssldir eq "" and $prefix eq "")
1133
 
        {
1134
 
        if ($fips)
1135
 
                {
1136
 
                $openssldir="/usr/local/ssl/fips";
1137
 
                }
1138
 
        else
1139
 
                {
1140
 
                $openssldir="/usr/local/ssl";
1141
 
                }
1142
 
        }
1143
 
$prefix=$openssldir if $prefix eq "";
1144
 
 
1145
 
$libdir="lib" if $libdir eq "";
1146
 
 
1147
 
$default_ranlib= &which("ranlib") or $default_ranlib="true";
1148
 
$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
1149
 
  or $perl="perl";
1150
 
my $make = $ENV{'MAKE'} || "make";
1151
 
 
1152
 
$cross_compile_prefix=$ENV{'CROSS_COMPILE'} if $cross_compile_prefix eq "";
1153
 
 
1154
 
chop $openssldir if $openssldir =~ /\/$/;
1155
 
chop $prefix if $prefix =~ /.\/$/;
1156
 
 
1157
 
$openssldir=$prefix . "/ssl" if $openssldir eq "";
1158
 
$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
1159
 
 
1160
 
 
1161
 
print "IsMK1MF=$IsMK1MF\n";
1162
 
 
1163
 
# '%' in $lflags is used to split flags to "pre-" and post-flags
1164
 
my ($prelflags,$postlflags)=split('%',$lflags);
1165
 
if (defined($postlflags))       { $lflags=$postlflags;  }
1166
 
else                            { $lflags=$prelflags; undef $prelflags; }
1167
 
 
1168
 
my $no_shared_warn=0;
1169
 
my $no_user_cflags=0;
1170
 
 
1171
 
if ($flags ne "")       { $cflags="$flags$cflags"; }
1172
 
else                    { $no_user_cflags=1;       }
1173
 
 
1174
 
# Kerberos settings.  The flavor must be provided from outside, either through
1175
 
# the script "config" or manually.
1176
 
if (!$no_krb5)
1177
 
        {
1178
 
        my ($lresolv, $lpath, $lext);
1179
 
        if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/)
1180
 
                {
1181
 
                die "Sorry, Heimdal is currently not supported\n";
1182
 
                }
1183
 
        ##### HACK to force use of Heimdal.
1184
 
        ##### WARNING: Since we don't really have adequate support for Heimdal,
1185
 
        #####          using this will break the build.  You'll have to make
1186
 
        #####          changes to the source, and if you do, please send
1187
 
        #####          patches to openssl-dev@openssl.org
1188
 
        if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/)
1189
 
                {
1190
 
                warn "Heimdal isn't really supported.  Your build WILL break\n";
1191
 
                warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n";
1192
 
                $withargs{"krb5-dir"} = "/usr/heimdal"
1193
 
                        if $withargs{"krb5-dir"} eq "";
1194
 
                $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1195
 
                        "/lib -lgssapi -lkrb5 -lcom_err"
1196
 
                        if $withargs{"krb5-lib"} eq "" && !$IsMK1MF;
1197
 
                $cflags="-DKRB5_HEIMDAL $cflags";
1198
 
                }
1199
 
        if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/)
1200
 
                {
1201
 
                $withargs{"krb5-dir"} = "/usr/kerberos"
1202
 
                        if $withargs{"krb5-dir"} eq "";
1203
 
                $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1204
 
                        "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto"
1205
 
                        if $withargs{"krb5-lib"} eq "" && !$IsMK1MF;
1206
 
                $cflags="-DKRB5_MIT $cflags";
1207
 
                $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//;
1208
 
                if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/)
1209
 
                        {
1210
 
                        $cflags="-DKRB5_MIT_OLD11 $cflags";
1211
 
                        }
1212
 
                }
1213
 
        LRESOLV:
1214
 
        foreach $lpath ("/lib", "/usr/lib")
1215
 
                {
1216
 
                foreach $lext ("a", "so")
1217
 
                        {
1218
 
                        $lresolv = "$lpath/libresolv.$lext";
1219
 
                        last LRESOLV    if (-r "$lresolv");
1220
 
                        $lresolv = "";
1221
 
                        }
1222
 
                }
1223
 
        $withargs{"krb5-lib"} .= " -lresolv"
1224
 
                if ("$lresolv" ne "");
1225
 
        $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include"
1226
 
                if $withargs{"krb5-include"} eq "" &&
1227
 
                   $withargs{"krb5-dir"} ne "";
1228
 
        }
1229
 
 
1230
 
# The DSO code currently always implements all functions so that no
1231
 
# applications will have to worry about that from a compilation point
1232
 
# of view. However, the "method"s may return zero unless that platform
1233
 
# has support compiled in for them. Currently each method is enabled
1234
 
# by a define "DSO_<name>" ... we translate the "dso_scheme" config
1235
 
# string entry into using the following logic;
1236
 
my $dso_cflags;
1237
 
if (!$no_dso && $dso_scheme ne "")
1238
 
        {
1239
 
        $dso_scheme =~ tr/[a-z]/[A-Z]/;
1240
 
        if ($dso_scheme eq "DLFCN")
1241
 
                {
1242
 
                $dso_cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H";
1243
 
                }
1244
 
        elsif ($dso_scheme eq "DLFCN_NO_H")
1245
 
                {
1246
 
                $dso_cflags = "-DDSO_DLFCN";
1247
 
                }
1248
 
        else
1249
 
                {
1250
 
                $dso_cflags = "-DDSO_$dso_scheme";
1251
 
                }
1252
 
        $cflags = "$dso_cflags $cflags";
1253
 
        }
1254
 
 
1255
 
my $thread_cflags;
1256
 
my $thread_defines;
1257
 
if ($thread_cflag ne "(unknown)" && !$no_threads)
1258
 
        {
1259
 
        # If we know how to do it, support threads by default.
1260
 
        $threads = 1;
1261
 
        }
1262
 
if ($thread_cflag eq "(unknown)" && $threads)
1263
 
        {
1264
 
        # If the user asked for "threads", [s]he is also expected to
1265
 
        # provide any system-dependent compiler options that are
1266
 
        # necessary.
1267
 
        if ($no_user_cflags)
1268
 
                {
1269
 
                print "You asked for multi-threading support, but didn't\n";
1270
 
                print "provide any system-specific compiler options\n";
1271
 
                exit(1);
1272
 
                }
1273
 
        $thread_cflags="-DOPENSSL_THREADS $cflags" ;
1274
 
        $thread_defines .= "#define OPENSSL_THREADS\n";
1275
 
        }
1276
 
else
1277
 
        {
1278
 
        $thread_cflags="-DOPENSSL_THREADS $thread_cflag $cflags";
1279
 
        $thread_defines .= "#define OPENSSL_THREADS\n";
1280
 
#       my $def;
1281
 
#       foreach $def (split ' ',$thread_cflag)
1282
 
#               {
1283
 
#               if ($def =~ s/^-D// && $def !~ /^_/)
1284
 
#                       {
1285
 
#                       $thread_defines .= "#define $def\n";
1286
 
#                       }
1287
 
#               }
1288
 
        }       
1289
 
 
1290
 
$lflags="$libs$lflags" if ($libs ne "");
1291
 
 
1292
 
if ($no_asm)
1293
 
        {
1294
 
        $cpuid_obj=$bn_obj=$des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj="";
1295
 
        $sha1_obj=$md5_obj=$rmd160_obj="";
1296
 
        $cflags=~s/\-D[BL]_ENDIAN//             if ($fips);
1297
 
        $thread_cflags=~s/\-D[BL]_ENDIAN//      if ($fips);
1298
 
        }
1299
 
if ($montasm)
1300
 
        {
1301
 
        $bn_obj =~ s/MAYBE-MO86-/mo86-/;
1302
 
        }
1303
 
else
1304
 
        {
1305
 
        $bn_obj =~ s/MAYBE-MO86-[a-z.]*//;
1306
 
        }
1307
 
 
1308
 
if (!$no_shared)
1309
 
        {
1310
 
        $cast_obj="";   # CAST assembler is not PIC
1311
 
        }
1312
 
 
1313
 
if ($threads)
1314
 
        {
1315
 
        $cflags=$thread_cflags;
1316
 
        $openssl_thread_defines .= $thread_defines;
1317
 
        }
1318
 
 
1319
 
if ($zlib)
1320
 
        {
1321
 
        $cflags = "-DZLIB $cflags";
1322
 
        if (defined($disabled{"zlib-dynamic"}))
1323
 
                {
1324
 
                $lflags = "$lflags -lz";
1325
 
                }
1326
 
        else
1327
 
                {
1328
 
                $cflags = "-DZLIB_SHARED $cflags";
1329
 
                }
1330
 
        }
1331
 
 
1332
 
# You will find shlib_mark1 and shlib_mark2 explained in Makefile.org
1333
 
my $shared_mark = "";
1334
 
if ($shared_target eq "")
1335
 
        {
1336
 
        $no_shared_warn = 1 if !$no_shared && !$fips;
1337
 
        $no_shared = 1;
1338
 
        }
1339
 
if (!$no_shared)
1340
 
        {
1341
 
        if ($shared_cflag ne "")
1342
 
                {
1343
 
                $cflags = "$shared_cflag -DOPENSSL_PIC $cflags";
1344
 
                }
1345
 
        }
1346
 
 
1347
 
if (!$IsMK1MF)
1348
 
        {
1349
 
        if ($no_shared)
1350
 
                {
1351
 
                $openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
1352
 
                }
1353
 
        else
1354
 
                {
1355
 
                $openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
1356
 
                }
1357
 
        }
1358
 
 
1359
 
$cpuid_obj.=" uplink.o uplink-cof.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/);
1360
 
 
1361
 
#
1362
 
# Platform fix-ups
1363
 
#
1364
 
if ($target =~ /\-icc$/)        # Intel C compiler
1365
 
        {
1366
 
        my $iccver=0;
1367
 
        if (open(FD,"$cc -V 2>&1 |"))
1368
 
                {
1369
 
                while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); }
1370
 
                close(FD);
1371
 
                }
1372
 
        if ($iccver>=8)
1373
 
                {
1374
 
                # Eliminate unnecessary dependency from libirc.a. This is
1375
 
                # essential for shared library support, as otherwise
1376
 
                # apps/openssl can end up in endless loop upon startup...
1377
 
                $cflags.=" -Dmemcpy=__builtin_memcpy -Dmemset=__builtin_memset";
1378
 
                }
1379
 
        if ($iccver>=9)
1380
 
                {
1381
 
                $cflags.=" -i-static";
1382
 
                $cflags=~s/\-no_cpprt/-no-cpprt/;
1383
 
                }
1384
 
        if ($iccver>=10)
1385
 
                {
1386
 
                $cflags=~s/\-i\-static/-static-intel/;
1387
 
                }
1388
 
        }
1389
 
 
1390
 
# Unlike other OSes (like Solaris, Linux, Tru64, IRIX) BSD run-time
1391
 
# linkers (tested OpenBSD, NetBSD and FreeBSD) "demand" RPATH set on
1392
 
# .so objects. Apparently application RPATH is not global and does
1393
 
# not apply to .so linked with other .so. Problem manifests itself
1394
 
# when libssl.so fails to load libcrypto.so. One can argue that we
1395
 
# should engrave this into Makefile.shared rules or into BSD-* config
1396
 
# lines above. Meanwhile let's try to be cautious and pass -rpath to
1397
 
# linker only when --prefix is not /usr.
1398
 
if ($target =~ /^BSD\-/)
1399
 
        {
1400
 
        $shared_ldflag.=" -Wl,-rpath,\$(LIBRPATH)" if ($prefix !~ m|^/usr[/]*$|);
1401
 
        }
1402
 
 
1403
 
if ($sys_id ne "")
1404
 
        {
1405
 
        #$cflags="-DOPENSSL_SYSNAME_$sys_id $cflags";
1406
 
        $openssl_sys_defines="#define OPENSSL_SYSNAME_$sys_id\n";
1407
 
        }
1408
 
 
1409
 
if ($ranlib eq "")
1410
 
        {
1411
 
        $ranlib = $default_ranlib;
1412
 
        }
1413
 
 
1414
 
#my ($bn1)=split(/\s+/,$bn_obj);
1415
 
#$bn1 = "" unless defined $bn1;
1416
 
#$bn1=$bn_asm unless ($bn1 =~ /\.o$/);
1417
 
#$bn_obj="$bn1";
1418
 
 
1419
 
$cpuid_obj="" if ($processor eq "386");
1420
 
 
1421
 
$bn_obj = $bn_asm unless $bn_obj ne "";
1422
 
# bn86* is the only one implementing bn_*_part_words
1423
 
$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn86/);
1424
 
$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /bn86/);
1425
 
 
1426
 
$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /\-mont|mo86\-/);
1427
 
 
1428
 
if ($fips)
1429
 
        {
1430
 
        $openssl_other_defines.="#define OPENSSL_FIPS\n";
1431
 
        }
1432
 
 
1433
 
$des_obj=$des_enc       unless ($des_obj =~ /\.o$/);
1434
 
$bf_obj=$bf_enc         unless ($bf_obj =~ /\.o$/);
1435
 
$cast_obj=$cast_enc     unless ($cast_obj =~ /\.o$/);
1436
 
$rc4_obj=$rc4_enc       unless ($rc4_obj =~ /\.o$/);
1437
 
$rc5_obj=$rc5_enc       unless ($rc5_obj =~ /\.o$/);
1438
 
if ($sha1_obj =~ /\.o$/)
1439
 
        {
1440
 
#       $sha1_obj=$sha1_enc;
1441
 
        $cflags.=" -DSHA1_ASM"   if ($sha1_obj =~ /sx86/ || $sha1_obj =~ /sha1/);
1442
 
        $cflags.=" -DSHA256_ASM" if ($sha1_obj =~ /sha256/);
1443
 
        $cflags.=" -DSHA512_ASM" if ($sha1_obj =~ /sha512/);
1444
 
        if ($sha1_obj =~ /sse2/)
1445
 
            {   if ($no_sse2)
1446
 
                {   $sha1_obj =~ s/\S*sse2\S+//;        }
1447
 
                elsif ($cflags !~ /OPENSSL_IA32_SSE2/)
1448
 
                {   $cflags.=" -DOPENSSL_IA32_SSE2";    }
1449
 
            }
1450
 
        }
1451
 
if ($md5_obj =~ /\.o$/)
1452
 
        {
1453
 
#       $md5_obj=$md5_enc;
1454
 
        $cflags.=" -DMD5_ASM";
1455
 
        }
1456
 
if ($rmd160_obj =~ /\.o$/)
1457
 
        {
1458
 
#       $rmd160_obj=$rmd160_enc;
1459
 
        $cflags.=" -DRMD160_ASM";
1460
 
        }
1461
 
if ($aes_obj =~ /\.o$/)
1462
 
        {
1463
 
        $cflags.=" -DAES_ASM";
1464
 
        }
1465
 
else    {
1466
 
        $aes_obj=$aes_enc;
1467
 
        }
1468
 
 
1469
 
# "Stringify" the C flags string.  This permits it to be made part of a string
1470
 
# and works as well on command lines.
1471
 
$cflags =~ s/([\\\"])/\\\1/g;
1472
 
 
1473
 
my $version = "unknown";
1474
 
my $version_num = "unknown";
1475
 
my $major = "unknown";
1476
 
my $minor = "unknown";
1477
 
my $shlib_version_number = "unknown";
1478
 
my $shlib_version_history = "unknown";
1479
 
my $shlib_major = "unknown";
1480
 
my $shlib_minor = "unknown";
1481
 
 
1482
 
open(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n";
1483
 
while (<IN>)
1484
 
        {
1485
 
        $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /;
1486
 
        $version_num=$1 if /OPENSSL.VERSION.NUMBER.*0x(\S+)/;
1487
 
        $shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/;
1488
 
        $shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/;
1489
 
        }
1490
 
close(IN);
1491
 
if ($shlib_version_history ne "") { $shlib_version_history .= ":"; }
1492
 
 
1493
 
if ($version =~ /(^[0-9]*)\.([0-9\.]*)/)
1494
 
        {
1495
 
        $major=$1;
1496
 
        $minor=$2;
1497
 
        }
1498
 
 
1499
 
if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/)
1500
 
        {
1501
 
        $shlib_major=$1;
1502
 
        $shlib_minor=$2;
1503
 
        }
1504
 
 
1505
 
if ($strict_warnings)
1506
 
        {
1507
 
        my $wopt;
1508
 
        die "ERROR --strict-warnings requires gcc" unless ($cc =~ /gcc$/);
1509
 
        foreach $wopt (split /\s+/, $gcc_devteam_warn)
1510
 
                {
1511
 
                $cflags .= " $wopt" unless ($cflags =~ /$wopt/)
1512
 
                }
1513
 
        }
1514
 
 
1515
 
open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
1516
 
unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
1517
 
open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
1518
 
print OUT "### Generated automatically from Makefile.org by Configure.\n\n";
1519
 
my $sdirs=0;
1520
 
while (<IN>)
1521
 
        {
1522
 
        chomp;
1523
 
        $sdirs = 1 if /^SDIRS=/;
1524
 
        if ($sdirs) {
1525
 
                my $dir;
1526
 
                foreach $dir (@skip) {
1527
 
                        s/(\s)$dir\s/$1/;
1528
 
                        s/\s$dir$//;
1529
 
                        }
1530
 
                }
1531
 
        $sdirs = 0 unless /\\$/;
1532
 
        s/fips // if (/^DIRS=/ && !$fips);
1533
 
        s/engines // if (/^DIRS=/ && $disabled{"engine"});
1534
 
        s/^VERSION=.*/VERSION=$version/;
1535
 
        s/^MAJOR=.*/MAJOR=$major/;
1536
 
        s/^MINOR=.*/MINOR=$minor/;
1537
 
        s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=$shlib_version_number/;
1538
 
        s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/;
1539
 
        s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/;
1540
 
        s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/;
1541
 
        s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
1542
 
        s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
1543
 
        s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
1544
 
        s/^LIBDIR=.*$/LIBDIR=$libdir/;
1545
 
        s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
1546
 
        s/^PLATFORM=.*$/PLATFORM=$target/;
1547
 
        s/^OPTIONS=.*$/OPTIONS=$options/;
1548
 
        s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
1549
 
        if ($cross_compile_prefix)
1550
 
                {
1551
 
                s/^CC=.*$/CROSS_COMPILE= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE\)$cc/;
1552
 
                s/^AR=\s*/AR= \$\(CROSS_COMPILE\)/;
1553
 
                s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE\)/;
1554
 
                }
1555
 
        else    {
1556
 
                s/^CC=.*$/CC= $cc/;
1557
 
                s/^AR=\s*ar/AR= $ar/;
1558
 
                s/^RANLIB=.*/RANLIB= $ranlib/;
1559
 
                }
1560
 
        s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
1561
 
        s/^CFLAG=.*$/CFLAG= $cflags/;
1562
 
        s/^DEPFLAG=.*$/DEPFLAG=$depflags/;
1563
 
        s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/;
1564
 
        s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
1565
 
        s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/;
1566
 
        s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/;
1567
 
        s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
1568
 
        s/^DES_ENC=.*$/DES_ENC= $des_obj/;
1569
 
        s/^AES_ASM_OBJ=.*$/AES_ASM_OBJ= $aes_obj/;
1570
 
        s/^BF_ENC=.*$/BF_ENC= $bf_obj/;
1571
 
        s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/;
1572
 
        s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/;
1573
 
        s/^RC5_ENC=.*$/RC5_ENC= $rc5_obj/;
1574
 
        s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/;
1575
 
        s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/;
1576
 
        s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/;
1577
 
        s/^PROCESSOR=.*/PROCESSOR= $processor/;
1578
 
        s/^ARFLAGS=.*/ARFLAGS= $arflags/;
1579
 
        s/^PERL=.*/PERL= $perl/;
1580
 
        s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
1581
 
        s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
1582
 
        s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
1583
 
        s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
1584
 
        s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
1585
 
        if ($fipsdso)
1586
 
                {
1587
 
                s/^FIPSCANLIB=.*/FIPSCANLIB=libfips/;
1588
 
                s/^SHARED_FIPS=.*/SHARED_FIPS=libfips\$(SHLIB_EXT)/;
1589
 
                s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl fips/;
1590
 
                }
1591
 
        else
1592
 
                {
1593
 
                s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips;
1594
 
                s/^SHARED_FIPS=.*/SHARED_FIPS=/;
1595
 
                s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl/;
1596
 
                }
1597
 
        s/^FIPSCANISTERINTERNAL=.*/FIPSCANISTERINTERNAL=$fipscanisterinternal/;
1598
 
        s/^BASEADDR=.*/BASEADDR=$baseaddr/;
1599
 
        s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
1600
 
        s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
1601
 
        s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_FIPS) \$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
1602
 
        if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
1603
 
                {
1604
 
                my $sotmp = $1;
1605
 
                s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/;
1606
 
                }
1607
 
        elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.dylib$/)
1608
 
                {
1609
 
                s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.dylib/;
1610
 
                }
1611
 
        elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
1612
 
                {
1613
 
                my $sotmp = $1;
1614
 
                s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
1615
 
                }
1616
 
        elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
1617
 
                {
1618
 
                s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/;
1619
 
                }
1620
 
        s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/;
1621
 
        print OUT $_."\n";
1622
 
        }
1623
 
close(IN);
1624
 
close(OUT);
1625
 
rename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e $Makefile;
1626
 
rename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n";
1627
 
 
1628
 
print "CC            =$cc\n";
1629
 
print "CFLAG         =$cflags\n";
1630
 
print "EX_LIBS       =$lflags\n";
1631
 
print "CPUID_OBJ     =$cpuid_obj\n";
1632
 
print "BN_ASM        =$bn_obj\n";
1633
 
print "DES_ENC       =$des_obj\n";
1634
 
print "AES_ASM_OBJ   =$aes_obj\n";
1635
 
print "BF_ENC        =$bf_obj\n";
1636
 
print "CAST_ENC      =$cast_obj\n";
1637
 
print "RC4_ENC       =$rc4_obj\n";
1638
 
print "RC5_ENC       =$rc5_obj\n";
1639
 
print "MD5_OBJ_ASM   =$md5_obj\n";
1640
 
print "SHA1_OBJ_ASM  =$sha1_obj\n";
1641
 
print "RMD160_OBJ_ASM=$rmd160_obj\n";
1642
 
print "PROCESSOR     =$processor\n";
1643
 
print "RANLIB        =$ranlib\n";
1644
 
print "ARFLAGS       =$arflags\n";
1645
 
print "PERL          =$perl\n";
1646
 
print "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n"
1647
 
        if $withargs{"krb5-include"} ne "";
1648
 
 
1649
 
my $des_ptr=0;
1650
 
my $des_risc1=0;
1651
 
my $des_risc2=0;
1652
 
my $des_unroll=0;
1653
 
my $bn_ll=0;
1654
 
my $def_int=2;
1655
 
my $rc4_int=$def_int;
1656
 
my $md2_int=$def_int;
1657
 
my $idea_int=$def_int;
1658
 
my $rc2_int=$def_int;
1659
 
my $rc4_idx=0;
1660
 
my $rc4_chunk=0;
1661
 
my $bf_ptr=0;
1662
 
my @type=("char","short","int","long");
1663
 
my ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0);
1664
 
my $export_var_as_fn=0;
1665
 
 
1666
 
my $des_int;
1667
 
 
1668
 
foreach (sort split(/\s+/,$bn_ops))
1669
 
        {
1670
 
        $des_ptr=1 if /DES_PTR/;
1671
 
        $des_risc1=1 if /DES_RISC1/;
1672
 
        $des_risc2=1 if /DES_RISC2/;
1673
 
        $des_unroll=1 if /DES_UNROLL/;
1674
 
        $des_int=1 if /DES_INT/;
1675
 
        $bn_ll=1 if /BN_LLONG/;
1676
 
        $rc4_int=0 if /RC4_CHAR/;
1677
 
        $rc4_int=3 if /RC4_LONG/;
1678
 
        $rc4_idx=1 if /RC4_INDEX/;
1679
 
        $rc4_chunk=1 if /RC4_CHUNK/;
1680
 
        $rc4_chunk=2 if /RC4_CHUNK_LL/;
1681
 
        $md2_int=0 if /MD2_CHAR/;
1682
 
        $md2_int=3 if /MD2_LONG/;
1683
 
        $idea_int=1 if /IDEA_SHORT/;
1684
 
        $idea_int=3 if /IDEA_LONG/;
1685
 
        $rc2_int=1 if /RC2_SHORT/;
1686
 
        $rc2_int=3 if /RC2_LONG/;
1687
 
        $bf_ptr=1 if $_ eq "BF_PTR";
1688
 
        $bf_ptr=2 if $_ eq "BF_PTR2";
1689
 
        ($b64l,$b64,$b32,$b16,$b8)=(0,1,0,0,0) if /SIXTY_FOUR_BIT/;
1690
 
        ($b64l,$b64,$b32,$b16,$b8)=(1,0,0,0,0) if /SIXTY_FOUR_BIT_LONG/;
1691
 
        ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0) if /THIRTY_TWO_BIT/;
1692
 
        ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,1,0) if /SIXTEEN_BIT/;
1693
 
        ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/;
1694
 
        $export_var_as_fn=1 if /EXPORT_VAR_AS_FN/;
1695
 
        }
1696
 
 
1697
 
open(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n";
1698
 
unlink("crypto/opensslconf.h.new") || die "unable to remove old crypto/opensslconf.h.new:$!\n" if -e "crypto/opensslconf.h.new";
1699
 
open(OUT,'>crypto/opensslconf.h.new') || die "unable to create crypto/opensslconf.h.new:$!\n";
1700
 
print OUT "/* opensslconf.h */\n";
1701
 
print OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n";
1702
 
 
1703
 
print OUT "/* OpenSSL was configured with the following options: */\n";
1704
 
my $openssl_algorithm_defines_trans = $openssl_algorithm_defines;
1705
 
$openssl_experimental_defines =~ s/^\s*#\s*define\s+OPENSSL_NO_(.*)/#ifndef OPENSSL_EXPERIMENTAL_$1\n# ifndef OPENSSL_NO_$1\n#  define OPENSSL_NO_$1\n# endif\n#endif/mg;
1706
 
$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n#  define $1\n# endif/mg;
1707
 
$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1708
 
$openssl_algorithm_defines = "   /* no ciphers excluded */\n" if $openssl_algorithm_defines eq "";
1709
 
$openssl_thread_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1710
 
$openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1711
 
$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1712
 
print OUT $openssl_sys_defines;
1713
 
print OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n";
1714
 
print OUT $openssl_experimental_defines;
1715
 
print OUT "\n";
1716
 
print OUT $openssl_algorithm_defines;
1717
 
print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n\n";
1718
 
print OUT $openssl_thread_defines;
1719
 
print OUT $openssl_other_defines,"\n";
1720
 
 
1721
 
print OUT "/* The OPENSSL_NO_* macros are also defined as NO_* if the application\n";
1722
 
print OUT "   asks for it.  This is a transient feature that is provided for those\n";
1723
 
print OUT "   who haven't had the time to do the appropriate changes in their\n";
1724
 
print OUT "   applications.  */\n";
1725
 
print OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n";
1726
 
print OUT $openssl_algorithm_defines_trans;
1727
 
print OUT "#endif\n\n";
1728
 
 
1729
 
print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj);
1730
 
 
1731
 
while (<IN>)
1732
 
        {
1733
 
        if      (/^#define\s+OPENSSLDIR/)
1734
 
                {
1735
 
                my $foo = $openssldir;
1736
 
                $foo =~ s/\\/\\\\/g;
1737
 
                print OUT "#define OPENSSLDIR \"$foo\"\n";
1738
 
                }
1739
 
        elsif   (/^#define\s+ENGINESDIR/)
1740
 
                {
1741
 
                # $foo is to become "$prefix/lib$multilib/engines";
1742
 
                # as Makefile.org and engines/Makefile are adapted for
1743
 
                # $multilib suffix.
1744
 
                my $foo = "$prefix/lib/ssl/engines";
1745
 
                $foo =~ s/\\/\\\\/g;
1746
 
                print OUT "#define ENGINESDIR \"$foo\"\n";
1747
 
                }
1748
 
        elsif   (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
1749
 
                { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
1750
 
                        if $export_var_as_fn;
1751
 
                  printf OUT "#%s OPENSSL_EXPORT_VAR_AS_FUNCTION\n",
1752
 
                        ($export_var_as_fn)?"define":"undef"; }
1753
 
        elsif   (/^#define\s+OPENSSL_UNISTD/)
1754
 
                {
1755
 
                $unistd = "<unistd.h>" if $unistd eq "";
1756
 
                print OUT "#define OPENSSL_UNISTD $unistd\n";
1757
 
                }
1758
 
        elsif   (/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/)
1759
 
                { printf OUT "#%s SIXTY_FOUR_BIT_LONG\n",($b64l)?"define":"undef"; }
1760
 
        elsif   (/^#((define)|(undef))\s+SIXTY_FOUR_BIT/)
1761
 
                { printf OUT "#%s SIXTY_FOUR_BIT\n",($b64)?"define":"undef"; }
1762
 
        elsif   (/^#((define)|(undef))\s+THIRTY_TWO_BIT/)
1763
 
                { printf OUT "#%s THIRTY_TWO_BIT\n",($b32)?"define":"undef"; }
1764
 
        elsif   (/^#((define)|(undef))\s+SIXTEEN_BIT/)
1765
 
                { printf OUT "#%s SIXTEEN_BIT\n",($b16)?"define":"undef"; }
1766
 
        elsif   (/^#((define)|(undef))\s+EIGHT_BIT/)
1767
 
                { printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; }
1768
 
        elsif   (/^#((define)|(undef))\s+BN_LLONG\s*$/)
1769
 
                { printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; }
1770
 
        elsif   (/^\#define\s+DES_LONG\s+.*/)
1771
 
                { printf OUT "#define DES_LONG unsigned %s\n",
1772
 
                        ($des_int)?'int':'long'; }
1773
 
        elsif   (/^\#(define|undef)\s+DES_PTR/)
1774
 
                { printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; }
1775
 
        elsif   (/^\#(define|undef)\s+DES_RISC1/)
1776
 
                { printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; }
1777
 
        elsif   (/^\#(define|undef)\s+DES_RISC2/)
1778
 
                { printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; }
1779
 
        elsif   (/^\#(define|undef)\s+DES_UNROLL/)
1780
 
                { printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; }
1781
 
        elsif   (/^#define\s+RC4_INT\s/)
1782
 
                { printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; }
1783
 
        elsif   (/^#undef\s+RC4_CHUNK/)
1784
 
                {
1785
 
                printf OUT "#undef RC4_CHUNK\n" if $rc4_chunk==0;
1786
 
                printf OUT "#define RC4_CHUNK unsigned long\n" if $rc4_chunk==1;
1787
 
                printf OUT "#define RC4_CHUNK unsigned long long\n" if $rc4_chunk==2;
1788
 
                }
1789
 
        elsif   (/^#((define)|(undef))\s+RC4_INDEX/)
1790
 
                { printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; }
1791
 
        elsif (/^#(define|undef)\s+I386_ONLY/)
1792
 
                { printf OUT "#%s I386_ONLY\n", ($processor eq "386")?
1793
 
                        "define":"undef"; }
1794
 
        elsif   (/^#define\s+MD2_INT\s/)
1795
 
                { printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; }
1796
 
        elsif   (/^#define\s+IDEA_INT\s/)
1797
 
                {printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];}
1798
 
        elsif   (/^#define\s+RC2_INT\s/)
1799
 
                {printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];}
1800
 
        elsif (/^#(define|undef)\s+BF_PTR/)
1801
 
                {
1802
 
                printf OUT "#undef BF_PTR\n" if $bf_ptr == 0;
1803
 
                printf OUT "#define BF_PTR\n" if $bf_ptr == 1;
1804
 
                printf OUT "#define BF_PTR2\n" if $bf_ptr == 2;
1805
 
                }
1806
 
        else
1807
 
                { print OUT $_; }
1808
 
        }
1809
 
close(IN);
1810
 
close(OUT);
1811
 
rename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h";
1812
 
rename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to rename crypto/opensslconf.h.new\n";
1813
 
 
1814
 
 
1815
 
# Fix the date
1816
 
 
1817
 
print "SIXTY_FOUR_BIT_LONG mode\n" if $b64l;
1818
 
print "SIXTY_FOUR_BIT mode\n" if $b64;
1819
 
print "THIRTY_TWO_BIT mode\n" if $b32;
1820
 
print "SIXTEEN_BIT mode\n" if $b16;
1821
 
print "EIGHT_BIT mode\n" if $b8;
1822
 
print "DES_PTR used\n" if $des_ptr;
1823
 
print "DES_RISC1 used\n" if $des_risc1;
1824
 
print "DES_RISC2 used\n" if $des_risc2;
1825
 
print "DES_UNROLL used\n" if $des_unroll;
1826
 
print "DES_INT used\n" if $des_int;
1827
 
print "BN_LLONG mode\n" if $bn_ll;
1828
 
print "RC4 uses u$type[$rc4_int]\n" if $rc4_int != $def_int;
1829
 
print "RC4_INDEX mode\n" if $rc4_idx;
1830
 
print "RC4_CHUNK is undefined\n" if $rc4_chunk==0;
1831
 
print "RC4_CHUNK is unsigned long\n" if $rc4_chunk==1;
1832
 
print "RC4_CHUNK is unsigned long long\n" if $rc4_chunk==2;
1833
 
print "MD2 uses u$type[$md2_int]\n" if $md2_int != $def_int;
1834
 
print "IDEA uses u$type[$idea_int]\n" if $idea_int != $def_int;
1835
 
print "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int;
1836
 
print "BF_PTR used\n" if $bf_ptr == 1; 
1837
 
print "BF_PTR2 used\n" if $bf_ptr == 2; 
1838
 
 
1839
 
if($IsMK1MF) {
1840
 
        open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h";
1841
 
        printf OUT <<EOF;
1842
 
#ifndef MK1MF_BUILD
1843
 
  /* auto-generated by Configure for crypto/cversion.c:
1844
 
   * for Unix builds, crypto/Makefile.ssl generates functional definitions;
1845
 
   * Windows builds (and other mk1mf builds) compile cversion.c with
1846
 
   * -DMK1MF_BUILD and use definitions added to this file by util/mk1mf.pl. */
1847
 
  #error "Windows builds (PLATFORM=$target) use mk1mf.pl-created Makefiles"
1848
 
#endif
1849
 
EOF
1850
 
        close(OUT);
1851
 
} else {
1852
 
        my $make_command = "$make PERL=\'$perl\'";
1853
 
        my $make_targets = "";
1854
 
        $make_targets .= " links" if $symlink;
1855
 
        $make_targets .= " depend" if $depflags ne $default_depflags && $make_depend;
1856
 
        $make_targets .= " gentests" if $symlink;
1857
 
        (system $make_command.$make_targets) == 0 or exit $?
1858
 
                if $make_targets ne "";
1859
 
        if ( $perl =~ m@^/@) {
1860
 
            &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
1861
 
            &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
1862
 
        } else {
1863
 
            # No path for Perl known ...
1864
 
            &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";',  '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
1865
 
            &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
1866
 
        }
1867
 
        if ($depflags ne $default_depflags && !$make_depend) {
1868
 
                print <<EOF;
1869
 
 
1870
 
Since you've disabled or enabled at least one algorithm, you need to do
1871
 
the following before building:
1872
 
 
1873
 
        make depend
1874
 
EOF
1875
 
        }
1876
 
}
1877
 
 
1878
 
# create the ms/version32.rc file if needed
1879
 
if ($IsMK1MF && ($target !~ /^netware/)) {
1880
 
        my ($v1, $v2, $v3, $v4);
1881
 
        if ($version_num =~ /(^[0-9a-f]{1})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i) {
1882
 
                $v1=hex $1;
1883
 
                $v2=hex $2;
1884
 
                $v3=hex $3;
1885
 
                $v4=hex $4;
1886
 
        }
1887
 
        open (OUT,">ms/version32.rc") || die "Can't open ms/version32.rc";
1888
 
        print OUT <<EOF;
1889
 
#include <winver.h>
1890
 
 
1891
 
LANGUAGE 0x09,0x01
1892
 
 
1893
 
1 VERSIONINFO
1894
 
  FILEVERSION $v1,$v2,$v3,$v4
1895
 
  PRODUCTVERSION $v1,$v2,$v3,$v4
1896
 
  FILEFLAGSMASK 0x3fL
1897
 
#ifdef _DEBUG
1898
 
  FILEFLAGS 0x01L
1899
 
#else
1900
 
  FILEFLAGS 0x00L
1901
 
#endif
1902
 
  FILEOS VOS__WINDOWS32
1903
 
  FILETYPE VFT_DLL
1904
 
  FILESUBTYPE 0x0L
1905
 
BEGIN
1906
 
    BLOCK "StringFileInfo"
1907
 
    BEGIN
1908
 
        BLOCK "040904b0"
1909
 
        BEGIN
1910
 
#if defined(FIPS)
1911
 
            VALUE "Comments", "WARNING: TEST VERSION ONLY ***NOT*** FIPS 140-2 VALIDATED.\\0"
1912
 
#endif
1913
 
            // Required:            
1914
 
            VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
1915
 
#if defined(FIPS)
1916
 
            VALUE "FileDescription", "TEST UNVALIDATED FIPS140-2 DLL\\0"
1917
 
#else
1918
 
            VALUE "FileDescription", "OpenSSL Shared Library\\0"
1919
 
#endif
1920
 
            VALUE "FileVersion", "$version\\0"
1921
 
#if defined(CRYPTO)
1922
 
            VALUE "InternalName", "libeay32\\0"
1923
 
            VALUE "OriginalFilename", "libeay32.dll\\0"
1924
 
#elif defined(SSL)
1925
 
            VALUE "InternalName", "ssleay32\\0"
1926
 
            VALUE "OriginalFilename", "ssleay32.dll\\0"
1927
 
#elif defined(FIPS)
1928
 
            VALUE "InternalName", "libosslfips\\0"
1929
 
            VALUE "OriginalFilename", "libosslfips.dll\\0"
1930
 
#endif
1931
 
            VALUE "ProductName", "The OpenSSL Toolkit\\0"
1932
 
            VALUE "ProductVersion", "$version\\0"
1933
 
            // Optional:
1934
 
            //VALUE "Comments", "\\0"
1935
 
            VALUE "LegalCopyright", "Copyright � 1998-2007 The OpenSSL Project. Copyright � 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
1936
 
            //VALUE "LegalTrademarks", "\\0"
1937
 
            //VALUE "PrivateBuild", "\\0"
1938
 
            //VALUE "SpecialBuild", "\\0"
1939
 
        END
1940
 
    END
1941
 
    BLOCK "VarFileInfo"
1942
 
    BEGIN
1943
 
        VALUE "Translation", 0x409, 0x4b0
1944
 
    END
1945
 
END
1946
 
EOF
1947
 
        close(OUT);
1948
 
  }
1949
 
  
1950
 
print <<EOF;
1951
 
 
1952
 
Configured for $target.
1953
 
EOF
1954
 
 
1955
 
print <<\EOF if (!$no_threads && !$threads);
1956
 
 
1957
 
The library could not be configured for supporting multi-threaded
1958
 
applications as the compiler options required on this system are not known.
1959
 
See file INSTALL for details if you need multi-threading.
1960
 
EOF
1961
 
 
1962
 
print <<\EOF if ($no_shared_warn);
1963
 
 
1964
 
You gave the option 'shared'.  Normally, that would give you shared libraries.
1965
 
Unfortunately, the OpenSSL configuration doesn't include shared library support
1966
 
for this platform yet, so it will pretend you gave the option 'no-shared'.  If
1967
 
you can inform the developpers (openssl-dev\@openssl.org) how to support shared
1968
 
libraries on this platform, they will at least look at it and try their best
1969
 
(but please first make sure you have tried with a current version of OpenSSL).
1970
 
EOF
1971
 
 
1972
 
print <<\EOF if ($fipscanisterinternal eq "y");
1973
 
 
1974
 
WARNING: OpenSSL has been configured using unsupported option(s) to internally
1975
 
generate a fipscanister.o object module for TESTING PURPOSES ONLY; that
1976
 
compiled module is NOT FIPS 140-2 validated and CANNOT be used to replace the
1977
 
OpenSSL FIPS Object Module as identified by the CMVP
1978
 
(http://csrc.nist.gov/cryptval/) in any application requiring the use of FIPS
1979
 
140-2 validated software. 
1980
 
 
1981
 
This is an OpenSSL 0.9.8 test version.
1982
 
 
1983
 
See the file README.FIPS for details of how to build a test library.
1984
 
 
1985
 
EOF
1986
 
 
1987
 
exit(0);
1988
 
 
1989
 
sub usage
1990
 
        {
1991
 
        print STDERR $usage;
1992
 
        print STDERR "\npick os/compiler from:\n";
1993
 
        my $j=0;
1994
 
        my $i;
1995
 
        my $k=0;
1996
 
        foreach $i (sort keys %table)
1997
 
                {
1998
 
                next if $i =~ /^debug/;
1999
 
                $k += length($i) + 1;
2000
 
                if ($k > 78)
2001
 
                        {
2002
 
                        print STDERR "\n";
2003
 
                        $k=length($i);
2004
 
                        }
2005
 
                print STDERR $i . " ";
2006
 
                }
2007
 
        foreach $i (sort keys %table)
2008
 
                {
2009
 
                next if $i !~ /^debug/;
2010
 
                $k += length($i) + 1;
2011
 
                if ($k > 78)
2012
 
                        {
2013
 
                        print STDERR "\n";
2014
 
                        $k=length($i);
2015
 
                        }
2016
 
                print STDERR $i . " ";
2017
 
                }
2018
 
        print STDERR "\n\nNOTE: If in doubt, on Unix-ish systems use './config'.\n";
2019
 
        exit(1);
2020
 
        }
2021
 
 
2022
 
sub which
2023
 
        {
2024
 
        my($name)=@_;
2025
 
        my $path;
2026
 
        foreach $path (split /:/, $ENV{PATH})
2027
 
                {
2028
 
                if (-f "$path/$name$exe_ext" and -x _)
2029
 
                        {
2030
 
                        return "$path/$name$exe_ext" unless ($name eq "perl" and
2031
 
                         system("$path/$name$exe_ext -e " . '\'exit($]<5.0);\''));
2032
 
                        }
2033
 
                }
2034
 
        }
2035
 
 
2036
 
sub dofile
2037
 
        {
2038
 
        my $f; my $p; my %m; my @a; my $k; my $ff;
2039
 
        ($f,$p,%m)=@_;
2040
 
 
2041
 
        open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n";
2042
 
        @a=<IN>;
2043
 
        close(IN);
2044
 
        foreach $k (keys %m)
2045
 
                {
2046
 
                grep(/$k/ && ($_=sprintf($m{$k}."\n",$p)),@a);
2047
 
                }
2048
 
        open(OUT,">$f.new") || die "unable to open $f.new:$!\n";
2049
 
        print OUT @a;
2050
 
        close(OUT);
2051
 
        rename($f,"$f.bak") || die "unable to rename $f\n" if -e $f;
2052
 
        rename("$f.new",$f) || die "unable to rename $f.new\n";
2053
 
        }
2054
 
 
2055
 
sub print_table_entry
2056
 
        {
2057
 
        my $target = shift;
2058
 
 
2059
 
        (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags,
2060
 
        my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj,
2061
 
        my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
2062
 
        my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag,
2063
 
        my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)=
2064
 
        split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
2065
 
                        
2066
 
        print <<EOF
2067
 
 
2068
 
*** $target
2069
 
\$cc           = $cc
2070
 
\$cflags       = $cflags
2071
 
\$unistd       = $unistd
2072
 
\$thread_cflag = $thread_cflag
2073
 
\$sys_id       = $sys_id
2074
 
\$lflags       = $lflags
2075
 
\$bn_ops       = $bn_ops
2076
 
\$cpuid_obj    = $cpuid_obj
2077
 
\$bn_obj       = $bn_obj
2078
 
\$des_obj      = $des_obj
2079
 
\$aes_obj      = $aes_obj
2080
 
\$bf_obj       = $bf_obj
2081
 
\$md5_obj      = $md5_obj
2082
 
\$sha1_obj     = $sha1_obj
2083
 
\$cast_obj     = $cast_obj
2084
 
\$rc4_obj      = $rc4_obj
2085
 
\$rmd160_obj   = $rmd160_obj
2086
 
\$rc5_obj      = $rc5_obj
2087
 
\$dso_scheme   = $dso_scheme
2088
 
\$shared_target= $shared_target
2089
 
\$shared_cflag = $shared_cflag
2090
 
\$shared_ldflag = $shared_ldflag
2091
 
\$shared_extension = $shared_extension
2092
 
\$ranlib       = $ranlib
2093
 
\$arflags      = $arflags
2094
 
EOF
2095
 
        }
2096
 
 
2097
 
sub test_sanity
2098
 
        {
2099
 
        my $errorcnt = 0;
2100
 
 
2101
 
        print STDERR "=" x 70, "\n";
2102
 
        print STDERR "=== SANITY TESTING!\n";
2103
 
        print STDERR "=== No configuration will be done, all other arguments will be ignored!\n";
2104
 
        print STDERR "=" x 70, "\n";
2105
 
 
2106
 
        foreach $target (sort keys %table)
2107
 
                {
2108
 
                @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
2109
 
 
2110
 
                if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/)
2111
 
                        {
2112
 
                        $errorcnt++;
2113
 
                        print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
2114
 
                        print STDERR "              in the previous field\n";
2115
 
                        }
2116
 
                elsif ($fields[$idx_dso_scheme+1] =~ /^(dl|dlfcn|win32|vms)$/)
2117
 
                        {
2118
 
                        $errorcnt++;
2119
 
                        print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
2120
 
                        print STDERR "              in the following field\n";
2121
 
                        }
2122
 
                elsif ($fields[$idx_dso_scheme] !~ /^(dl|dlfcn|win32|vms|)$/)
2123
 
                        {
2124
 
                        $errorcnt++;
2125
 
                        print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
2126
 
                        print STDERR "              valid values are 'dl', 'dlfcn', 'win32' and 'vms'\n";
2127
 
                        }
2128
 
                }
2129
 
        print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
2130
 
        return $errorcnt;
2131
 
        }
2132
 
 
2133
 
# Attempt to detect MSYS environment
2134
 
 
2135
 
sub is_msys
2136
 
        {
2137
 
        return 1 if (exists $ENV{"TERM"} && $ENV{"TERM"} eq "msys");
2138
 
        return 0;
2139
 
        }