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