]> git.ipfire.org Git - thirdparty/openssl.git/blame - Configure
fix function names in RSAerr calls
[thirdparty/openssl.git] / Configure
CommitLineData
a4ed5532 1:
4f9b306c 2eval 'exec perl -S $0 ${1+"$@"}'
a4ed5532
RE
3 if $running_under_some_shell;
4##
5## Configure -- OpenSSL source tree configuration script
6##
1641cb60 7
448cb8b5 8require 5.000;
1641cb60
BL
9use strict;
10
22a4f969 11# see INSTALL for instructions.
462ba4f6 12
3642f632 13my $usage="Usage: Configure [no-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-engine] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [[no-]fips] [debug] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n";
462ba4f6 14
434c5dd3 15# Options:
e5f3045f 16#
462ba4f6
UM
17# --openssldir install OpenSSL in OPENSSLDIR (Default: DIR/ssl if the
18# --prefix option is given; /usr/local/ssl otherwise)
19# --prefix prefix for the OpenSSL include, lib and bin directories
20# (Default: the OPENSSLDIR directory)
e5f3045f
BM
21#
22# --install_prefix Additional prefix for package builders (empty by
23# default). This needn't be set in advance, you can
24# just as well use "make INSTALL_PREFIX=/whatever install".
25#
f9b3bff6
RL
26# --with-krb5-dir Declare where Kerberos 5 lives. The libraries are expected
27# to live in the subdirectory lib/ and the header files in
e452de9d
RL
28# include/. A value is required.
29# --with-krb5-lib Declare where the Kerberos 5 libraries live. A value is
30# required.
f9b3bff6 31# (Default: KRB5_DIR/lib)
e452de9d
RL
32# --with-krb5-include Declare where the Kerberos 5 header files live. A
33# value is required.
f9b3bff6
RL
34# (Default: KRB5_DIR/include)
35# --with-krb5-flavor Declare what flavor of Kerberos 5 is used. Currently
e452de9d 36# supported values are "MIT" and "Heimdal". A value is required.
f9b3bff6 37#
d0d046ec
RL
38# --test-sanity Make a number of sanity checks on the data in this file.
39# This is a debugging tool for OpenSSL developers.
40#
6d85cd36 41# no-engine do not compile in any engine code.
5270e702
RL
42# no-hw-xxx do not compile support for specific crypto hardware.
43# Generic OpenSSL-style methods relating to this support
44# are always compiled but return NULL if the hardware
45# support isn't compiled.
46# no-hw do not compile support for any crypto hardware.
5f8d5c96
BM
47# [no-]threads [don't] try to create a library that is suitable for
48# multithreaded applications (default is "threads" if we
49# know how to do it)
fcc6a1c4 50# [no-]shared [don't] try to create shared libraries when supported.
a723979d 51# no-asm do not use assembler
bc2aadad
GT
52# no-dso do not compile in any native shared-library methods. This
53# will ensure that all methods just return NULL.
f9b3bff6 54# no-krb5 do not compile in any KRB5 library or code.
e452de9d
RL
55# [no-]zlib [don't] compile support for zlib compression.
56# zlib-dynamic Like "zlib", but the zlib library is expected to be a shared
57# library and will be loaded in run-time by the OpenSSL library.
22a4f969 58# 386 generate 80386 code
79df9d62 59# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...)
afd1f9e8 60# -<xxx> +<xxx> compiler options are passed through
e41c8d6a
GT
61#
62# DEBUG_SAFESTACK use type-safe stacks to enforce type-safety on stack items
63# provided to stack calls. Generates unique stack functions for
64# each possible stack type.
d02b48c6
RE
65# DES_PTR use pointer lookup vs arrays in the DES in crypto/des/des_locl.h
66# DES_RISC1 use different DES_ENCRYPT macro that helps reduce register
67# dependancies but needs to more registers, good for RISC CPU's
68# DES_RISC2 A different RISC variant.
69# DES_UNROLL unroll the inner DES loop, sometimes helps, somtimes hinders.
70# DES_INT use 'int' instead of 'long' for DES_LONG in crypto/des/des.h
71# This is used on the DEC Alpha where long is 8 bytes
72# and int is 4
73# BN_LLONG use the type 'long long' in crypto/bn/bn.h
58964a49
RE
74# MD2_CHAR use 'char' instead of 'int' for MD2_INT in crypto/md2/md2.h
75# MD2_LONG use 'long' instead of 'int' for MD2_INT in crypto/md2/md2.h
d02b48c6
RE
76# IDEA_SHORT use 'short' instead of 'int' for IDEA_INT in crypto/idea/idea.h
77# IDEA_LONG use 'long' instead of 'int' for IDEA_INT in crypto/idea/idea.h
78# RC2_SHORT use 'short' instead of 'int' for RC2_INT in crypto/rc2/rc2.h
79# RC2_LONG use 'long' instead of 'int' for RC2_INT in crypto/rc2/rc2.h
80# RC4_CHAR use 'char' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
81# RC4_LONG use 'long' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
58964a49 82# RC4_INDEX define RC4_INDEX in crypto/rc4/rc4_locl.h. This turns on
d02b48c6 83# array lookups instead of pointer use.
2dae04d0
AP
84# RC4_CHUNK enables code that handles data aligned at long (natural CPU
85# word) boundary.
86# RC4_CHUNK_LL enables code that handles data aligned at long long boundary
87# (intended for 64-bit CPUs running 32-bit OS).
d02b48c6 88# BF_PTR use 'pointer arithmatic' for Blowfish (unsafe on Alpha).
995e79e3 89# BF_PTR2 intel specific version (generic version is more efficient).
58964a49
RE
90# MD5_ASM use some extra md5 assember,
91# SHA1_ASM use some extra sha1 assember, must define L_ENDIAN for x86
92# RMD160_ASM use some extra ripemd160 assember,
d02b48c6 93
1641cb60 94my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
d02b48c6
RE
95
96# MD2_CHAR slags pentium pros
995e79e3 97my $x86_gcc_opts="RC4_INDEX MD2_INT";
d02b48c6
RE
98
99# MODIFY THESE PARAMETERS IF YOU ARE GOING TO USE THE 'util/speed.sh SCRIPT
100# Don't worry about these normally
101
1641cb60
BL
102my $tcc="cc";
103my $tflags="-fast -Xa";
104my $tbn_mul="";
105my $tlib="-lnsl -lsocket";
d02b48c6
RE
106#$bits1="SIXTEEN_BIT ";
107#$bits2="THIRTY_TWO_BIT ";
1641cb60
BL
108my $bits1="THIRTY_TWO_BIT ";
109my $bits2="SIXTY_FOUR_BIT ";
d02b48c6 110
1641cb60
BL
111my $x86_elf_asm="asm/bn86-elf.o asm/co86-elf.o:asm/dx86-elf.o asm/yx86-elf.o:asm/bx86-elf.o:asm/mx86-elf.o:asm/sx86-elf.o:asm/cx86-elf.o:asm/rx86-elf.o:asm/rm86-elf.o:asm/r586-elf.o";
112my $x86_out_asm="asm/bn86-out.o asm/co86-out.o:asm/dx86-out.o asm/yx86-out.o:asm/bx86-out.o:asm/mx86-out.o:asm/sx86-out.o:asm/cx86-out.o:asm/rx86-out.o:asm/rm86-out.o:asm/r586-out.o";
113my $x86_bsdi_asm="asm/bn86bsdi.o asm/co86bsdi.o:asm/dx86bsdi.o asm/yx86bsdi.o:asm/bx86bsdi.o:asm/mx86bsdi.o:asm/sx86bsdi.o:asm/cx86bsdi.o:asm/rx86bsdi.o:asm/rm86bsdi.o:asm/r586bsdi.o";
58964a49 114
71a39dd4 115my $mips3_irix_asm="asm/mips3.o::::::::";
a77e023a
RL
116# There seems to be boundary faults in asm/alpha.s.
117#my $alpha_asm="asm/alpha.o::::::::";
118my $alpha_asm="::::::::";
119
58964a49
RE
120# -DB_ENDIAN slows things down on a sparc for md5, but helps sha1.
121# So the md5_locl.h file has an undef B_ENDIAN if sun is defined
d02b48c6 122
a4f335ba 123#config-string $cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $bn_obj : $des_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
99e812cb 124
1641cb60 125my %table=(
36124b10
BM
126# File 'TABLE' (created by 'make TABLE') contains the data from this list,
127# formatted for better readability.
128
129
b7e16361
RL
130#"b", "${tcc}:${tflags}::${tlib}:${bits1}:${tbn_mul}::",
131#"bl-4c-2c", "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR MD2_CHAR:${tbn_mul}::",
132#"bl-4c-ri", "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR RC4_INDEX:${tbn_mul}::",
133#"b2-is-ri-dp", "${tcc}:${tflags}::${tlib}:${bits2}IDEA_SHORT RC4_INDEX DES_PTR:${tbn_mul}::",
d02b48c6 134
22a4f969 135# Our development configs
cf1b7d96 136"purify", "purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
fc0f3ad2 137"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::::",
3642f632 138"debug-ben", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -O2 -Wall -Wshadow -Werror -pipe::(unknown)::::asm/bn86-elf.o asm/co86-elf.o",
c518ade1 139"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)::::",
9dd5ae65 140"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)::::",
3642f632 141"debug-ben-debug", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -g3 -O2 -Wall -Wshadow -Werror -pipe::(unknown)::::::",
cf1b7d96 142"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)::::::",
3642f632 143"debug-ben-fips-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_FIPS -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::asm/bn86-elf.o asm/co86-elf.o",
cf1b7d96 144"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
94cb5ee6 145"debug-bodo", "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -m486 -pedantic -Wshadow -Wall::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
50135402 146"debug-ulf", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -g -O2 -m486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT:::${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
14e21742 147"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -mcpu=i486 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
4eceda65 148"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::dlfcn",
44ee32ed
RL
149"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wmissing-prototypes -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
150"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wmissing-prototypes -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
151"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wmissing-prototypes -Wconversion -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
152"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wmissing-prototypes -Wconversion -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
cf1b7d96 153"dist", "cc:-O::(unknown)::::::",
d02b48c6 154
f8bbcf3a 155# Basic configs that should work on any (32 and less bit) box
cf1b7d96
RL
156"gcc", "gcc:-O3::(unknown):::BN_LLONG:::",
157"cc", "cc:-O::(unknown)::::::",
d02b48c6 158
83f22920
RL
159####VOS Configurations
160"vos-gcc","gcc:-b hppa1.1-stratus-vos -O3 -Wall -Wuninitialized -D_POSIX_C_SOURCE=200112L -D_BSD::(unknown):VOS:-Wl,-map:BN_LLONG:::::::::::::.so:",
161"debug-vos-gcc","gcc:-b hppa1.1-stratus-vos -O0 -g -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:::::::::::::.so:",
162"vos-vcc","vcc:-b i386-stratus-vos -O3 -D_POSIX_C_SOURCE=200112L -D_BSD::(unknown):VOS:-Wl,-map::::::::::::::.so:",
163"debug-vos-vcc","vcc:-b i386-stratus-vos -O0 -g -D_POSIX_C_SOURCE=200112L -D_BSD -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map::::::::::::::.so:",
164
cf2d9e09 165#### Solaris x86 with GNU C setups
cf1b7d96 166# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
f8bbcf3a
AP
167# here because whenever GNU C instantiates an assembler template it
168# surrounds it with #APP #NO_APP comment pair which (at least Solaris
169# 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic"
170# error message.
fb706070 171"solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -m486 -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)",
631bae47
AP
172# -shared -static-libgcc might appear controversial, but modules taken
173# from static libgcc do not have relocations and linking them into our
174# shared objects doesn't have any negative side-effects. On the contrary,
175# doing so makes it possible to use gcc shared build with Sun C. Given
176# that gcc generates faster code [thanks to inline assembler], I would
177# actually recommend to consider using gcc shared build even with vendor
178# compiler:-)
179# <appro@fy.chalmers.se>
3380c456 180"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 RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:asm/x86_64-gcc.o::::::asm/rc4-x86_64.o:::dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
22a4f969 181
cf2d9e09 182#### Solaris x86 with Sun C setups
ee2bf876 183"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
3380c456 184"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL::::::::::dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
cf2d9e09 185
1656ef29 186#### SPARC Solaris with GNU C setups
bb38cd49
AP
187"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::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
188"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:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
ac7b4261 189# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
bb38cd49
AP
190"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:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
191"solaris64-sparcv9-gcc31","gcc:-mcpu=ultrasparc -m64 -O3 -fomit-frame-pointer -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::::asm/md5-sparcv9.o::::::dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
1656ef29
AP
192# gcc pre-2.8 doesn't understand -mcpu=ultrasparc, so fall down to -mv8
193# but keep the assembler modules.
bb38cd49
AP
194"solaris-sparcv9-gcc27","gcc:-mv8 -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:asm/sparcv8plus-gcc27.o:::asm/md5-sparcv8plus-gcc27.o::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
195"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::::asm/md5-sparcv9.o::::::dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
ac7b4261 196
1656ef29 197####
bb38cd49
AP
198"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_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:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
199"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mcpu=ultrasparc -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
1656ef29
AP
200
201#### SPARC Solaris with Sun C setups
f223f0c0 202# DO NOT use /xO[34] on sparc with SC3.0. It is broken, and will not pass the tests
ee2bf876 203"solaris-sparc-sc3","cc:-fast -O -Xa -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
1656ef29
AP
204# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
205# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
5a2e24ba 206# SC5.0 note: Compiler common patch 107357-01 or later is required!
ee2bf876 207"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::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
3dd56992 208"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:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
ee2bf876
AP
209"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:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
210"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::::asm/md5-sparcv9.o::::::dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
d0f2876c 211####
ee2bf876
AP
212"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_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:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
213"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_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:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
d02b48c6 214
a0618e3e 215#### SPARC Linux setups
cf1b7d96 216"linux-sparcv7","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::",
a0618e3e
AP
217# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
218# assisted with debugging of following two configs.
7d8b5c53 219"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:asm/sparcv8.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
a0618e3e
AP
220# it's a real mess with -mcpu=ultrasparc option under Linux, but
221# -Wa,-Av8plus should do the trick no matter what.
7d8b5c53 222"linux-sparcv9","gcc:-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:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
b1d4b48d
AP
223# GCC 3.1 is a requirement
224"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::::asm/md5-sparcv9.o::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
a0618e3e 225
d02b48c6 226# Sunos configs, assuming sparc for the gcc one.
7ab58bf0
RL
227##"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:::",
228"sunos-gcc","gcc:-O3 -mv8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:::",
d02b48c6 229
da8fa72f
AP
230#### IRIX 5.x configs
231# -mips2 flag is added by ./config when appropriate.
a5595fde
RL
232"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::::::::::dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
233"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::::::::::dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
da8fa72f
AP
234#### IRIX 6.x configs
235# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
387fd00c 236# './Configure irix-cc -o32' manually.
da8fa72f 237# -mips4 flag is added by ./config when appropriate.
387fd00c
AP
238"irix-mips3-gcc","gcc:-mabi=n32 -mmips-as -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:${mips3_irix_asm}:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
239"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -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:${mips3_irix_asm}:dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
da8fa72f 240# N64 ABI builds.
387fd00c
AP
241"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -mmips-as -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_irix_asm}:dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
242"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_irix_asm}:dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
d02b48c6 243
bcba6cc6
AP
244#### Unified HP-UX ANSI C configs.
245# Special notes:
246# - Originally we were optimizing at +O4 level. It should be noted
247# that the only difference between +O3 and +O4 is global inter-
248# procedural analysis. As it has to be performed during the link
249# stage the compiler leaves behind certain pseudo-code in lib*.a
250# which might be release or even patch level specific. Generating
f8bbcf3a
AP
251# the machine code for and analyzing the *whole* program appears
252# to be *extremely* memory demanding while the performance gain is
bcba6cc6
AP
253# actually questionable. The situation is intensified by the default
254# HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
255# which is way too low for +O4. In other words, doesn't +O3 make
256# more sense?
f8bbcf3a
AP
257# - Keep in mind that the HP compiler by default generates code
258# suitable for execution on the host you're currently compiling at.
259# If the toolkit is ment to be used on various PA-RISC processors
6d03b73e 260# consider './config +DAportable'.
bcba6cc6
AP
261# - +DD64 is chosen in favour of +DA2.0W because it's ment to be
262# compatible with *future* releases.
263# - If you run ./Configure hpux-parisc-[g]cc manually don't forget to
264# pass -D_REENTRANT on HP-UX 10 and later.
265# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
266# 32-bit message digests. (For the moment of this writing) HP C
267# doesn't seem to "digest" too many local variables (they make "him"
268# chew forever:-). For more details look-up MD32_XARRAY comment in
269# crypto/sha/sha_lcl.h.
270# <appro@fy.chalmers.se>
271#
cf1b7d96 272#!#"hpux-parisc-cc","cc:-Ae +O3 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl",
3bead95b 273# Since there is mention of this in shlib/hpux10-cc.sh
4182f0ff
AP
274"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
275"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
276"hpux64-parisc-cc","cc:-Ae +DD64 +O3 +ESlit -z -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
ef92312b
LJ
277# 64bit PARISC for GCC without optimization, which seems to make problems.
278# Submitted by <ross.alexander@uk.neceur.com>
4182f0ff
AP
279"hpux64-parisc-gcc","gcc:-DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
280"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/pa-risc2W.o:::::::::dlfcn:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
bcba6cc6 281
6d03b73e 282# IA-64 targets
07cc19fc 283"hpux-ia64-cc","cc:-Ae +DD32 +O3 +Olit=all -z -DB_ENDIAN::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:hpux-shared:+Z:-b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
6d03b73e
AP
284# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with
285# with debugging of the following config.
07cc19fc 286"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
6d03b73e 287
d0c2ebf4
RL
288# More attempts at unified 10.X and 11.X targets for HP C compiler.
289#
290# Chris Ruemmler <ruemmler@cup.hp.com>
291# Kevin Steves <ks@hp.se>
4182f0ff
AP
292"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
293"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/pa-risc2.o:::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
294"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/pa-risc2W.o:::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
6d03b73e
AP
295# Isn't the line below meaningless? HP-UX cc optimizes for host by default.
296# hpux-parisc1_0-cc with +DAportable flag would make more sense. <appro>
4182f0ff 297"hpux-parisc1_1-cc","cc:+DA1.1 +DS1.1 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
d0c2ebf4 298
afd1f9e8 299# HPUX 9.X config.
3a0d23c8
UM
300# Don't use the bundled cc. It is broken. Use HP ANSI C if possible, or
301# egcs. gcc 2.8.1 is also broken.
9239e45b 302
4182f0ff 303"hpux-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O3 -z::(unknown)::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
9239e45b 304# If hpux-cc fails (e.g. during "make test"), try the next one; otherwise,
b7d7440c 305# please report your OS and compiler version to the openssl-bugs@openssl.org
9239e45b 306# mailing list.
4182f0ff 307"hpux-brokencc", "cc:-DB_ENDIAN -DBN_DIV2W -Ae +ESlit +O2 -z::(unknown)::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
9239e45b 308
4182f0ff 309"hpux-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
9239e45b 310# If hpux-gcc fails, try this one:
4182f0ff 311"hpux-brokengcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
9239e45b 312
a6977ee7
LJ
313# HPUX 9.X on Motorola 68k platforms with gcc
314"hpux-m68k-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown):::BN_LLONG DES_PTR DES_UNROLL:::::::::::::",
315
afd1f9e8 316# HPUX 10.X config. Supports threads.
4182f0ff 317"hpux10-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O3 -z::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
b5b22731 318# If hpux10-cc fails, try this one (if still fails, try deleting BN_LLONG):
4182f0ff 319"hpux10-brokencc", "cc:-DB_ENDIAN -DBN_DIV2W -Ae +ESlit +O2 -z::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
9239e45b 320
4182f0ff 321"hpux10-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
9239e45b 322# If hpux10-gcc fails, try this one:
4182f0ff 323"hpux10-brokengcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
9239e45b 324
2dae04d0
AP
325# HPUX 11.X from www.globus.org.
326# Only works on PA-RISC 2.0 cpus, and not optimized. Why?
cf1b7d96
RL
327#"hpux11-32bit-cc","cc:+DA2.0 -DB_ENDIAN -D_HPUX_SOURCE -Aa -Ae +ESlit::-D_REENTRANT:::DES_PTR DES_UNROLL DES_RISC1:::",
328#"hpux11-64bit-cc","cc:+DA2.0W -g -D_HPUX_SOURCE -Aa -Ae +ESlit::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT :::",
bcba6cc6 329# Use unified settings above instead.
d02b48c6 330
c5f8bbbc 331#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
cf1b7d96 332"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:::",
c5f8bbbc 333
95f8c719
RL
334#### PARISC Linux setups
335"linux-parisc","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::",
336
6bc847e4
RL
337# Dec Alpha, OSF/1 - the alpha164-cc is historical, for the conversion
338# from the older DEC C Compiler to the newer compiler. It's now the
339# same as the preferred entry, alpha-cc. If you are still using the
340# older compiler (you're at 3.x or earlier, or perhaps very early 4.x)
341# you should use `alphaold-cc'.
342#
343# "What's in a name? That which we call a rose
344# By any other word would smell as sweet."
345#
346# - William Shakespeare, "Romeo & Juliet", Act II, scene II.
347#
348# For OSF/1 3.2b and earlier, and Digital UNIX 3.2c - 3.2g, with the
349# vendor compiler, use alphaold-cc.
350# For Digital UNIX 4.0 - 4.0e, with the vendor compiler, use alpha-cc.
351# For Tru64 UNIX 4.f - current, with the vendor compiler, use alpha-cc.
352#
353# There's also an alternate target available (which `config' will never
354# select) called alpha-cc-rpath. This target builds an RPATH into the
355# shared libraries, which is very convenient on Tru64 since binaries
356# linked against that shared library will automatically inherit that RPATH,
357# and hence know where to look for the openssl libraries, even if they're in
358# an odd place.
359#
dfeab068 360# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
6bc847e4 361#
613599ff
RL
362"alpha-gcc","gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
363"alphaold-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
364"alpha164-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared:::.so",
365"alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared:::.so",
366"alpha-cc-rpath", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared-rpath:::.so",
6bc847e4
RL
367#
368# This probably belongs in a different section.
369#
a5595fde 370"FreeBSD-alpha","gcc:-DTERMIOS -O -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
a2b21737 371
bdf5e183 372#### Alpha Linux with GNU C and Compaq C setups
f8bbcf3a
AP
373# Special notes:
374# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
375# ought to run './Configure linux-alpha+bwx-gcc' manually, do
376# complement the command line with -mcpu=ev56, -mcpu=ev6 or whatever
377# which is appropriate.
378# - If you use ccc keep in mind that -fast implies -arch host and the
379# compiler is free to issue instructions which gonna make elder CPU
380# choke. If you wish to build "blended" toolkit, add -arch generic
381# *after* -fast and invoke './Configure linux-alpha-ccc' manually.
382#
383# <appro@fy.chalmers.se>
384#
a5595fde
RL
385"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
386"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
a77e023a
RL
387"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:${alpha_asm}",
388"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:${alpha_asm}",
bdf5e183 389
22a4f969 390# assembler versions -- currently defunct:
a77e023a 391##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer:::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:${alpha_asm}",
d02b48c6
RE
392
393# The intel boxes :-), It would be worth seeing if bsdi-gcc can use the
58964a49 394# bn86-elf.o file file since it is hand tweaked assembler.
a5595fde
RL
395"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
396"linux-pentium", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
397"linux-ppro", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
398"linux-k6", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -mcpu=k6 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
300e3d7c 399"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_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",
80bb905d 400"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_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",
374b2272 401"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -m486 -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)",
83f22920 402"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
b1051789 403"linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
765ca5ea
RL
404"linux-mipsel", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
405"linux-mips", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
fb39cd85
AP
406"linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:asm/linux_ppc32.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
407# -bpowerpc64-linux is transient option, -m64 should be the one to use...
408"linux-ppc64", "gcc:-bpowerpc64-linux -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:asm/linux_ppc64.o:::::::::dlfcn:linux-shared:-fPIC:-bpowerpc64-linux:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
cf1b7d96 409"linux-m68k", "gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::",
1649d5fe
RL
410"linux-s390", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
411"linux-s390x", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
07cc19fc
AP
412"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:asm/ia64.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
413"linux-ia64-ecc", "ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:asm/ia64.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
3380c456 414"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:asm/x86_64-gcc.o::::::asm/rc4-x86_64.o:::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
a5595fde
RL
415"NetBSD-sparc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
416"NetBSD-m68", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
417"NetBSD-x86", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
418"FreeBSD-elf", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::-pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
959ba907 419"FreeBSD-sparc64","gcc:-DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::-pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE:::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2 BF_PTR::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
142398d3 420"FreeBSD-ia64","gcc:-DL_ENDIAN -DTERMIOS -O -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:asm/ia64-cpp.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
b1051789
UM
421"FreeBSD", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
422"bsdi-gcc", "gcc:-O3 -ffast-math -DL_ENDIAN -DPERL5 -m486::(unknown):::RSA_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_bsdi_asm}",
a5595fde 423"bsdi-elf-gcc", "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
cf1b7d96
RL
424"nextstep", "cc:-O -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
425"nextstep3.3", "cc:-O3 -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
426
58964a49 427# NCR MP-RAS UNIX ver 02.03.01
0a3aece0 428"ncr-scde","cc:-O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw::(unknown)::-lsocket -lnsl -lc89:${x86_gcc_des} ${x86_gcc_opts}:::",
d02b48c6 429
a545c6f6 430# QNX 4
cf1b7d96 431"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
a545c6f6 432
6a9af68b
LJ
433# QNX 6
434"qnx6", "cc:-DL_ENDIAN -DTERMIOS::(unknown)::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:",
435
380d3aa6 436# Linux on ARM
086dd303
AP
437# ARM comes in both little- and big-endian flavors. The following line is
438# endian neutral, but ./config is free to throw in -D[BL]_ENDIAN...
439"linux-elf-arm","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
380d3aa6 440
fb706070
AP
441# SCO/Caldera targets.
442#
443# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
444# Now we only have blended unixware-* as it's the only one used by ./config.
445# If you want to optimize for particular microarchitecture, bypass ./config
446# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
447# Note that not all targets include assembler support. Mostly because of
448# lack of motivation to support out-of-date platforms with out-of-date
449# compiler drivers and assemblers. Tim Rice <tim@multitalents.net> has
450# patiently assisted to debug most of it.
451#
8bf49ea1 452# UnixWare 2.0x fails destest with -O
6d454e6a 453"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
6d454e6a 454"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
fb706070
AP
455"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)",
456"unixware-7-gcc","gcc:-DL_ENDIAN -DFILIO_H -O3 -fomit-frame-pointer -m486 -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)",
457"OpenUNIX-8","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)",
6076f21f 458"OpenUNIX-8-gcc","gcc:-O -DFILIO_H -fomit-frame-pointer::-pthread::-lsocket -lnsl:BN_LLONG MD2_CHAR RC4_INDEX ${x86_gcc_des}:${x86_elf_asm}:dlfcn:svr5-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
fb706070
AP
459"sco3-gcc", "gcc:-O3 -fomit-frame-pointer -Dssize_t=int -DNO_SYS_UN_H::(unknown)::-lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", # the SCO assembler doesn't seem to like our assembler files ...
460# SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the SCO cc.
2af5880c
AP
461"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)",
462"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)",
6c36f7a9 463
9a5a7401 464
d02b48c6 465# IBM's AIX.
fb39cd85
AP
466"aix3-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
467"aix-gcc", "gcc:-O3 -DB_ENDIAN::-D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR:asm/aix_ppc32.o:::::::::dlfcn:",
468"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384::-qthreaded:AIX::BN_LLONG RC4_CHAR:asm/aix_ppc32.o:::::::::dlfcn:aix-shared::-q32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
469"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:asm/aix_ppc64.o:::::::::dlfcn:aix-shared::-q64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
d02b48c6 470
58964a49 471#
a7cd5f3f 472# Cray T90 and similar (SDSC)
58964a49
RE
473# It's Big-endian, but the algorithms work properly when B_ENDIAN is NOT
474# defined. The T90 ints and longs are 8 bytes long, and apparently the
475# B_ENDIAN code assumes 4 byte ints. Fortunately, the non-B_ENDIAN and
476# non L_ENDIAN code aligns the bytes in each word correctly.
477#
478# The BIT_FIELD_LIMITS define is to avoid two fatal compiler errors:
479#'Taking the address of a bit field is not allowed. '
480#'An expression with bit field exists as the operand of "sizeof" '
481# (written by Wayne Schroeder <schroede@SDSC.EDU>)
a7cd5f3f
BM
482#
483# j90 is considered the base machine type for unicos machines,
484# so this configuration is now called "cray-j90" ...
485"cray-j90", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::",
58964a49 486
13e91dd3
RE
487#
488# Cray T3E (Research Center Juelich, beckman@acl.lanl.gov)
489#
490# The BIT_FIELD_LIMITS define was written for the C90 (it seems). I added
491# another use. Basically, the problem is that the T3E uses some bit fields
492# for some st_addr stuff, and then sizeof and address-of fails
493# I could not use the ams/alpha.o option because the Cray assembler, 'cam'
494# did not like it.
cf1b7d96 495"cray-t3e", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:::",
13e91dd3 496
d02b48c6 497# DGUX, 88100.
cf1b7d96 498"dgux-R3-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):::RC4_INDEX DES_UNROLL:::",
0da945bb 499"dgux-R4-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown)::-lnsl -lsocket:RC4_INDEX DES_UNROLL:::",
cf1b7d96 500"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}",
d02b48c6 501
1fac96e4
UM
502# Sinix/ReliantUNIX RM400
503# NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g */
374b2272 504"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::::::::::dlfcn:reliantunix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
cf1b7d96
RL
505"SINIX","cc:-O::(unknown):SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:RC4_INDEX RC4_CHAR:::",
506"SINIX-N","/usr/ucb/cc:-O2 -misaligned::(unknown)::-lucb:RC4_INDEX RC4_CHAR:::",
d02b48c6 507
a53955d8 508# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
cf1b7d96 509"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:::",
a53955d8 510
1d4581c2
BM
511# OS/390 Unix an EBCDIC-based Unix system on IBM mainframe
512# You need to compile using the c89.sh wrapper in the tools directory, because the
513# IBM compiler does not like the -L switch after any object modules.
514#
515"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:::",
516
d02b48c6
RE
517# Windows NT, Microsoft Visual C++ 4.0
518
4831e626 519"VC-NT","cl::::WINNT::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32",
29ca1645 520"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32",
4831e626 521"VC-WIN32","cl::::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32",
cf1b7d96
RL
522"VC-WIN16","cl:::(unknown):WIN16::MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::",
523"VC-W31-16","cl:::(unknown):WIN16::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::",
524"VC-W31-32","cl::::WIN16::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::",
525"VC-MSDOS","cl:::(unknown):MSDOS::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::",
d02b48c6
RE
526
527# Borland C++ 4.5
2ce906ce 528"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN::::::::::win32",
cf1b7d96 529"BC-16","bcc:::(unknown):WIN16::BN_LLONG DES_PTR RC4_INDEX SIXTEEN_BIT:::",
dfeab068 530
37d9503a 531# MinGW
0b418c7d 532"mingw", "gcc:-DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -mno-cygwin -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_out_asm}:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a",
e04a6c2b 533
ab805194
RL
534# UWIN
535"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32",
536
be37dc73
RL
537# Cygwin
538"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32",
a34f2d42 539"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:cygwin-shared:-D_WINDLL::.dll.a",
be5d92e0 540
573a568d 541# DJGPP
77bc62c3 542"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}::::::::::",
573a568d 543
22a4f969 544# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
ba9cf37d 545"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
cf1b7d96 546"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::::::",
22a4f969 547# K&R C is no longer supported; you need gcc on old Ultrix installations
cf1b7d96 548##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::",
dfeab068
RE
549
550# Some OpenBSD from Bob Beck <beck@obtuse.com>
296324ea
RL
551"OpenBSD", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
552"OpenBSD-alpha", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
553"OpenBSD-i386", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
554"OpenBSD-m68k", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
555"OpenBSD-m88k", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
556"OpenBSD-mips", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
557"OpenBSD-powerpc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
558"OpenBSD-sparc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
559"OpenBSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2 BF_PTR::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
560"OpenBSD-vax", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
374b2272 561"OpenBSD-hppa", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
22a4f969 562
9b7a552f 563##### MacOS X (a.k.a. Rhapsody or Darwin) setup
baaeac30 564"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
ee2bf876 565"darwin-ppc-cc","cc:-O3 -fomit-frame-pointer -DB_ENDIAN::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/osx_ppc32.o:::::::::dlfcn:darwin-shared:-fPIC -fno-common::.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
a0a82def 566"darwin-i386-cc","cc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::::::::::darwin-shared:-fPIC::.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
0fad6cb7 567
707e0986
RL
568##### A/UX
569"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
570
72660f5f 571##### Sony NEWS-OS 4.x
cf1b7d96 572"newsos4-gcc","gcc:-O -DB_ENDIAN::(unknown):NEWS4:-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::",
72660f5f 573
10a2975a 574##### GNU Hurd
b1051789 575"hurd-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC",
10a2975a 576
dc01b6b1
RL
577##### OS/2 EMX
578"OS2-EMX", "gcc::::::::",
579
fb67f40f
RL
580##### VxWorks for various targets
581"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
6b7a46b7
RL
582"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:::::",
583"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 -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
16d2a7ca
RL
584"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
585"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::::::::::::::::ranlibmips:",
fb67f40f 586
9421f1ab
RL
587##### Compaq Non-Stop Kernel (Tandem)
588"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
589
d02b48c6
RE
590);
591
29ca1645
RL
592my @WinTargets=qw(VC-NT VC-CE VC-WIN32 VC-WIN16 VC-W31-16 VC-W31-32 VC-MSDOS
593 BC-32 BC-16 Mingw32 OS2-EMX);
efadf60f 594
d0d046ec
RL
595my $idx = 0;
596my $idx_cc = $idx++;
597my $idx_cflags = $idx++;
598my $idx_unistd = $idx++;
599my $idx_thread_cflag = $idx++;
600my $idx_sys_id = $idx++;
601my $idx_lflags = $idx++;
602my $idx_bn_ops = $idx++;
603my $idx_bn_obj = $idx++;
604my $idx_des_obj = $idx++;
605my $idx_bf_obj = $idx++;
606my $idx_md5_obj = $idx++;
607my $idx_sha1_obj = $idx++;
608my $idx_cast_obj = $idx++;
609my $idx_rc4_obj = $idx++;
610my $idx_rmd160_obj = $idx++;
611my $idx_rc5_obj = $idx++;
612my $idx_dso_scheme = $idx++;
613my $idx_shared_target = $idx++;
614my $idx_shared_cflag = $idx++;
615my $idx_shared_ldflag = $idx++;
616my $idx_shared_extension = $idx++;
617my $idx_ranlib = $idx++;
a4f335ba 618my $idx_arflags = $idx++;
d0d046ec 619
e5f3045f 620my $prefix="";
462ba4f6 621my $openssldir="";
967d95f0 622my $exe_ext="";
e5f3045f 623my $install_prefix="";
fcdf1d3f 624my $fipslibdir="/usr/local/ssl/lib";
234f2f67 625my $baseaddr="0xFB00000";
5f8d5c96 626my $no_threads=0;
b436a982 627my $no_shared=1;
b1051789 628my $zlib=0;
f9b3bff6 629my $no_krb5=0;
5f8d5c96 630my $threads=0;
1641cb60 631my $no_asm=0;
bc2aadad 632my $no_dso=0;
f5d7a031 633my @skip=();
3642f632 634my $Makefile="Makefile";
1641cb60
BL
635my $des_locl="crypto/des/des_locl.h";
636my $des ="crypto/des/des.h";
637my $bn ="crypto/bn/bn.h";
638my $md2 ="crypto/md2/md2.h";
639my $rc4 ="crypto/rc4/rc4.h";
640my $rc4_locl="crypto/rc4/rc4_locl.h";
641my $idea ="crypto/idea/idea.h";
642my $rc2 ="crypto/rc2/rc2.h";
643my $bf ="crypto/bf/bf_locl.h";
644my $bn_asm ="bn_asm.o";
645my $des_enc="des_enc.o fcrypt_b.o";
3642f632 646my $fips_des_enc="fips_des_enc.o";
1641cb60
BL
647my $bf_enc ="bf_enc.o";
648my $cast_enc="c_enc.o";
649my $rc4_enc="rc4_enc.o";
650my $rc5_enc="rc5_enc.o";
651my $md5_obj="";
652my $sha1_obj="";
653my $rmd160_obj="";
2613c1fa 654my $processor="";
0396479d 655my $default_ranlib;
99aab161 656my $perl;
3642f632
BL
657my $fips=0;
658my $debug=0;
99aab161 659
b6e4dac2
RL
660my $no_ssl2=0;
661my $no_ssl3=0;
662my $no_tls1=0;
663my $no_md5=0;
664my $no_sha=0;
665my $no_rsa=0;
666my $no_dh=0;
667
462ba4f6 668&usage if ($#ARGV < 0);
d02b48c6 669
c59cb511
RL
670my $flags;
671my $depflags;
672my $openssl_algorithm_defines;
673my $openssl_thread_defines;
cf1b7d96 674my $openssl_sys_defines="";
c59cb511
RL
675my $openssl_other_defines;
676my $libs;
6c0118ee 677my $libkrb5="";
c59cb511
RL
678my $target;
679my $options;
680my $symlink;
573a568d 681my $make_depend=0;
f9b3bff6 682my %withargs=();
c59cb511
RL
683
684my @argvcopy=@ARGV;
685my $argvstring="";
686my $argv_unprocessed=1;
687
688while($argv_unprocessed)
d02b48c6 689 {
c59cb511
RL
690 $flags="";
691 $depflags="";
692 $openssl_algorithm_defines="";
693 $openssl_thread_defines="";
cf1b7d96 694 $openssl_sys_defines="";
c59cb511
RL
695 $openssl_other_defines="";
696 $libs="";
697 $target="";
698 $options="";
699 $symlink=1;
700
701 $argv_unprocessed=0;
702 $argvstring=join(' ',@argvcopy);
703
704PROCESS_ARGS:
705 foreach (@argvcopy)
f5d7a031 706 {
c59cb511 707 s /^-no-/no-/; # some people just can't read the instructions
d0d046ec
RL
708 if (/^--test-sanity$/)
709 {
710 exit(&test_sanity());
711 }
712 elsif (/^no-asm$/)
c59cb511
RL
713 {
714 $no_asm=1;
cf1b7d96
RL
715 $flags .= "-DOPENSSL_NO_ASM ";
716 $openssl_other_defines .= "#define OPENSSL_NO_ASM\n";
50ccbc13 717 }
cc811b1d
RL
718 elsif (/^no-err$/)
719 {
720 $flags .= "-DOPENSSL_NO_ERR ";
721 $openssl_other_defines .= "#define OPENSSL_NO_ERR\n";
722 }
5270e702
RL
723 elsif (/^no-hw-(.+)$/)
724 {
725 my $hw=$1;
726 $hw =~ tr/[a-z]/[A-Z]/;
cf1b7d96
RL
727 $flags .= "-DOPENSSL_NO_HW_$hw ";
728 $openssl_other_defines .= "#define OPENSSL_NO_HW_$hw\n";
5270e702
RL
729 }
730 elsif (/^no-hw$/)
731 {
cf1b7d96
RL
732 $flags .= "-DOPENSSL_NO_HW ";
733 $openssl_other_defines .= "#define OPENSSL_NO_HW\n";
5270e702 734 }
c59cb511
RL
735 elsif (/^no-dso$/)
736 { $no_dso=1; }
f9b3bff6
RL
737 elsif (/^no-krb5$/)
738 { $no_krb5=1; }
c59cb511
RL
739 elsif (/^no-threads$/)
740 { $no_threads=1; }
741 elsif (/^threads$/)
742 { $threads=1; }
743 elsif (/^no-shared$/)
744 { $no_shared=1; }
d268511c 745 elsif (/^shared$/ || /^-shared$/ || /^--shared$/)
c59cb511 746 { $no_shared=0; }
e452de9d
RL
747 elsif (/^no-zlib$/)
748 { $zlib=0; }
749 elsif (/^zlib$/)
750 { $zlib=1; }
751 elsif (/^zlib-dynamic$/)
752 { $zlib=2; }
c59cb511
RL
753 elsif (/^no-symlinks$/)
754 { $symlink=0; }
b6e4dac2
RL
755 elsif (/^no-ssl$/)
756 { $no_ssl2 = $no_ssl3 = 1; }
757 elsif (/^no-ssl2$/)
758 { $no_ssl2 = 1; }
759 elsif (/^no-ssl3$/)
760 { $no_ssl3 = 1; }
761 elsif (/^no-tls1?$/)
762 { $no_tls1 = 1; }
3642f632
BL
763 elsif (/^no-fips$/)
764 { $fips = 0; }
c59cb511 765 elsif (/^no-(.+)$/)
d02b48c6 766 {
c59cb511
RL
767 my $algo=$1;
768 push @skip,$algo;
769 $algo =~ tr/[a-z]/[A-Z]/;
cf1b7d96
RL
770 $flags .= "-DOPENSSL_NO_$algo ";
771 $depflags .= "-DOPENSSL_NO_$algo ";
772 $openssl_algorithm_defines .= "#define OPENSSL_NO_$algo\n";
ef3dc028
BM
773 if ($algo eq "RIJNDAEL")
774 {
17d4f076 775 push @skip, "aes";
ef3dc028
BM
776 $flags .= "-DOPENSSL_NO_AES ";
777 $depflags .= "-DOPENSSL_NO_AES ";
778 $openssl_algorithm_defines .= "#define OPENSSL_NO_AES\n";
779 }
c59cb511
RL
780 if ($algo eq "DES")
781 {
782 push @skip, "mdc2";
783 $options .= " no-mdc2";
cf1b7d96
RL
784 $flags .= "-DOPENSSL_NO_MDC2 ";
785 $depflags .= "-DOPENSSL_NO_MDC2 ";
786 $openssl_algorithm_defines .= "#define OPENSSL_NO_MDC2\n";
c59cb511 787 }
b6e4dac2
RL
788 if ($algo eq "MD5")
789 {
790 $no_md5 = 1;
791 }
792 if ($algo eq "SHA")
793 {
794 $no_sha = 1;
795 }
796 if ($algo eq "RSA")
797 {
798 $no_rsa = 1;
799 }
800 if ($algo eq "DH")
801 {
802 $no_dh = 1;
803 }
d02b48c6 804 }
c59cb511 805 elsif (/^reconfigure/ || /^reconf/)
d02b48c6 806 {
c59cb511
RL
807 if (open(IN,"<$Makefile"))
808 {
809 while (<IN>)
810 {
dd4263d9 811 chomp;
c59cb511
RL
812 if (/^CONFIGURE_ARGS=(.*)/)
813 {
814 $argvstring=$1;
815 @argvcopy=split(' ',$argvstring);
816 die "Incorrect data to reconfigure, please do a normal configuration\n"
817 if (grep(/^reconf/,@argvcopy));
818 print "Reconfiguring with: $argvstring\n";
819 $argv_unprocessed=1;
820 close(IN);
821 last PROCESS_ARGS;
822 }
823 }
824 close(IN);
825 }
826 die "Insufficient data to reconfigure, please do a normal configuration\n";
d02b48c6 827 }
c59cb511
RL
828 elsif (/^386$/)
829 { $processor=386; }
3642f632
BL
830 elsif (/^fips$/)
831 {
832 $fips=1;
833 }
834 elsif (/^debug$/)
835 {
836 $debug=1;
837 }
c59cb511 838 elsif (/^rsaref$/)
3eb0ed6d 839 {
ccb9643f
RL
840 # No RSAref support any more since it's not needed.
841 # The check for the option is there so scripts aren't
842 # broken
462ba4f6 843 }
c59cb511 844 elsif (/^[-+]/)
462ba4f6 845 {
c59cb511
RL
846 if (/^-[lL](.*)$/)
847 {
848 $libs.=$_." ";
849 }
850 elsif (/^-[^-]/ or /^\+/)
851 {
852 $flags.=$_." ";
853 }
854 elsif (/^--prefix=(.*)$/)
855 {
856 $prefix=$1;
857 }
858 elsif (/^--openssldir=(.*)$/)
859 {
860 $openssldir=$1;
861 }
862 elsif (/^--install.prefix=(.*)$/)
863 {
864 $install_prefix=$1;
865 }
f9b3bff6
RL
866 elsif (/^--with-krb5-(dir|lib|include|flavor)=(.*)$/)
867 {
868 $withargs{"krb5-".$1}=$2;
869 }
2d96867e
DSH
870 elsif (/^--with-zlib-lib=(.*)$/)
871 {
872 $withargs{"zlib-lib"}=$1;
873 }
8d6e32a0
DSH
874 elsif (/^--with-fipslibdir=(.*)$/)
875 {
fcdf1d3f 876 $fipslibdir="$1";
8d6e32a0 877 }
234f2f67
DSH
878 elsif (/^--with-baseaddr=(.*)$/)
879 {
880 $baseaddr="$1";
881 }
2d96867e
DSH
882 elsif (/^--with-zlib-include=(.*)$/)
883 {
884 $withargs{"zlib-include"}="-I$1";
885 }
c59cb511
RL
886 else
887 {
888 print STDERR $usage;
889 exit(1);
890 }
3eb0ed6d 891 }
c59cb511 892 elsif ($_ =~ /^([^:]+):(.+)$/)
e5f3045f 893 {
c59cb511
RL
894 eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string
895 $target=$1;
e5f3045f 896 }
d02b48c6
RE
897 else
898 {
7c0341db 899 die "target already defined - $target (offending arg: $_)\n" if ($target ne "");
c59cb511
RL
900 $target=$_;
901 }
902 unless ($_ eq $target) {
903 if ($options eq "") {
904 $options = $_;
905 } else {
906 $options .= " ".$_;
d02b48c6 907 }
fbabb752
BM
908 }
909 }
462ba4f6 910}
d02b48c6 911
b6e4dac2
RL
912$no_ssl3=1 if ($no_md5 || $no_sha);
913$no_ssl3=1 if ($no_rsa && $no_dh);
914
915$no_ssl2=1 if ($no_md5);
916$no_ssl2=1 if ($no_rsa);
917
918$no_tls1=1 if ($no_md5 || $no_sha);
919$no_tls1=1 if ($no_dh);
920
921if ($no_ssl2)
922 {
923 push @skip,"SSL2";
924 $flags .= "-DOPENSSL_NO_SSL2 ";
925 $depflags .= "-DOPENSSL_NO_SSL2 ";
926 $openssl_algorithm_defines .= "#define OPENSSL_NO_SSL2\n";
927 }
928
929if ($no_ssl3)
930 {
931 push @skip,"SSL3";
932 $flags .= "-DOPENSSL_NO_SSL3 ";
933 $depflags .= "-DOPENSSL_NO_SSL3 ";
934 $openssl_algorithm_defines .= "#define OPENSSL_NO_SSL3\n";
935 }
936
937if ($no_tls1)
938 {
939 push @skip,"TLS1";
940 $flags .= "-DOPENSSL_NO_TLS1 ";
941 $depflags .= "-DOPENSSL_NO_TLS1 ";
942 $openssl_algorithm_defines .= "#define OPENSSL_NO_TLS1\n";
943 }
944
436a376b
BM
945if ($target eq "TABLE") {
946 foreach $target (sort keys %table) {
947 print_table_entry($target);
948 }
436a376b
BM
949 exit 0;
950}
951
10a926c1
UM
952if ($target eq "LIST") {
953 foreach (sort keys %table) {
954 print;
955 print "\n";
956 }
957 exit 0;
958}
959
be37dc73
RL
960if ($target =~ m/^CygWin32(-.*)$/) {
961 $target = "Cygwin".$1;
962}
963
c59cb511
RL
964print "Configuring for $target\n";
965
462ba4f6
UM
966&usage if (!defined($table{$target}));
967
a1e464f9
DSH
968my $IsWindows=scalar grep /^$target$/,@WinTargets;
969
4aaa4f26 970$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
83f22920 971$exe_ext=".pm" if ($target eq "vos-gcc" or $target eq "debug-vos-gcc" or $target eq "vos-vcc" or $target eq "debug-vos-vcc");
e5f3045f
BM
972$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
973$prefix=$openssldir if $prefix eq "";
462ba4f6 974
83f22920
RL
975$default_ranlib= &which("ranlib") or $default_ranlib="true";
976$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
977 or $perl="perl";
978
462ba4f6 979chop $openssldir if $openssldir =~ /\/$/;
e5f3045f 980chop $prefix if $prefix =~ /\/$/;
462ba4f6 981
e5f3045f 982$openssldir=$prefix . "/ssl" if $openssldir eq "";
573a568d 983$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
d02b48c6 984
fcdf1d3f
DSH
985if ($fips && ! -f "$fipslibdir/fipscanister.o")
986 {
987 my $fipswinerr = "";
988 $fipswinerr = <<EOF if $IsWindows;
989 Ensure that the correct path to the FIPS module directory
990has been given to the --with-fipslibdir option.
991EOF
992 print STDERR <<EOF;
993The file fipscanister.o could not be located. Please build and install the
994FIPS module using the instructions in the user guide before compiling OpenSSL
995in FIPS mode.$fipswinerr
996EOF
997 exit 1;
998 }
999
efadf60f
BL
1000
1001print "IsWindows=$IsWindows\n";
1002
d0d046ec 1003my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
4182f0ff 1004for (@fields) { s/%([\dA-Fa-f]{2})/chr(hex($1))/eg; }
d0d046ec
RL
1005my $cc = $fields[$idx_cc];
1006my $cflags = $fields[$idx_cflags];
1007my $unistd = $fields[$idx_unistd];
1008my $thread_cflag = $fields[$idx_thread_cflag];
1009my $sys_id = $fields[$idx_sys_id];
1010my $lflags = $fields[$idx_lflags];
1011my $bn_ops = $fields[$idx_bn_ops];
1012my $bn_obj = $fields[$idx_bn_obj];
1013my $des_obj = $fields[$idx_des_obj];
1014my $bf_obj = $fields[$idx_bf_obj];
bd53a054
RL
1015$md5_obj = $fields[$idx_md5_obj];
1016$sha1_obj = $fields[$idx_sha1_obj];
d0d046ec
RL
1017my $cast_obj = $fields[$idx_cast_obj];
1018my $rc4_obj = $fields[$idx_rc4_obj];
bd53a054 1019$rmd160_obj = $fields[$idx_rmd160_obj];
d0d046ec
RL
1020my $rc5_obj = $fields[$idx_rc5_obj];
1021my $dso_scheme = $fields[$idx_dso_scheme];
1022my $shared_target = $fields[$idx_shared_target];
1023my $shared_cflag = $fields[$idx_shared_cflag];
1024my $shared_ldflag = $fields[$idx_shared_ldflag];
1025my $shared_extension = $fields[$idx_shared_extension];
1026my $ranlib = $fields[$idx_ranlib];
a4f335ba 1027my $arflags = $fields[$idx_arflags];
d0d046ec 1028
dfc3b51e
RL
1029my $no_shared_warn=0;
1030
d02b48c6 1031$cflags="$flags$cflags" if ($flags ne "");
5f8d5c96 1032
f9b3bff6
RL
1033# Kerberos settings. The flavor must be provided from outside, either through
1034# the script "config" or manually.
1035if ($no_krb5
1036 || !defined($withargs{"krb5-flavor"})
1037 || $withargs{"krb5-flavor"} eq "")
1038 {
cf1b7d96 1039 $cflags="-DOPENSSL_NO_KRB5 $cflags";
5d92be8c 1040 $options.=" no-krb5" unless $no_krb5;
cf1b7d96 1041 $openssl_algorithm_defines .= "#define OPENSSL_NO_KRB5\n";
f9b3bff6
RL
1042 }
1043else
1044 {
2a1ef754 1045 my ($lresolv, $lpath, $lext);
f9b3bff6
RL
1046 if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/)
1047 {
b81ef842
RL
1048 die "Sorry, Heimdal is currently not supported\n";
1049 }
1050 ##### HACK to force use of Heimdal.
1051 ##### WARNING: Since we don't really have adequate support for Heimdal,
1052 ##### using this will break the build. You'll have to make
1053 ##### changes to the source, and if you do, please send
1054 ##### patches to openssl-dev@openssl.org
1055 if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/)
1056 {
1057 warn "Heimdal isn't really supported. Your build WILL break\n";
8826087a 1058 warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n";
f9b3bff6
RL
1059 $withargs{"krb5-dir"} = "/usr/heimdal"
1060 if $withargs{"krb5-dir"} eq "";
1061 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1062 "/lib -lgssapi -lkrb5 -lcom_err"
4f6c2bac 1063 if $withargs{"krb5-lib"} eq "" && !$IsWindows;
f9b3bff6
RL
1064 $cflags="-DKRB5_HEIMDAL $cflags";
1065 }
2a1ef754 1066 if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/)
f9b3bff6
RL
1067 {
1068 $withargs{"krb5-dir"} = "/usr/kerberos"
1069 if $withargs{"krb5-dir"} eq "";
1070 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1071 "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto"
4f6c2bac 1072 if $withargs{"krb5-lib"} eq "" && !$IsWindows;
f9b3bff6 1073 $cflags="-DKRB5_MIT $cflags";
2a1ef754
RL
1074 $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//;
1075 if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/)
1076 {
1077 $cflags="-DKRB5_MIT_OLD11 $cflags";
1078 }
1079 }
1080 LRESOLV:
1081 foreach $lpath ("/lib", "/usr/lib")
1082 {
1083 foreach $lext ("a", "so")
1084 {
1085 $lresolv = "$lpath/libresolv.$lext";
1086 last LRESOLV if (-r "$lresolv");
1087 $lresolv = "";
1088 }
f9b3bff6 1089 }
2a1ef754 1090 $withargs{"krb5-lib"} .= " -lresolv"
37ce8cff 1091 if ("$lresolv" ne "" && !$IsWindows);
f9b3bff6 1092 $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include"
2a1ef754
RL
1093 if $withargs{"krb5-include"} eq "" &&
1094 $withargs{"krb5-dir"} ne "";
f9b3bff6
RL
1095 }
1096
bc2aadad
GT
1097# The DSO code currently always implements all functions so that no
1098# applications will have to worry about that from a compilation point
1099# of view. However, the "method"s may return zero unless that platform
1100# has support compiled in for them. Currently each method is enabled
1101# by a define "DSO_<name>" ... we translate the "dso_scheme" config
1102# string entry into using the following logic;
eca57e92 1103my $dso_cflags;
bc2aadad
GT
1104if (!$no_dso && $dso_scheme ne "")
1105 {
9ec0126e 1106 $dso_scheme =~ tr/[a-z]/[A-Z]/;
bc2aadad
GT
1107 if ($dso_scheme eq "DLFCN")
1108 {
eca57e92 1109 $dso_cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H";
bc2aadad
GT
1110 }
1111 elsif ($dso_scheme eq "DLFCN_NO_H")
1112 {
eca57e92 1113 $dso_cflags = "-DDSO_DLFCN";
bc2aadad
GT
1114 }
1115 else
1116 {
eca57e92 1117 $dso_cflags = "-DDSO_$dso_scheme";
bc2aadad 1118 }
eca57e92 1119 $cflags = "$dso_cflags $cflags";
bc2aadad 1120 }
9ec0126e 1121
5f8d5c96 1122my $thread_cflags;
fb044c59 1123my $thread_defines;
5f8d5c96
BM
1124if ($thread_cflag ne "(unknown)" && !$no_threads)
1125 {
1126 # If we know how to do it, support threads by default.
1127 $threads = 1;
1128 }
1129if ($thread_cflag eq "(unknown)")
1130 {
1131 # If the user asked for "threads", hopefully they also provided
1132 # any system-dependent compiler options that are necessary.
cf1b7d96
RL
1133 $thread_cflags="-DOPENSSL_THREADS $cflags" ;
1134 $thread_defines .= "#define OPENSSL_THREADS\n";
5f8d5c96
BM
1135 }
1136else
1137 {
cf1b7d96
RL
1138 $thread_cflags="-DOPENSSL_THREADS $thread_cflag $cflags";
1139 $thread_defines .= "#define OPENSSL_THREADS\n";
a7b991bd
BM
1140# my $def;
1141# foreach $def (split ' ',$thread_cflag)
1142# {
1143# if ($def =~ s/^-D// && $def !~ /^_/)
1144# {
1145# $thread_defines .= "#define $def\n";
1146# }
1147# }
5f8d5c96
BM
1148 }
1149
c93c8d11 1150$lflags="$libs$lflags" if ($libs ne "");
d02b48c6 1151
dfeab068
RE
1152if ($no_asm)
1153 {
1154 $bn_obj=$des_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj="";
1155 $sha1_obj=$md5_obj=$rmd160_obj="";
1156 }
1157
b0e88fb1
AP
1158if (!$no_shared)
1159 {
1160 $cast_obj=""; # CAST assembler is not PIC
1161 }
1162
5f8d5c96
BM
1163if ($threads)
1164 {
e452de9d
RL
1165 $cflags=$thread_cflags;
1166 $openssl_thread_defines .= $thread_defines;
1167 }
1168
1169if ($zlib)
1170 {
1171 $cflags = "-DZLIB $cflags";
1172 $cflags = "-DZLIB_SHARED $cflags" if $zlib == 2;
08e60fc0 1173 $lflags = "$lflags -lz" if $zlib == 1;
5f8d5c96
BM
1174 }
1175
f4316c36 1176# You will find shlib_mark1 and shlib_mark2 explained in Makefile.org
a22fb399 1177my $shared_mark = "";
b0e88fb1
AP
1178if ($shared_target eq "")
1179 {
dfc3b51e 1180 $no_shared_warn = 1 if !$no_shared;
b0e88fb1
AP
1181 $no_shared = 1;
1182 }
1183if (!$no_shared)
b436a982 1184 {
a22fb399
RL
1185 if ($shared_cflag ne "")
1186 {
e0ec2d77 1187 $cflags = "$shared_cflag -DOPENSSL_PIC $cflags";
ed457c6e 1188 $shared_ldflag = "$shared_ldflag $shared_cflag" if($fips);
a22fb399 1189 }
d2dcf4f4 1190 }
b436a982 1191
cf1b7d96
RL
1192if ($sys_id ne "")
1193 {
1194 $cflags="-DOPENSSL_SYSNAME_$sys_id $cflags";
1195 $openssl_sys_defines="#define OPENSSL_SYSNAME_$sys_id\n";
1196 }
1197
0396479d
BM
1198if ($ranlib eq "")
1199 {
1200 $ranlib = $default_ranlib;
1201 }
1202
1750ebcb
DSH
1203#my ($bn1)=split(/\s+/,$bn_obj);
1204#$bn1 = "" unless defined $bn1;
1205#$bn1=$bn_asm unless ($bn1 =~ /\.o$/);
1206#$bn_obj="$bn1";
1207
1208$bn_obj = $bn_asm unless $bn_obj ne "";
dfeab068 1209
a661c172 1210my $fips_des_obj;
1ddce0be 1211my $fips_aes_obj;
a661c172 1212my $fips_sha1_obj;
3642f632
BL
1213if ($fips)
1214 {
4347c0a7 1215 if ($des_obj =~ /\-elf\.o$/)
a661c172
AP
1216 {
1217 $fips_des_obj='asm/fips-dx86-elf.o';
1218 $openssl_other_defines.="#define OPENSSL_FIPS_DES_ASM\n";
1ddce0be
AP
1219 $fips_aes_obj='asm/fips-ax86-elf.o';
1220 $openssl_other_defines.="#define OPENSSL_FIPS_AES_ASM\n";
1221 }
1222 else {
1223 $fips_des_obj=$fips_des_enc;
1224 $fips_aes_obj='fips_aes_core.o';
a661c172 1225 }
45bc841b 1226 $fips_sha1_obj='asm/fips-sx86-elf.o' if ($sha1_obj =~ /\-elf\.o$/);
3642f632
BL
1227 $des_obj=$sha1_obj="";
1228 $openssl_other_defines.="#define OPENSSL_FIPS\n";
1229 }
a661c172 1230$des_obj=$des_enc unless ($des_obj =~ /\.o$/);
58964a49
RE
1231$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/);
1232$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/);
1233$rc4_obj=$rc4_enc unless ($rc4_obj =~ /\.o$/);
1234$rc5_obj=$rc5_enc unless ($rc5_obj =~ /\.o$/);
3642f632 1235if ($sha1_obj =~ /\.o$/ || $fips_sha1_obj =~ /\.o$/)
58964a49
RE
1236 {
1237# $sha1_obj=$sha1_enc;
1238 $cflags.=" -DSHA1_ASM";
1239 }
1240if ($md5_obj =~ /\.o$/)
1241 {
1242# $md5_obj=$md5_enc;
1243 $cflags.=" -DMD5_ASM";
1244 }
1245if ($rmd160_obj =~ /\.o$/)
1246 {
1247# $rmd160_obj=$rmd160_enc;
1248 $cflags.=" -DRMD160_ASM";
1249 }
d02b48c6 1250
3642f632
BL
1251if ($debug)
1252 {
1253 $cflags.=" -g";
1254 $cflags=~s/-fomit-frame-pointer//;
1255 }
1256
578c33c0
RL
1257# "Stringify" the C flags string. This permits it to be made part of a string
1258# and works as well on command lines.
1259$cflags =~ s/([\\\"])/\\\1/g;
1260
0973910f
UM
1261my $version = "unknown";
1262my $major = "unknown";
1263my $minor = "unknown";
b436a982
RL
1264my $shlib_version_number = "unknown";
1265my $shlib_version_history = "unknown";
1266my $shlib_major = "unknown";
1267my $shlib_minor = "unknown";
0973910f
UM
1268
1269open(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n";
1270while (<IN>)
1271 {
1272 $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /;
b436a982
RL
1273 $shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/;
1274 $shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/;
0973910f
UM
1275 }
1276close(IN);
b436a982 1277if ($shlib_version_history ne "") { $shlib_version_history .= ":"; }
0973910f 1278
1fac96e4 1279if ($version =~ /(^[0-9]*)\.([0-9\.]*)/)
0973910f
UM
1280 {
1281 $major=$1;
1282 $minor=$2;
1283 }
1284
b436a982
RL
1285if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/)
1286 {
1287 $shlib_major=$1;
1288 $shlib_minor=$2;
1289 }
1290
f2d4be3b 1291open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
d24d873e
RL
1292unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
1293open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
f1d712ce 1294print OUT "### Generated automatically from Makefile.org by Configure.\n\n";
f5d7a031 1295my $sdirs=0;
d02b48c6
RE
1296while (<IN>)
1297 {
dd4263d9 1298 chomp;
f5d7a031 1299 $sdirs = 1 if /^SDIRS=/;
f5d7a031
UM
1300 if ($sdirs) {
1301 my $dir;
1302 foreach $dir (@skip) {
b6e4dac2 1303 s/([ ])$dir /\1/;
f5d7a031
UM
1304 }
1305 }
f6f0420d 1306 $sdirs = 0 unless /\\$/;
0973910f
UM
1307 s/^VERSION=.*/VERSION=$version/;
1308 s/^MAJOR=.*/MAJOR=$major/;
1309 s/^MINOR=.*/MINOR=$minor/;
b436a982
RL
1310 s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=$shlib_version_number/;
1311 s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/;
1312 s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/;
1313 s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/;
a22fb399 1314 s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
e5f3045f 1315 s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
462ba4f6 1316 s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
e5f3045f 1317 s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
dfeab068 1318 s/^PLATFORM=.*$/PLATFORM=$target/;
31ff97b2 1319 s/^OPTIONS=.*$/OPTIONS=$options/;
c59cb511 1320 s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
d02b48c6 1321 s/^CC=.*$/CC= $cc/;
cf1b7d96 1322 s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
d02b48c6 1323 s/^CFLAG=.*$/CFLAG= $cflags/;
f5d7a031 1324 s/^DEPFLAG=.*$/DEPFLAG= $depflags/;
d02b48c6 1325 s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
967d95f0 1326 s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/;
06287285 1327 s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
d02b48c6 1328 s/^DES_ENC=.*$/DES_ENC= $des_obj/;
3642f632 1329 s/^FIPS_DES_ENC=.*$/FIPS_DES_ENC= $fips_des_obj/;
1ddce0be 1330 s/^FIPS_AES_ENC=.*$/FIPS_AES_ENC= $fips_aes_obj/;
d02b48c6 1331 s/^BF_ENC=.*$/BF_ENC= $bf_obj/;
58964a49
RE
1332 s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/;
1333 s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/;
1334 s/^RC5_ENC=.*$/RC5_ENC= $rc5_obj/;
1335 s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/;
1336 s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/;
3642f632 1337 s/^FIPS_SHA1_ASM_OBJ=.*$/FIPS_SHA1_ASM_OBJ= $fips_sha1_obj/;
58964a49 1338 s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/;
2613c1fa 1339 s/^PROCESSOR=.*/PROCESSOR= $processor/;
99aab161 1340 s/^RANLIB=.*/RANLIB= $ranlib/;
a4f335ba 1341 s/^ARFLAGS=.*/ARFLAGS= $arflags/;
99aab161 1342 s/^PERL=.*/PERL= $perl/;
f9b3bff6 1343 s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
6c0118ee 1344 s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
2d96867e 1345 s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
fcdf1d3f 1346 s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
234f2f67 1347 s/^BASEADDR=.*/BASEADDR=$baseaddr/;
2d96867e 1348 s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
b436a982 1349 s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
a22fb399
RL
1350 s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
1351 s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
0fd44e2d
RL
1352 if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
1353 {
1354 my $sotmp = $1;
37ceea73
RL
1355 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/;
1356 }
1357 elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.dylib$/)
1358 {
1359 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.dylib/;
0fd44e2d
RL
1360 }
1361 elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
1362 {
1363 my $sotmp = $1;
1364 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
1365 }
37ceea73
RL
1366 elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
1367 {
1368 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/;
1369 }
a5595fde 1370 s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/;
d02b48c6
RE
1371 print OUT $_."\n";
1372 }
1373close(IN);
1374close(OUT);
d24d873e
RL
1375rename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e $Makefile;
1376rename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n";
f2d4be3b 1377
58964a49
RE
1378print "CC =$cc\n";
1379print "CFLAG =$cflags\n";
1380print "EX_LIBS =$lflags\n";
06287285 1381print "BN_ASM =$bn_obj\n";
58964a49
RE
1382print "DES_ENC =$des_obj\n";
1383print "BF_ENC =$bf_obj\n";
1384print "CAST_ENC =$cast_obj\n";
1385print "RC4_ENC =$rc4_obj\n";
1386print "RC5_ENC =$rc5_obj\n";
1387print "MD5_OBJ_ASM =$md5_obj\n";
1388print "SHA1_OBJ_ASM =$sha1_obj\n";
1389print "RMD160_OBJ_ASM=$rmd160_obj\n";
2613c1fa 1390print "PROCESSOR =$processor\n";
99aab161 1391print "RANLIB =$ranlib\n";
a4f335ba 1392print "ARFLAGS =$arflags\n";
99aab161 1393print "PERL =$perl\n";
f9b3bff6
RL
1394print "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n"
1395 if $withargs{"krb5-include"} ne "";
d02b48c6 1396
1641cb60
BL
1397my $des_ptr=0;
1398my $des_risc1=0;
1399my $des_risc2=0;
1400my $des_unroll=0;
1401my $bn_ll=0;
1402my $def_int=2;
1403my $rc4_int=$def_int;
1404my $md2_int=$def_int;
1405my $idea_int=$def_int;
1406my $rc2_int=$def_int;
1407my $rc4_idx=0;
2dae04d0 1408my $rc4_chunk=0;
1641cb60
BL
1409my $bf_ptr=0;
1410my @type=("char","short","int","long");
1411my ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0);
62dc5aad 1412my $export_var_as_fn=0;
1641cb60
BL
1413
1414my $des_int;
d02b48c6
RE
1415
1416foreach (sort split(/\s+/,$bn_ops))
1417 {
1418 $des_ptr=1 if /DES_PTR/;
1419 $des_risc1=1 if /DES_RISC1/;
1420 $des_risc2=1 if /DES_RISC2/;
1421 $des_unroll=1 if /DES_UNROLL/;
1422 $des_int=1 if /DES_INT/;
1423 $bn_ll=1 if /BN_LLONG/;
1424 $rc4_int=0 if /RC4_CHAR/;
1425 $rc4_int=3 if /RC4_LONG/;
1426 $rc4_idx=1 if /RC4_INDEX/;
2dae04d0
AP
1427 $rc4_chunk=1 if /RC4_CHUNK/;
1428 $rc4_chunk=2 if /RC4_CHUNK_LL/;
d02b48c6
RE
1429 $md2_int=0 if /MD2_CHAR/;
1430 $md2_int=3 if /MD2_LONG/;
1431 $idea_int=1 if /IDEA_SHORT/;
1432 $idea_int=3 if /IDEA_LONG/;
1433 $rc2_int=1 if /RC2_SHORT/;
1434 $rc2_int=3 if /RC2_LONG/;
1435 $bf_ptr=1 if $_ eq "BF_PTR";
1436 $bf_ptr=2 if $_ eq "BF_PTR2";
d02b48c6 1437 ($b64l,$b64,$b32,$b16,$b8)=(0,1,0,0,0) if /SIXTY_FOUR_BIT/;
58964a49 1438 ($b64l,$b64,$b32,$b16,$b8)=(1,0,0,0,0) if /SIXTY_FOUR_BIT_LONG/;
d02b48c6
RE
1439 ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0) if /THIRTY_TWO_BIT/;
1440 ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,1,0) if /SIXTEEN_BIT/;
1441 ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/;
62dc5aad 1442 $export_var_as_fn=1 if /EXPORT_VAR_AS_FN/;
d02b48c6
RE
1443 }
1444
8e10f2b3 1445open(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n";
d24d873e
RL
1446unlink("crypto/opensslconf.h.new") || die "unable to remove old crypto/opensslconf.h.new:$!\n" if -e "crypto/opensslconf.h.new";
1447open(OUT,'>crypto/opensslconf.h.new') || die "unable to create crypto/opensslconf.h.new:$!\n";
26dc267f 1448print OUT "/* opensslconf.h */\n";
fb044c59 1449print OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n";
26dc267f
BM
1450
1451print OUT "/* OpenSSL was configured with the following options: */\n";
5031a89d
RL
1452my $openssl_algorithm_defines_trans = $openssl_algorithm_defines;
1453$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n# define $1\n# endif/mg;
cf1b7d96 1454$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
fb77c6fb 1455$openssl_algorithm_defines = " /* no ciphers excluded */\n" if $openssl_algorithm_defines eq "";
cf1b7d96
RL
1456$openssl_thread_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1457$openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1458$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1459print OUT $openssl_sys_defines;
75e98d05 1460print OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n";
cf1b7d96 1461print OUT $openssl_algorithm_defines;
75e98d05 1462print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n";
cf1b7d96
RL
1463print OUT $openssl_thread_defines;
1464print OUT $openssl_other_defines,"\n";
26dc267f 1465
5031a89d
RL
1466print OUT "/* The OPENSSL_NO_* macros are also defined as NO_* if the application\n";
1467print OUT " asks for it. This is a transient feature that is provided for those\n";
1468print OUT " who haven't had the time to do the appropriate changes in their\n";
1469print OUT " applications. */\n";
1470print OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n";
1471print OUT $openssl_algorithm_defines_trans;
1472print OUT "#endif\n\n";
1473
d02b48c6
RE
1474while (<IN>)
1475 {
cd46aa4a 1476 if (/^#define\s+OPENSSLDIR/)
8e945b5e 1477 { print OUT "#define OPENSSLDIR \"$openssldir\"\n"; }
62dc5aad
RL
1478 elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
1479 { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
1480 if $export_var_as_fn;
1481 printf OUT "#%s OPENSSL_EXPORT_VAR_AS_FUNCTION\n",
1482 ($export_var_as_fn)?"define":"undef"; }
e766a681
BM
1483 elsif (/^#define\s+OPENSSL_UNISTD/)
1484 {
1485 $unistd = "<unistd.h>" if $unistd eq "";
1486 print OUT "#define OPENSSL_UNISTD $unistd\n";
1487 }
462ba4f6 1488 elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/)
d02b48c6
RE
1489 { printf OUT "#%s SIXTY_FOUR_BIT_LONG\n",($b64l)?"define":"undef"; }
1490 elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT/)
1491 { printf OUT "#%s SIXTY_FOUR_BIT\n",($b64)?"define":"undef"; }
1492 elsif (/^#((define)|(undef))\s+THIRTY_TWO_BIT/)
1493 { printf OUT "#%s THIRTY_TWO_BIT\n",($b32)?"define":"undef"; }
1494 elsif (/^#((define)|(undef))\s+SIXTEEN_BIT/)
1495 { printf OUT "#%s SIXTEEN_BIT\n",($b16)?"define":"undef"; }
1496 elsif (/^#((define)|(undef))\s+EIGHT_BIT/)
1497 { printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; }
1498 elsif (/^#((define)|(undef))\s+BN_LLONG\s*$/)
1499 { printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; }
8e10f2b3 1500 elsif (/^\#define\s+DES_LONG\s+.*/)
d02b48c6
RE
1501 { printf OUT "#define DES_LONG unsigned %s\n",
1502 ($des_int)?'int':'long'; }
8e10f2b3 1503 elsif (/^\#(define|undef)\s+DES_PTR/)
d02b48c6
RE
1504 { printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; }
1505 elsif (/^\#(define|undef)\s+DES_RISC1/)
1506 { printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; }
1507 elsif (/^\#(define|undef)\s+DES_RISC2/)
1508 { printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; }
1509 elsif (/^\#(define|undef)\s+DES_UNROLL/)
1510 { printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; }
8e10f2b3 1511 elsif (/^#define\s+RC4_INT\s/)
d02b48c6 1512 { printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; }
2dae04d0
AP
1513 elsif (/^#undef\s+RC4_CHUNK/)
1514 {
1515 printf OUT "#undef RC4_CHUNK\n" if $rc4_chunk==0;
1516 printf OUT "#define RC4_CHUNK unsigned long\n" if $rc4_chunk==1;
1517 printf OUT "#define RC4_CHUNK unsigned long long\n" if $rc4_chunk==2;
1518 }
8e10f2b3 1519 elsif (/^#((define)|(undef))\s+RC4_INDEX/)
d02b48c6 1520 { printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; }
8e7f966b
UM
1521 elsif (/^#(define|undef)\s+I386_ONLY/)
1522 { printf OUT "#%s I386_ONLY\n", ($processor == 386)?
1523 "define":"undef"; }
8e10f2b3 1524 elsif (/^#define\s+MD2_INT\s/)
d02b48c6 1525 { printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; }
8e10f2b3 1526 elsif (/^#define\s+IDEA_INT\s/)
d02b48c6 1527 {printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];}
8e10f2b3 1528 elsif (/^#define\s+RC2_INT\s/)
d02b48c6 1529 {printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];}
8e10f2b3 1530 elsif (/^#(define|undef)\s+BF_PTR/)
d02b48c6
RE
1531 {
1532 printf OUT "#undef BF_PTR\n" if $bf_ptr == 0;
1533 printf OUT "#define BF_PTR\n" if $bf_ptr == 1;
1534 printf OUT "#define BF_PTR2\n" if $bf_ptr == 2;
8e10f2b3 1535 }
d02b48c6
RE
1536 else
1537 { print OUT $_; }
1538 }
5dfc369f
UM
1539close(IN);
1540close(OUT);
d24d873e
RL
1541rename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h";
1542rename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to rename crypto/opensslconf.h.new\n";
9becf666 1543
e766a681 1544
9becf666
DSH
1545# Fix the date
1546
d02b48c6
RE
1547print "SIXTY_FOUR_BIT_LONG mode\n" if $b64l;
1548print "SIXTY_FOUR_BIT mode\n" if $b64;
1549print "THIRTY_TWO_BIT mode\n" if $b32;
1550print "SIXTEEN_BIT mode\n" if $b16;
1551print "EIGHT_BIT mode\n" if $b8;
1552print "DES_PTR used\n" if $des_ptr;
1553print "DES_RISC1 used\n" if $des_risc1;
1554print "DES_RISC2 used\n" if $des_risc2;
1555print "DES_UNROLL used\n" if $des_unroll;
1556print "DES_INT used\n" if $des_int;
1557print "BN_LLONG mode\n" if $bn_ll;
1558print "RC4 uses u$type[$rc4_int]\n" if $rc4_int != $def_int;
1559print "RC4_INDEX mode\n" if $rc4_idx;
2dae04d0
AP
1560print "RC4_CHUNK is undefined\n" if $rc4_chunk==0;
1561print "RC4_CHUNK is unsigned long\n" if $rc4_chunk==1;
1562print "RC4_CHUNK is unsigned long long\n" if $rc4_chunk==2;
d02b48c6
RE
1563print "MD2 uses u$type[$md2_int]\n" if $md2_int != $def_int;
1564print "IDEA uses u$type[$idea_int]\n" if $idea_int != $def_int;
1565print "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int;
1566print "BF_PTR used\n" if $bf_ptr == 1;
1567print "BF_PTR2 used\n" if $bf_ptr == 2;
cba5068d 1568
8e10f2b3 1569if($IsWindows) {
664b9985
BM
1570 open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h";
1571 printf OUT <<EOF;
57119943
BM
1572#ifndef MK1MF_BUILD
1573 /* auto-generated by Configure for crypto/cversion.c:
3642f632 1574 * for Unix builds, crypto/Makefile generates functional definitions;
57119943
BM
1575 * Windows builds (and other mk1mf builds) compile cversion.c with
1576 * -DMK1MF_BUILD and use definitions added to this file by util/mk1mf.pl. */
1577 #error "Windows builds (PLATFORM=$target) use mk1mf.pl-created Makefiles"
1578#endif
9e935d7e 1579EOF
8e10f2b3 1580 close(OUT);
a1e464f9 1581} else {
3642f632 1582 my $make_command = "make PERL=\'$perl\'";
573a568d
RL
1583 my $make_targets = "";
1584 $make_targets .= " links" if $symlink;
1585 $make_targets .= " depend" if $depflags ne "" && $make_depend;
6cf2012a 1586 $make_targets .= " gentests" if $symlink;
573a568d
RL
1587 (system $make_command.$make_targets) == 0 or exit $?
1588 if $make_targets ne "";
288d2fb9 1589 if ( $perl =~ m@^/@) {
439df508 1590 &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
3a4f14f3 1591 &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
288d2fb9
BM
1592 } else {
1593 # No path for Perl known ...
439df508 1594 &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
3a4f14f3 1595 &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
573a568d
RL
1596 }
1597 if ($depflags ne "" && !$make_depend) {
1598 print <<EOF;
1599
1600Since you've disabled at least one algorithm, you need to do the following
1601before building:
1602
1603 make depend
1604EOF
1605 }
8e10f2b3
UM
1606}
1607
63d3f44a
BM
1608print <<EOF;
1609
89ec98e0 1610Configured for $target.
63d3f44a 1611EOF
5f8d5c96
BM
1612
1613print <<\EOF if (!$no_threads && !$threads);
1614
1615The library could not be configured for supporting multi-threaded
1616applications as the compiler options required on this system are not known.
ff1b7e09 1617See file INSTALL for details if you need multi-threading.
ec577822
BM
1618EOF
1619
dfc3b51e
RL
1620print <<\EOF if ($no_shared_warn);
1621
1622You gave the option 'shared'. Normally, that would give you shared libraries.
1623Unfortunately, the OpenSSL configuration doesn't include shared library support
1624for this platform yet, so it will pretend you gave the option 'no-shared'. If
1625you can inform the developpers (openssl-dev\@openssl.org) how to support shared
66bca128
BM
1626libraries on this platform, they will at least look at it and try their best
1627(but please first make sure you have tried with a current version of OpenSSL).
dfc3b51e
RL
1628EOF
1629
d02b48c6
RE
1630exit(0);
1631
462ba4f6 1632sub usage
d02b48c6 1633 {
462ba4f6 1634 print STDERR $usage;
10a926c1 1635 print STDERR "\npick os/compiler from:\n";
1641cb60 1636 my $j=0;
6457ad15 1637 my $i;
10a926c1 1638 my $k=0;
6457ad15 1639 foreach $i (sort keys %table)
d02b48c6 1640 {
462ba4f6 1641 next if $i =~ /^debug/;
10a926c1
UM
1642 $k += length($i) + 1;
1643 if ($k > 78)
1644 {
1645 print STDERR "\n";
1646 $k=length($i);
1647 }
1648 print STDERR $i . " ";
462ba4f6
UM
1649 }
1650 foreach $i (sort keys %table)
1651 {
1652 next if $i !~ /^debug/;
10a926c1
UM
1653 $k += length($i) + 1;
1654 if ($k > 78)
1655 {
1656 print STDERR "\n";
1657 $k=length($i);
1658 }
1659 print STDERR $i . " ";
d02b48c6 1660 }
10a926c1 1661 print STDERR "\n\nNOTE: If in doubt, on Unix-ish systems use './config'.\n";
462ba4f6 1662 exit(1);
d02b48c6
RE
1663 }
1664
99aab161
UM
1665sub which
1666 {
1667 my($name)=@_;
1668 my $path;
1669 foreach $path (split /:/, $ENV{PATH})
1670 {
83f22920 1671 if (-f "$path/$name$exe_ext" and -x _)
99aab161 1672 {
83f22920
RL
1673 return "$path/$name$exe_ext" unless ($name eq "perl" and
1674 system("$path/$name$exe_ext -e " . '\'exit($]<5.0);\''));
99aab161
UM
1675 }
1676 }
1677 }
1678
462ba4f6
UM
1679sub dofile
1680 {
1681 my $f; my $p; my %m; my @a; my $k; my $ff;
1682 ($f,$p,%m)=@_;
1683
31ff97b2 1684 open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n";
462ba4f6
UM
1685 @a=<IN>;
1686 close(IN);
1687 foreach $k (keys %m)
1688 {
1689 grep(/$k/ && ($_=sprintf($m{$k}."\n",$p)),@a);
1690 }
863fe2ec 1691 open(OUT,">$f.new") || die "unable to open $f.new:$!\n";
462ba4f6
UM
1692 print OUT @a;
1693 close(OUT);
863fe2ec
BM
1694 rename($f,"$f.bak") || die "unable to rename $f\n" if -e $f;
1695 rename("$f.new",$f) || die "unable to rename $f.new\n";
462ba4f6 1696 }
436a376b
BM
1697
1698sub print_table_entry
1699 {
1700 my $target = shift;
1701
4182f0ff
AP
1702 my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1703 for (@fields) { s/%([\dA-Fa-f]{2})/chr(hex($1))/eg; }
cf1b7d96
RL
1704 (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags,
1705 my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj,
f4b45b76 1706 my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
a22fb399 1707 my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag,
4182f0ff 1708 my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)=@fields;
436a376b
BM
1709
1710 print <<EOF
1711
1712*** $target
1713\$cc = $cc
1714\$cflags = $cflags
e766a681 1715\$unistd = $unistd
436a376b 1716\$thread_cflag = $thread_cflag
cf1b7d96 1717\$sys_id = $sys_id
436a376b
BM
1718\$lflags = $lflags
1719\$bn_ops = $bn_ops
1720\$bn_obj = $bn_obj
1721\$des_obj = $des_obj
1722\$bf_obj = $bf_obj
1723\$md5_obj = $md5_obj
1724\$sha1_obj = $sha1_obj
1725\$cast_obj = $cast_obj
1726\$rc4_obj = $rc4_obj
1727\$rmd160_obj = $rmd160_obj
1728\$rc5_obj = $rc5_obj
9ec0126e 1729\$dso_scheme = $dso_scheme
b436a982
RL
1730\$shared_target= $shared_target
1731\$shared_cflag = $shared_cflag
67d48c8c 1732\$shared_ldflag = $shared_ldflag
a22fb399 1733\$shared_extension = $shared_extension
0396479d 1734\$ranlib = $ranlib
a4f335ba 1735\$arflags = $arflags
436a376b
BM
1736EOF
1737 }
d0d046ec
RL
1738
1739sub test_sanity
1740 {
1741 my $errorcnt = 0;
1742
1743 print STDERR "=" x 70, "\n";
1744 print STDERR "=== SANITY TESTING!\n";
1745 print STDERR "=== No configuration will be done, all other arguments will be ignored!\n";
1746 print STDERR "=" x 70, "\n";
1747
1748 foreach $target (sort keys %table)
1749 {
1750 @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
4182f0ff 1751 for (@fields) { s/%([\dA-Fa-f]{2})/chr(hex($1))/eg; }
d0d046ec 1752
c9c21d3b
RL
1753 if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/)
1754 {
1755 $errorcnt++;
1756 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
1757 print STDERR " in the previous field\n";
1758 }
1759 elsif ($fields[$idx_dso_scheme+1] =~ /^(dl|dlfcn|win32|vms)$/)
1760 {
1761 $errorcnt++;
1762 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
1763 print STDERR " in the following field\n";
1764 }
1765 elsif ($fields[$idx_dso_scheme] !~ /^(dl|dlfcn|win32|vms|)$/)
d0d046ec
RL
1766 {
1767 $errorcnt++;
1768 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
1769 print STDERR " valid values are 'dl', 'dlfcn', 'win32' and 'vms'\n";
1770 }
1771 }
613599ff 1772 print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
d0d046ec
RL
1773 return $errorcnt;
1774 }