~ubuntu-branches/ubuntu/lucid/openssl/lucid-security

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