174664626SKris Kennaway: 274664626SKris Kennawayeval 'exec perl -S $0 ${1+"$@"}' 374664626SKris Kennaway if $running_under_some_shell; 474664626SKris Kennaway## 574664626SKris Kennaway## Configure -- OpenSSL source tree configuration script 674664626SKris Kennaway## 774664626SKris Kennaway 874664626SKris Kennawayrequire 5.000; 974664626SKris Kennawayuse strict; 1074664626SKris Kennaway 1174664626SKris Kennaway# see INSTALL for instructions. 1274664626SKris Kennaway 13fceca8a3SJacques Vidrinemy $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"; 1474664626SKris Kennaway 1574664626SKris Kennaway# Options: 1674664626SKris Kennaway# 1774664626SKris Kennaway# --openssldir install OpenSSL in OPENSSLDIR (Default: DIR/ssl if the 1874664626SKris Kennaway# --prefix option is given; /usr/local/ssl otherwise) 1974664626SKris Kennaway# --prefix prefix for the OpenSSL include, lib and bin directories 2074664626SKris Kennaway# (Default: the OPENSSLDIR directory) 2174664626SKris Kennaway# 2274664626SKris Kennaway# --install_prefix Additional prefix for package builders (empty by 2374664626SKris Kennaway# default). This needn't be set in advance, you can 2474664626SKris Kennaway# just as well use "make INSTALL_PREFIX=/whatever install". 2574664626SKris Kennaway# 265c87c606SMark Murray# --with-krb5-dir Declare where Kerberos 5 lives. The libraries are expected 275c87c606SMark Murray# to live in the subdirectory lib/ and the header files in 285c87c606SMark Murray# include/. A value is required. 295c87c606SMark Murray# --with-krb5-lib Declare where the Kerberos 5 libraries live. A value is 305c87c606SMark Murray# required. 315c87c606SMark Murray# (Default: KRB5_DIR/lib) 325c87c606SMark Murray# --with-krb5-include Declare where the Kerberos 5 header files live. A 335c87c606SMark Murray# value is required. 345c87c606SMark Murray# (Default: KRB5_DIR/include) 355c87c606SMark Murray# --with-krb5-flavor Declare what flavor of Kerberos 5 is used. Currently 365c87c606SMark Murray# supported values are "MIT" and "Heimdal". A value is required. 375c87c606SMark Murray# 38c1803d78SJacques Vidrine# --test-sanity Make a number of sanity checks on the data in this file. 39c1803d78SJacques Vidrine# This is a debugging tool for OpenSSL developers. 40c1803d78SJacques Vidrine# 41fceca8a3SJacques Vidrine# no-engine do not compile in any engine code. 425c87c606SMark Murray# no-hw-xxx do not compile support for specific crypto hardware. 435c87c606SMark Murray# Generic OpenSSL-style methods relating to this support 445c87c606SMark Murray# are always compiled but return NULL if the hardware 455c87c606SMark Murray# support isn't compiled. 465c87c606SMark Murray# no-hw do not compile support for any crypto hardware. 4774664626SKris Kennaway# [no-]threads [don't] try to create a library that is suitable for 4874664626SKris Kennaway# multithreaded applications (default is "threads" if we 4974664626SKris Kennaway# know how to do it) 50ddd58736SKris Kennaway# [no-]shared [don't] try to create shared libraries when supported. 5174664626SKris Kennaway# no-asm do not use assembler 52ddd58736SKris Kennaway# no-dso do not compile in any native shared-library methods. This 53ddd58736SKris Kennaway# will ensure that all methods just return NULL. 545c87c606SMark Murray# no-krb5 do not compile in any KRB5 library or code. 555c87c606SMark Murray# [no-]zlib [don't] compile support for zlib compression. 565c87c606SMark Murray# zlib-dynamic Like "zlib", but the zlib library is expected to be a shared 575c87c606SMark Murray# library and will be loaded in run-time by the OpenSSL library. 5874664626SKris Kennaway# 386 generate 80386 code 5974664626SKris Kennaway# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...) 6074664626SKris Kennaway# -<xxx> +<xxx> compiler options are passed through 6174664626SKris Kennaway# 62ddd58736SKris Kennaway# DEBUG_SAFESTACK use type-safe stacks to enforce type-safety on stack items 63ddd58736SKris Kennaway# provided to stack calls. Generates unique stack functions for 64ddd58736SKris Kennaway# each possible stack type. 6574664626SKris Kennaway# DES_PTR use pointer lookup vs arrays in the DES in crypto/des/des_locl.h 6674664626SKris Kennaway# DES_RISC1 use different DES_ENCRYPT macro that helps reduce register 6774664626SKris Kennaway# dependancies but needs to more registers, good for RISC CPU's 6874664626SKris Kennaway# DES_RISC2 A different RISC variant. 6974664626SKris Kennaway# DES_UNROLL unroll the inner DES loop, sometimes helps, somtimes hinders. 7074664626SKris Kennaway# DES_INT use 'int' instead of 'long' for DES_LONG in crypto/des/des.h 7174664626SKris Kennaway# This is used on the DEC Alpha where long is 8 bytes 7274664626SKris Kennaway# and int is 4 7374664626SKris Kennaway# BN_LLONG use the type 'long long' in crypto/bn/bn.h 7474664626SKris Kennaway# MD2_CHAR use 'char' instead of 'int' for MD2_INT in crypto/md2/md2.h 7574664626SKris Kennaway# MD2_LONG use 'long' instead of 'int' for MD2_INT in crypto/md2/md2.h 7674664626SKris Kennaway# IDEA_SHORT use 'short' instead of 'int' for IDEA_INT in crypto/idea/idea.h 7774664626SKris Kennaway# IDEA_LONG use 'long' instead of 'int' for IDEA_INT in crypto/idea/idea.h 7874664626SKris Kennaway# RC2_SHORT use 'short' instead of 'int' for RC2_INT in crypto/rc2/rc2.h 7974664626SKris Kennaway# RC2_LONG use 'long' instead of 'int' for RC2_INT in crypto/rc2/rc2.h 8074664626SKris Kennaway# RC4_CHAR use 'char' instead of 'int' for RC4_INT in crypto/rc4/rc4.h 8174664626SKris Kennaway# RC4_LONG use 'long' instead of 'int' for RC4_INT in crypto/rc4/rc4.h 8274664626SKris Kennaway# RC4_INDEX define RC4_INDEX in crypto/rc4/rc4_locl.h. This turns on 8374664626SKris Kennaway# array lookups instead of pointer use. 84f579bf8eSKris Kennaway# RC4_CHUNK enables code that handles data aligned at long (natural CPU 85f579bf8eSKris Kennaway# word) boundary. 86f579bf8eSKris Kennaway# RC4_CHUNK_LL enables code that handles data aligned at long long boundary 87f579bf8eSKris Kennaway# (intended for 64-bit CPUs running 32-bit OS). 8874664626SKris Kennaway# BF_PTR use 'pointer arithmatic' for Blowfish (unsafe on Alpha). 8974664626SKris Kennaway# BF_PTR2 intel specific version (generic version is more efficient). 9074664626SKris Kennaway# MD5_ASM use some extra md5 assember, 9174664626SKris Kennaway# SHA1_ASM use some extra sha1 assember, must define L_ENDIAN for x86 9274664626SKris Kennaway# RMD160_ASM use some extra ripemd160 assember, 9374664626SKris Kennaway 9474664626SKris Kennawaymy $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL"; 9574664626SKris Kennaway 9674664626SKris Kennaway# MD2_CHAR slags pentium pros 9774664626SKris Kennawaymy $x86_gcc_opts="RC4_INDEX MD2_INT"; 9874664626SKris Kennaway 9974664626SKris Kennaway# MODIFY THESE PARAMETERS IF YOU ARE GOING TO USE THE 'util/speed.sh SCRIPT 10074664626SKris Kennaway# Don't worry about these normally 10174664626SKris Kennaway 10274664626SKris Kennawaymy $tcc="cc"; 10374664626SKris Kennawaymy $tflags="-fast -Xa"; 10474664626SKris Kennawaymy $tbn_mul=""; 10574664626SKris Kennawaymy $tlib="-lnsl -lsocket"; 10674664626SKris Kennaway#$bits1="SIXTEEN_BIT "; 10774664626SKris Kennaway#$bits2="THIRTY_TWO_BIT "; 10874664626SKris Kennawaymy $bits1="THIRTY_TWO_BIT "; 10974664626SKris Kennawaymy $bits2="SIXTY_FOUR_BIT "; 11074664626SKris Kennaway 11174664626SKris Kennawaymy $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"; 11274664626SKris Kennawaymy $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"; 11374664626SKris Kennawaymy $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"; 11474664626SKris Kennaway 1155740a5e3SKris Kennawaymy $mips3_irix_asm="asm/mips3.o::::::::"; 1165740a5e3SKris Kennaway# There seems to be boundary faults in asm/alpha.s. 1175740a5e3SKris Kennaway#my $alpha_asm="asm/alpha.o::::::::"; 1185740a5e3SKris Kennawaymy $alpha_asm="::::::::"; 1195740a5e3SKris Kennaway 12074664626SKris Kennaway# -DB_ENDIAN slows things down on a sparc for md5, but helps sha1. 12174664626SKris Kennaway# So the md5_locl.h file has an undef B_ENDIAN if sun is defined 12274664626SKris Kennaway 1235c87c606SMark Murray#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 124f579bf8eSKris Kennaway 12574664626SKris Kennawaymy %table=( 126ddd58736SKris Kennaway# File 'TABLE' (created by 'make TABLE') contains the data from this list, 127ddd58736SKris Kennaway# formatted for better readability. 128ddd58736SKris Kennaway 129ddd58736SKris Kennaway 130f579bf8eSKris Kennaway#"b", "${tcc}:${tflags}::${tlib}:${bits1}:${tbn_mul}::", 131f579bf8eSKris Kennaway#"bl-4c-2c", "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR MD2_CHAR:${tbn_mul}::", 132f579bf8eSKris Kennaway#"bl-4c-ri", "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR RC4_INDEX:${tbn_mul}::", 133f579bf8eSKris Kennaway#"b2-is-ri-dp", "${tcc}:${tflags}::${tlib}:${bits2}IDEA_SHORT RC4_INDEX DES_PTR:${tbn_mul}::", 13474664626SKris Kennaway 13574664626SKris Kennaway# Our development configs 1365c87c606SMark Murray"purify", "purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::", 1375c87c606SMark Murray"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::::", 1385c87c606SMark Murray"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", 1395c87c606SMark Murray"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)::::", 1405c87c606SMark Murray"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)::::", 1415c87c606SMark Murray"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)::::::", 1425c87c606SMark Murray"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)::::::", 1435c87c606SMark Murray"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", 1445c87c606SMark Murray"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}", 1455c87c606SMark Murray"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}", 1465c87c606SMark Murray"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", 1475c87c606SMark Murray"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", 1485c87c606SMark Murray"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)", 1495c87c606SMark Murray"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)", 1505c87c606SMark Murray"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)", 1515c87c606SMark Murray"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)", 1525c87c606SMark Murray"dist", "cc:-O::(unknown)::::::", 15374664626SKris Kennaway 154f579bf8eSKris Kennaway# Basic configs that should work on any (32 and less bit) box 1555c87c606SMark Murray"gcc", "gcc:-O3::(unknown):::BN_LLONG:::", 1565c87c606SMark Murray"cc", "cc:-O::(unknown)::::::", 15774664626SKris Kennaway 1585c87c606SMark Murray#### Solaris x86 with GNU C setups 1595c87c606SMark Murray# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it 160f579bf8eSKris Kennaway# here because whenever GNU C instantiates an assembler template it 161f579bf8eSKris Kennaway# surrounds it with #APP #NO_APP comment pair which (at least Solaris 162f579bf8eSKris Kennaway# 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic" 163f579bf8eSKris Kennaway# error message. 164fceca8a3SJacques Vidrine"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)", 16574664626SKris Kennaway 16626d191b4SKris Kennaway#### Solaris x86 with Sun C setups 1675c87c606SMark Murray"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)", 16826d191b4SKris Kennaway 16974664626SKris Kennaway#### SPARC Solaris with GNU C setups 1705c87c606SMark Murray"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)", 1715c87c606SMark Murray"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)", 1725c87c606SMark Murray# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc 1735c87c606SMark Murray"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)", 1745c87c606SMark Murray"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)", 17574664626SKris Kennaway# gcc pre-2.8 doesn't understand -mcpu=ultrasparc, so fall down to -mv8 17674664626SKris Kennaway# but keep the assembler modules. 1775c87c606SMark Murray"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)", 1785c87c606SMark Murray"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)", 1795c87c606SMark Murray 18074664626SKris Kennaway#### 1815c87c606SMark Murray"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)", 1825c87c606SMark Murray"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)", 18374664626SKris Kennaway 18474664626SKris Kennaway#### SPARC Solaris with Sun C setups 18574664626SKris Kennaway# DO NOT use /xO[34] on sparc with SC3.0. It is broken, and will not pass the tests 1865c87c606SMark Murray"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)", 18774664626SKris Kennaway# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2. 18874664626SKris Kennaway# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8 18974664626SKris Kennaway# SC5.0 note: Compiler common patch 107357-01 or later is required! 1905c87c606SMark Murray"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)", 1915c87c606SMark Murray"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)", 1925c87c606SMark Murray"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)", 1935c87c606SMark Murray"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", 194f579bf8eSKris Kennaway#### 1955c87c606SMark Murray"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)", 1965c87c606SMark Murray"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)", 19774664626SKris Kennaway 19874664626SKris Kennaway#### SPARC Linux setups 1995c87c606SMark Murray"linux-sparcv7","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::", 20074664626SKris Kennaway# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently 20174664626SKris Kennaway# assisted with debugging of following two configs. 2025c87c606SMark Murray"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)", 20374664626SKris Kennaway# it's a real mess with -mcpu=ultrasparc option under Linux, but 20474664626SKris Kennaway# -Wa,-Av8plus should do the trick no matter what. 2055c87c606SMark Murray"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)", 2065c87c606SMark Murray# GCC 3.1 is a requirement 2075c87c606SMark Murray"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)", 20874664626SKris Kennaway 20974664626SKris Kennaway# Sunos configs, assuming sparc for the gcc one. 2105c87c606SMark Murray##"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:::", 2115c87c606SMark Murray"sunos-gcc","gcc:-O3 -mv8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:::", 21274664626SKris Kennaway 21374664626SKris Kennaway#### IRIX 5.x configs 21474664626SKris Kennaway# -mips2 flag is added by ./config when appropriate. 2155c87c606SMark Murray"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)", 2165c87c606SMark Murray"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)", 21774664626SKris Kennaway#### IRIX 6.x configs 21874664626SKris Kennaway# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke 21974664626SKris Kennaway# './Configure irix-[g]cc' manually. 22074664626SKris Kennaway# -mips4 flag is added by ./config when appropriate. 2215c87c606SMark Murray"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)", 22250ef0093SJacques Vidrine"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)", 22374664626SKris Kennaway# N64 ABI builds. 2245c87c606SMark Murray"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)", 2255c87c606SMark Murray"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)", 226f579bf8eSKris Kennaway 227f579bf8eSKris Kennaway#### Unified HP-UX ANSI C configs. 228f579bf8eSKris Kennaway# Special notes: 229f579bf8eSKris Kennaway# - Originally we were optimizing at +O4 level. It should be noted 230f579bf8eSKris Kennaway# that the only difference between +O3 and +O4 is global inter- 231f579bf8eSKris Kennaway# procedural analysis. As it has to be performed during the link 232f579bf8eSKris Kennaway# stage the compiler leaves behind certain pseudo-code in lib*.a 233f579bf8eSKris Kennaway# which might be release or even patch level specific. Generating 234f579bf8eSKris Kennaway# the machine code for and analyzing the *whole* program appears 235f579bf8eSKris Kennaway# to be *extremely* memory demanding while the performance gain is 236f579bf8eSKris Kennaway# actually questionable. The situation is intensified by the default 237f579bf8eSKris Kennaway# HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB 238f579bf8eSKris Kennaway# which is way too low for +O4. In other words, doesn't +O3 make 239f579bf8eSKris Kennaway# more sense? 240f579bf8eSKris Kennaway# - Keep in mind that the HP compiler by default generates code 241f579bf8eSKris Kennaway# suitable for execution on the host you're currently compiling at. 242f579bf8eSKris Kennaway# If the toolkit is ment to be used on various PA-RISC processors 2435c87c606SMark Murray# consider './config +DAportable'. 244f579bf8eSKris Kennaway# - +DD64 is chosen in favour of +DA2.0W because it's ment to be 245f579bf8eSKris Kennaway# compatible with *future* releases. 246f579bf8eSKris Kennaway# - If you run ./Configure hpux-parisc-[g]cc manually don't forget to 247f579bf8eSKris Kennaway# pass -D_REENTRANT on HP-UX 10 and later. 248f579bf8eSKris Kennaway# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in 249f579bf8eSKris Kennaway# 32-bit message digests. (For the moment of this writing) HP C 250f579bf8eSKris Kennaway# doesn't seem to "digest" too many local variables (they make "him" 251f579bf8eSKris Kennaway# chew forever:-). For more details look-up MD32_XARRAY comment in 252f579bf8eSKris Kennaway# crypto/sha/sha_lcl.h. 253f579bf8eSKris Kennaway# <appro@fy.chalmers.se> 254f579bf8eSKris Kennaway# 2555c87c606SMark Murray#!#"hpux-parisc-cc","cc:-Ae +O3 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl", 256f579bf8eSKris Kennaway# Since there is mention of this in shlib/hpux10-cc.sh 2575c87c606SMark Murray"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)", 2585c87c606SMark Murray"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)", 2595c87c606SMark Murray"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)", 2605c87c606SMark Murray# 64bit PARISC for GCC without optimization, which seems to make problems. 2615c87c606SMark Murray# Submitted by <ross.alexander@uk.neceur.com> 2625c87c606SMark Murray"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)", 2635c87c606SMark Murray 2645c87c606SMark Murray# IA-64 targets 265fceca8a3SJacques Vidrine"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)", 2665c87c606SMark Murray# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with 2675c87c606SMark Murray# with debugging of the following config. 268fceca8a3SJacques Vidrine"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)", 269ddd58736SKris Kennaway 270ddd58736SKris Kennaway# More attempts at unified 10.X and 11.X targets for HP C compiler. 271ddd58736SKris Kennaway# 272ddd58736SKris Kennaway# Chris Ruemmler <ruemmler@cup.hp.com> 273ddd58736SKris Kennaway# Kevin Steves <ks@hp.se> 274fceca8a3SJacques Vidrine"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)", 275fceca8a3SJacques Vidrine"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)", 276fceca8a3SJacques Vidrine"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)", 2775c87c606SMark Murray# Isn't the line below meaningless? HP-UX cc optimizes for host by default. 2785c87c606SMark Murray# hpux-parisc1_0-cc with +DAportable flag would make more sense. <appro> 279fceca8a3SJacques Vidrine"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)", 28074664626SKris Kennaway 28174664626SKris Kennaway# HPUX 9.X config. 28274664626SKris Kennaway# Don't use the bundled cc. It is broken. Use HP ANSI C if possible, or 28374664626SKris Kennaway# egcs. gcc 2.8.1 is also broken. 28474664626SKris Kennaway 2855c87c606SMark Murray"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)", 28674664626SKris Kennaway# If hpux-cc fails (e.g. during "make test"), try the next one; otherwise, 287f579bf8eSKris Kennaway# please report your OS and compiler version to the openssl-bugs@openssl.org 28874664626SKris Kennaway# mailing list. 2895c87c606SMark Murray"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)", 29074664626SKris Kennaway 2915c87c606SMark Murray"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)", 29274664626SKris Kennaway# If hpux-gcc fails, try this one: 2935c87c606SMark Murray"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)", 294a21b1b38SKris Kennaway 295a21b1b38SKris Kennaway# HPUX 9.X on Motorola 68k platforms with gcc 2965c87c606SMark Murray"hpux-m68k-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown):::BN_LLONG DES_PTR DES_UNROLL:::::::::::::", 29774664626SKris Kennaway 29874664626SKris Kennaway# HPUX 10.X config. Supports threads. 2995c87c606SMark Murray"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)", 30074664626SKris Kennaway# If hpux10-cc fails, try this one (if still fails, try deleting BN_LLONG): 3015c87c606SMark Murray"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)", 30274664626SKris Kennaway 3035c87c606SMark Murray"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)", 30474664626SKris Kennaway# If hpux10-gcc fails, try this one: 3055c87c606SMark Murray"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)", 30674664626SKris Kennaway 30774664626SKris Kennaway# HPUX 11.X from www.globus.org. 30874664626SKris Kennaway# Only works on PA-RISC 2.0 cpus, and not optimized. Why? 3095c87c606SMark Murray#"hpux11-32bit-cc","cc:+DA2.0 -DB_ENDIAN -D_HPUX_SOURCE -Aa -Ae +ESlit::-D_REENTRANT:::DES_PTR DES_UNROLL DES_RISC1:::", 3105c87c606SMark Murray#"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 :::", 311f579bf8eSKris Kennaway# Use unified settings above instead. 31274664626SKris Kennaway 313ddd58736SKris Kennaway#### HP MPE/iX http://jazz.external.hp.com/src/openssl/ 3145c87c606SMark Murray"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:::", 315ddd58736SKris Kennaway 316c1803d78SJacques Vidrine#### PARISC Linux setups 3175c87c606SMark Murray"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::", 318c1803d78SJacques Vidrine 319a21b1b38SKris Kennaway# Dec Alpha, OSF/1 - the alpha164-cc is historical, for the conversion 320a21b1b38SKris Kennaway# from the older DEC C Compiler to the newer compiler. It's now the 321a21b1b38SKris Kennaway# same as the preferred entry, alpha-cc. If you are still using the 322a21b1b38SKris Kennaway# older compiler (you're at 3.x or earlier, or perhaps very early 4.x) 323a21b1b38SKris Kennaway# you should use `alphaold-cc'. 324a21b1b38SKris Kennaway# 325a21b1b38SKris Kennaway# "What's in a name? That which we call a rose 326a21b1b38SKris Kennaway# By any other word would smell as sweet." 327a21b1b38SKris Kennaway# 328a21b1b38SKris Kennaway# - William Shakespeare, "Romeo & Juliet", Act II, scene II. 329a21b1b38SKris Kennaway# 330a21b1b38SKris Kennaway# For OSF/1 3.2b and earlier, and Digital UNIX 3.2c - 3.2g, with the 331a21b1b38SKris Kennaway# vendor compiler, use alphaold-cc. 332a21b1b38SKris Kennaway# For Digital UNIX 4.0 - 4.0e, with the vendor compiler, use alpha-cc. 333a21b1b38SKris Kennaway# For Tru64 UNIX 4.f - current, with the vendor compiler, use alpha-cc. 334a21b1b38SKris Kennaway# 335a21b1b38SKris Kennaway# There's also an alternate target available (which `config' will never 336a21b1b38SKris Kennaway# select) called alpha-cc-rpath. This target builds an RPATH into the 337a21b1b38SKris Kennaway# shared libraries, which is very convenient on Tru64 since binaries 338a21b1b38SKris Kennaway# linked against that shared library will automatically inherit that RPATH, 339a21b1b38SKris Kennaway# and hence know where to look for the openssl libraries, even if they're in 340a21b1b38SKris Kennaway# an odd place. 341a21b1b38SKris Kennaway# 34274664626SKris Kennaway# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version 343a21b1b38SKris Kennaway# 3445c87c606SMark Murray"alpha-gcc","gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so", 3455c87c606SMark Murray"alphaold-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so", 3465c87c606SMark Murray"alpha164-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared:::.so", 3475c87c606SMark Murray"alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared:::.so", 3485c87c606SMark Murray"alpha-cc-rpath", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared-rpath:::.so", 349a21b1b38SKris Kennaway# 350a21b1b38SKris Kennaway# This probably belongs in a different section. 351a21b1b38SKris Kennaway# 3525c87c606SMark Murray"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)", 353f579bf8eSKris Kennaway 354f579bf8eSKris Kennaway#### Alpha Linux with GNU C and Compaq C setups 355f579bf8eSKris Kennaway# Special notes: 356f579bf8eSKris Kennaway# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you 357f579bf8eSKris Kennaway# ought to run './Configure linux-alpha+bwx-gcc' manually, do 358f579bf8eSKris Kennaway# complement the command line with -mcpu=ev56, -mcpu=ev6 or whatever 359f579bf8eSKris Kennaway# which is appropriate. 360f579bf8eSKris Kennaway# - If you use ccc keep in mind that -fast implies -arch host and the 361f579bf8eSKris Kennaway# compiler is free to issue instructions which gonna make elder CPU 362f579bf8eSKris Kennaway# choke. If you wish to build "blended" toolkit, add -arch generic 363f579bf8eSKris Kennaway# *after* -fast and invoke './Configure linux-alpha-ccc' manually. 364f579bf8eSKris Kennaway# 365f579bf8eSKris Kennaway# <appro@fy.chalmers.se> 366f579bf8eSKris Kennaway# 3675c87c606SMark Murray"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)", 3685c87c606SMark Murray"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)", 3695c87c606SMark Murray"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}", 3705c87c606SMark Murray"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}", 37174664626SKris Kennaway 37274664626SKris Kennaway# assembler versions -- currently defunct: 3735c87c606SMark Murray##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer:::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:${alpha_asm}", 37474664626SKris Kennaway 37574664626SKris Kennaway# The intel boxes :-), It would be worth seeing if bsdi-gcc can use the 37674664626SKris Kennaway# bn86-elf.o file file since it is hand tweaked assembler. 3775c87c606SMark Murray"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)", 3785c87c606SMark Murray"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)", 3795c87c606SMark Murray"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)", 3805c87c606SMark Murray"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)", 3815c87c606SMark Murray"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", 3825c87c606SMark Murray"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", 3835c87c606SMark Murray"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)", 3845c87c606SMark Murray"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", 3855c87c606SMark Murray"linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}", 386fceca8a3SJacques Vidrine"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)", 387fceca8a3SJacques Vidrine"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)", 3885c87c606SMark Murray"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)", 3895c87c606SMark Murray"linux-m68k", "gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::", 3905c87c606SMark Murray"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)", 3915c87c606SMark Murray"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)", 3925c87c606SMark Murray"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)", 39350ef0093SJacques Vidrine"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)", 3945c87c606SMark Murray"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)", 3955c87c606SMark Murray"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)", 3965c87c606SMark Murray"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)", 3975c87c606SMark Murray"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)", 3985c87c606SMark Murray"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)", 399fceca8a3SJacques Vidrine"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)", 400fceca8a3SJacques Vidrine"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)", 4015c87c606SMark Murray"FreeBSD", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}", 4025c87c606SMark Murray"bsdi-gcc", "gcc:-O3 -ffast-math -DL_ENDIAN -DPERL5 -m486::(unknown):::RSA_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_bsdi_asm}", 4035c87c606SMark Murray"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)", 4045c87c606SMark Murray"nextstep", "cc:-O -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", 4055c87c606SMark Murray"nextstep3.3", "cc:-O3 -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", 4065c87c606SMark Murray 40774664626SKris Kennaway# NCR MP-RAS UNIX ver 02.03.01 408fceca8a3SJacques Vidrine"ncr-scde","cc:-O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw::(unknown)::-lsocket -lnsl -lc89:${x86_gcc_des} ${x86_gcc_opts}:::", 40974664626SKris Kennaway 410ddd58736SKris Kennaway# QNX 4 4115c87c606SMark Murray"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:", 412ddd58736SKris Kennaway 413a21b1b38SKris Kennaway# QNX 6 4145c87c606SMark Murray"qnx6", "cc:-DL_ENDIAN -DTERMIOS::(unknown)::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:", 415a21b1b38SKris Kennaway 416ddd58736SKris Kennaway# Linux on ARM 4175c87c606SMark Murray"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)", 418ddd58736SKris Kennaway 419fceca8a3SJacques Vidrine# SCO/Caldera targets. 420fceca8a3SJacques Vidrine# 421fceca8a3SJacques Vidrine# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc. 422fceca8a3SJacques Vidrine# Now we only have blended unixware-* as it's the only one used by ./config. 423fceca8a3SJacques Vidrine# If you want to optimize for particular microarchitecture, bypass ./config 424fceca8a3SJacques Vidrine# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate. 425fceca8a3SJacques Vidrine# Note that not all targets include assembler support. Mostly because of 426fceca8a3SJacques Vidrine# lack of motivation to support out-of-date platforms with out-of-date 427fceca8a3SJacques Vidrine# compiler drivers and assemblers. Tim Rice <tim@multitalents.net> has 428fceca8a3SJacques Vidrine# patiently assisted to debug most of it. 429fceca8a3SJacques Vidrine# 4305740a5e3SKris Kennaway# UnixWare 2.0x fails destest with -O 4315c87c606SMark Murray"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::", 4325c87c606SMark Murray"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::", 433fceca8a3SJacques Vidrine"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)", 434fceca8a3SJacques Vidrine"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)", 435fceca8a3SJacques Vidrine"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)", 436fceca8a3SJacques Vidrine"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)", 437fceca8a3SJacques Vidrine"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 ... 438fceca8a3SJacques Vidrine# SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the SCO cc. 439fceca8a3SJacques Vidrine"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)", 440fceca8a3SJacques Vidrine"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)", 44174664626SKris Kennaway 442f579bf8eSKris Kennaway 44374664626SKris Kennaway# IBM's AIX. 4445c87c606SMark Murray"aix-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::", 4455c87c606SMark Murray"aix-gcc", "gcc:-O3 -DB_ENDIAN::(unknown):AIX::BN_LLONG RC4_CHAR:::", 446fceca8a3SJacques Vidrine"aix43-cc", "cc:-O -DAIX -DB_ENDIAN -qmaxmem=16384::(unknown):::BN_LLONG RC4_CHAR::::::::::dlfcn:aix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::", 4475c87c606SMark Murray"aix43-gcc", "gcc:-O1 -DAIX -DB_ENDIAN::(unknown):::BN_LLONG RC4_CHAR::::::::::dlfcn:", 448fceca8a3SJacques Vidrine"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", 44974664626SKris Kennaway 45074664626SKris Kennaway# 451c1803d78SJacques Vidrine# Cray T90 and similar (SDSC) 45274664626SKris Kennaway# It's Big-endian, but the algorithms work properly when B_ENDIAN is NOT 45374664626SKris Kennaway# defined. The T90 ints and longs are 8 bytes long, and apparently the 45474664626SKris Kennaway# B_ENDIAN code assumes 4 byte ints. Fortunately, the non-B_ENDIAN and 45574664626SKris Kennaway# non L_ENDIAN code aligns the bytes in each word correctly. 45674664626SKris Kennaway# 45774664626SKris Kennaway# The BIT_FIELD_LIMITS define is to avoid two fatal compiler errors: 45874664626SKris Kennaway#'Taking the address of a bit field is not allowed. ' 45974664626SKris Kennaway#'An expression with bit field exists as the operand of "sizeof" ' 46074664626SKris Kennaway# (written by Wayne Schroeder <schroede@SDSC.EDU>) 461c1803d78SJacques Vidrine# 462c1803d78SJacques Vidrine# j90 is considered the base machine type for unicos machines, 463c1803d78SJacques Vidrine# so this configuration is now called "cray-j90" ... 4645c87c606SMark Murray"cray-j90", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::", 46574664626SKris Kennaway 46674664626SKris Kennaway# 46774664626SKris Kennaway# Cray T3E (Research Center Juelich, beckman@acl.lanl.gov) 46874664626SKris Kennaway# 46974664626SKris Kennaway# The BIT_FIELD_LIMITS define was written for the C90 (it seems). I added 47074664626SKris Kennaway# another use. Basically, the problem is that the T3E uses some bit fields 47174664626SKris Kennaway# for some st_addr stuff, and then sizeof and address-of fails 47274664626SKris Kennaway# I could not use the ams/alpha.o option because the Cray assembler, 'cam' 47374664626SKris Kennaway# did not like it. 4745c87c606SMark Murray"cray-t3e", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:::", 47574664626SKris Kennaway 47674664626SKris Kennaway# DGUX, 88100. 4775c87c606SMark Murray"dgux-R3-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):::RC4_INDEX DES_UNROLL:::", 4785c87c606SMark Murray"dgux-R4-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown)::-lnsl -lsocket:RC4_INDEX DES_UNROLL:::", 4795c87c606SMark Murray"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}", 48074664626SKris Kennaway 48174664626SKris Kennaway# Sinix/ReliantUNIX RM400 48274664626SKris Kennaway# NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g */ 4835c87c606SMark Murray"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)", 4845c87c606SMark Murray"SINIX","cc:-O::(unknown):SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:RC4_INDEX RC4_CHAR:::", 4855c87c606SMark Murray"SINIX-N","/usr/ucb/cc:-O2 -misaligned::(unknown)::-lucb:RC4_INDEX RC4_CHAR:::", 48674664626SKris Kennaway 48774664626SKris Kennaway# SIEMENS BS2000/OSD: an EBCDIC-based mainframe 4885c87c606SMark Murray"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:::", 48974664626SKris Kennaway 490a21b1b38SKris Kennaway# OS/390 Unix an EBCDIC-based Unix system on IBM mainframe 491a21b1b38SKris Kennaway# You need to compile using the c89.sh wrapper in the tools directory, because the 492a21b1b38SKris Kennaway# IBM compiler does not like the -L switch after any object modules. 493a21b1b38SKris Kennaway# 4945c87c606SMark Murray"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:::", 495a21b1b38SKris Kennaway 49674664626SKris Kennaway# Windows NT, Microsoft Visual C++ 4.0 49774664626SKris Kennaway 4985c87c606SMark Murray"VC-NT","cl::::WINNT::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32", 4995c87c606SMark Murray"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32", 5005c87c606SMark Murray"VC-WIN32","cl::::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32", 5015c87c606SMark Murray"VC-WIN16","cl:::(unknown):WIN16::MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::", 5025c87c606SMark Murray"VC-W31-16","cl:::(unknown):WIN16::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::", 5035c87c606SMark Murray"VC-W31-32","cl::::WIN16::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::", 5045c87c606SMark Murray"VC-MSDOS","cl:::(unknown):MSDOS::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::", 50574664626SKris Kennaway 50674664626SKris Kennaway# Borland C++ 4.5 507fceca8a3SJacques Vidrine"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN::::::::::win32", 5085c87c606SMark Murray"BC-16","bcc:::(unknown):WIN16::BN_LLONG DES_PTR RC4_INDEX SIXTEEN_BIT:::", 50974664626SKris Kennaway 51050ef0093SJacques Vidrine# MinGW 51150ef0093SJacques Vidrine"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", 512ddd58736SKris Kennaway 5134f20a5a2SJacques Vidrine# UWIN 5145c87c606SMark Murray"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32", 5154f20a5a2SJacques Vidrine 516c1803d78SJacques Vidrine# Cygwin 5175c87c606SMark Murray"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32", 5185c87c606SMark Murray"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", 5195c87c606SMark Murray 5205c87c606SMark Murray# DJGPP 5215c87c606SMark Murray"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}::::::::::", 52274664626SKris Kennaway 52374664626SKris Kennaway# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at> 5245c87c606SMark Murray"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::", 5255c87c606SMark Murray"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::::::", 52674664626SKris Kennaway# K&R C is no longer supported; you need gcc on old Ultrix installations 5275c87c606SMark Murray##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::", 52874664626SKris Kennaway 52974664626SKris Kennaway# Some OpenBSD from Bob Beck <beck@obtuse.com> 5305c87c606SMark Murray"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)", 5315c87c606SMark Murray"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)", 5325c87c606SMark Murray"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)", 5335c87c606SMark Murray"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)", 5345c87c606SMark Murray"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)", 5355c87c606SMark Murray"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)", 5365c87c606SMark Murray"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)", 5375c87c606SMark Murray"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)", 5385c87c606SMark Murray"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)", 5395c87c606SMark Murray"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)", 5405c87c606SMark Murray"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)", 54174664626SKris Kennaway 542a21b1b38SKris Kennaway##### MacOS X (a.k.a. Rhapsody or Darwin) setup 5435c87c606SMark Murray"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", 5445c87c606SMark Murray"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", 5455c87c606SMark Murray"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", 5465c87c606SMark Murray 5475c87c606SMark Murray##### A/UX 5485c87c606SMark Murray"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", 549f579bf8eSKris Kennaway 550ddd58736SKris Kennaway##### Sony NEWS-OS 4.x 5515c87c606SMark Murray"newsos4-gcc","gcc:-O -DB_ENDIAN::(unknown):NEWS4:-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::", 5525c87c606SMark Murray 5535c87c606SMark Murray##### GNU Hurd 5545c87c606SMark Murray"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", 5555c87c606SMark Murray 5565c87c606SMark Murray##### OS/2 EMX 5575c87c606SMark Murray"OS2-EMX", "gcc::::::::", 558ddd58736SKris Kennaway 559c1803d78SJacques Vidrine##### VxWorks for various targets 5605c87c606SMark Murray"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::", 5615c87c606SMark Murray"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:::::", 5625c87c606SMark Murray"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:::::", 56350ef0093SJacques Vidrine"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::", 56450ef0093SJacques Vidrine"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:", 5655c87c606SMark Murray 5665c87c606SMark Murray##### Compaq Non-Stop Kernel (Tandem) 5675c87c606SMark Murray"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::", 568c1803d78SJacques Vidrine 56974664626SKris Kennaway); 57074664626SKris Kennaway 5715c87c606SMark Murraymy @WinTargets=qw(VC-NT VC-CE VC-WIN32 VC-WIN16 VC-W31-16 VC-W31-32 VC-MSDOS 5725c87c606SMark Murray BC-32 BC-16 Mingw32 OS2-EMX); 57374664626SKris Kennaway 574c1803d78SJacques Vidrinemy $idx = 0; 575c1803d78SJacques Vidrinemy $idx_cc = $idx++; 576c1803d78SJacques Vidrinemy $idx_cflags = $idx++; 577c1803d78SJacques Vidrinemy $idx_unistd = $idx++; 578c1803d78SJacques Vidrinemy $idx_thread_cflag = $idx++; 5795c87c606SMark Murraymy $idx_sys_id = $idx++; 580c1803d78SJacques Vidrinemy $idx_lflags = $idx++; 581c1803d78SJacques Vidrinemy $idx_bn_ops = $idx++; 582c1803d78SJacques Vidrinemy $idx_bn_obj = $idx++; 583c1803d78SJacques Vidrinemy $idx_des_obj = $idx++; 584c1803d78SJacques Vidrinemy $idx_bf_obj = $idx++; 585c1803d78SJacques Vidrinemy $idx_md5_obj = $idx++; 586c1803d78SJacques Vidrinemy $idx_sha1_obj = $idx++; 587c1803d78SJacques Vidrinemy $idx_cast_obj = $idx++; 588c1803d78SJacques Vidrinemy $idx_rc4_obj = $idx++; 589c1803d78SJacques Vidrinemy $idx_rmd160_obj = $idx++; 590c1803d78SJacques Vidrinemy $idx_rc5_obj = $idx++; 591c1803d78SJacques Vidrinemy $idx_dso_scheme = $idx++; 592c1803d78SJacques Vidrinemy $idx_shared_target = $idx++; 593c1803d78SJacques Vidrinemy $idx_shared_cflag = $idx++; 594c1803d78SJacques Vidrinemy $idx_shared_ldflag = $idx++; 595c1803d78SJacques Vidrinemy $idx_shared_extension = $idx++; 596c1803d78SJacques Vidrinemy $idx_ranlib = $idx++; 5975c87c606SMark Murraymy $idx_arflags = $idx++; 598c1803d78SJacques Vidrine 59974664626SKris Kennawaymy $prefix=""; 60074664626SKris Kennawaymy $openssldir=""; 6015740a5e3SKris Kennawaymy $exe_ext=""; 60274664626SKris Kennawaymy $install_prefix=""; 60374664626SKris Kennawaymy $no_threads=0; 604ddd58736SKris Kennawaymy $no_shared=1; 6055c87c606SMark Murraymy $zlib=0; 6065c87c606SMark Murraymy $no_krb5=0; 60774664626SKris Kennawaymy $threads=0; 60874664626SKris Kennawaymy $no_asm=0; 609ddd58736SKris Kennawaymy $no_dso=0; 61074664626SKris Kennawaymy @skip=(); 61174664626SKris Kennawaymy $Makefile="Makefile.ssl"; 61274664626SKris Kennawaymy $des_locl="crypto/des/des_locl.h"; 61374664626SKris Kennawaymy $des ="crypto/des/des.h"; 61474664626SKris Kennawaymy $bn ="crypto/bn/bn.h"; 61574664626SKris Kennawaymy $md2 ="crypto/md2/md2.h"; 61674664626SKris Kennawaymy $rc4 ="crypto/rc4/rc4.h"; 61774664626SKris Kennawaymy $rc4_locl="crypto/rc4/rc4_locl.h"; 61874664626SKris Kennawaymy $idea ="crypto/idea/idea.h"; 61974664626SKris Kennawaymy $rc2 ="crypto/rc2/rc2.h"; 62074664626SKris Kennawaymy $bf ="crypto/bf/bf_locl.h"; 62174664626SKris Kennawaymy $bn_asm ="bn_asm.o"; 62274664626SKris Kennawaymy $des_enc="des_enc.o fcrypt_b.o"; 62374664626SKris Kennawaymy $bf_enc ="bf_enc.o"; 62474664626SKris Kennawaymy $cast_enc="c_enc.o"; 62574664626SKris Kennawaymy $rc4_enc="rc4_enc.o"; 62674664626SKris Kennawaymy $rc5_enc="rc5_enc.o"; 62774664626SKris Kennawaymy $md5_obj=""; 62874664626SKris Kennawaymy $sha1_obj=""; 62974664626SKris Kennawaymy $rmd160_obj=""; 63074664626SKris Kennawaymy $processor=""; 6315740a5e3SKris Kennawaymy $default_ranlib; 63274664626SKris Kennawaymy $perl; 63374664626SKris Kennaway 6345c87c606SMark Murraymy $no_ssl2=0; 6355c87c606SMark Murraymy $no_ssl3=0; 6365c87c606SMark Murraymy $no_tls1=0; 6375c87c606SMark Murraymy $no_md5=0; 6385c87c606SMark Murraymy $no_sha=0; 6395c87c606SMark Murraymy $no_rsa=0; 6405c87c606SMark Murraymy $no_dh=0; 6415c87c606SMark Murray 6425740a5e3SKris Kennaway$default_ranlib= &which("ranlib") or $default_ranlib="true"; 643f579bf8eSKris Kennaway$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl") 644f579bf8eSKris Kennaway or $perl="perl"; 64574664626SKris Kennaway 64674664626SKris Kennaway&usage if ($#ARGV < 0); 64774664626SKris Kennaway 648ddd58736SKris Kennawaymy $flags; 649ddd58736SKris Kennawaymy $depflags; 650ddd58736SKris Kennawaymy $openssl_algorithm_defines; 651ddd58736SKris Kennawaymy $openssl_thread_defines; 6525c87c606SMark Murraymy $openssl_sys_defines=""; 653ddd58736SKris Kennawaymy $openssl_other_defines; 654ddd58736SKris Kennawaymy $libs; 655fceca8a3SJacques Vidrinemy $libkrb5=""; 656ddd58736SKris Kennawaymy $target; 657ddd58736SKris Kennawaymy $options; 658ddd58736SKris Kennawaymy $symlink; 6595c87c606SMark Murraymy $make_depend=0; 6605c87c606SMark Murraymy %withargs=(); 661ddd58736SKris Kennaway 662ddd58736SKris Kennawaymy @argvcopy=@ARGV; 663ddd58736SKris Kennawaymy $argvstring=""; 664ddd58736SKris Kennawaymy $argv_unprocessed=1; 665ddd58736SKris Kennaway 666ddd58736SKris Kennawaywhile($argv_unprocessed) 667ddd58736SKris Kennaway { 668ddd58736SKris Kennaway $flags=""; 669ddd58736SKris Kennaway $depflags=""; 670ddd58736SKris Kennaway $openssl_algorithm_defines=""; 671ddd58736SKris Kennaway $openssl_thread_defines=""; 6725c87c606SMark Murray $openssl_sys_defines=""; 673ddd58736SKris Kennaway $openssl_other_defines=""; 674ddd58736SKris Kennaway $libs=""; 675ddd58736SKris Kennaway $target=""; 676ddd58736SKris Kennaway $options=""; 677ddd58736SKris Kennaway $symlink=1; 678ddd58736SKris Kennaway 679ddd58736SKris Kennaway $argv_unprocessed=0; 680ddd58736SKris Kennaway $argvstring=join(' ',@argvcopy); 681ddd58736SKris Kennaway 682ddd58736SKris KennawayPROCESS_ARGS: 683ddd58736SKris Kennaway foreach (@argvcopy) 68474664626SKris Kennaway { 685f579bf8eSKris Kennaway s /^-no-/no-/; # some people just can't read the instructions 686c1803d78SJacques Vidrine if (/^--test-sanity$/) 687c1803d78SJacques Vidrine { 688c1803d78SJacques Vidrine exit(&test_sanity()); 689c1803d78SJacques Vidrine } 690c1803d78SJacques Vidrine elsif (/^no-asm$/) 69174664626SKris Kennaway { 69274664626SKris Kennaway $no_asm=1; 6935c87c606SMark Murray $flags .= "-DOPENSSL_NO_ASM "; 6945c87c606SMark Murray $openssl_other_defines .= "#define OPENSSL_NO_ASM\n"; 6955c87c606SMark Murray } 696fceca8a3SJacques Vidrine elsif (/^no-err$/) 697fceca8a3SJacques Vidrine { 698fceca8a3SJacques Vidrine $flags .= "-DOPENSSL_NO_ERR "; 699fceca8a3SJacques Vidrine $openssl_other_defines .= "#define OPENSSL_NO_ERR\n"; 700fceca8a3SJacques Vidrine } 7015c87c606SMark Murray elsif (/^no-hw-(.+)$/) 7025c87c606SMark Murray { 7035c87c606SMark Murray my $hw=$1; 7045c87c606SMark Murray $hw =~ tr/[a-z]/[A-Z]/; 7055c87c606SMark Murray $flags .= "-DOPENSSL_NO_HW_$hw "; 7065c87c606SMark Murray $openssl_other_defines .= "#define OPENSSL_NO_HW_$hw\n"; 7075c87c606SMark Murray } 7085c87c606SMark Murray elsif (/^no-hw$/) 7095c87c606SMark Murray { 7105c87c606SMark Murray $flags .= "-DOPENSSL_NO_HW "; 7115c87c606SMark Murray $openssl_other_defines .= "#define OPENSSL_NO_HW\n"; 71274664626SKris Kennaway } 713ddd58736SKris Kennaway elsif (/^no-dso$/) 714ddd58736SKris Kennaway { $no_dso=1; } 7155c87c606SMark Murray elsif (/^no-krb5$/) 7165c87c606SMark Murray { $no_krb5=1; } 71774664626SKris Kennaway elsif (/^no-threads$/) 71874664626SKris Kennaway { $no_threads=1; } 71974664626SKris Kennaway elsif (/^threads$/) 72074664626SKris Kennaway { $threads=1; } 721ddd58736SKris Kennaway elsif (/^no-shared$/) 722ddd58736SKris Kennaway { $no_shared=1; } 7235c87c606SMark Murray elsif (/^shared$/ || /^-shared$/ || /^--shared$/) 724ddd58736SKris Kennaway { $no_shared=0; } 7255c87c606SMark Murray elsif (/^no-zlib$/) 7265c87c606SMark Murray { $zlib=0; } 7275c87c606SMark Murray elsif (/^zlib$/) 7285c87c606SMark Murray { $zlib=1; } 7295c87c606SMark Murray elsif (/^zlib-dynamic$/) 7305c87c606SMark Murray { $zlib=2; } 731ddd58736SKris Kennaway elsif (/^no-symlinks$/) 732ddd58736SKris Kennaway { $symlink=0; } 7335c87c606SMark Murray elsif (/^no-ssl$/) 7345c87c606SMark Murray { $no_ssl2 = $no_ssl3 = 1; } 7355c87c606SMark Murray elsif (/^no-ssl2$/) 7365c87c606SMark Murray { $no_ssl2 = 1; } 7375c87c606SMark Murray elsif (/^no-ssl3$/) 7385c87c606SMark Murray { $no_ssl3 = 1; } 7395c87c606SMark Murray elsif (/^no-tls1?$/) 7405c87c606SMark Murray { $no_tls1 = 1; } 74174664626SKris Kennaway elsif (/^no-(.+)$/) 74274664626SKris Kennaway { 74374664626SKris Kennaway my $algo=$1; 74474664626SKris Kennaway push @skip,$algo; 74574664626SKris Kennaway $algo =~ tr/[a-z]/[A-Z]/; 7465c87c606SMark Murray $flags .= "-DOPENSSL_NO_$algo "; 7475c87c606SMark Murray $depflags .= "-DOPENSSL_NO_$algo "; 7485c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_$algo\n"; 7495c87c606SMark Murray if ($algo eq "RIJNDAEL") 7505c87c606SMark Murray { 7515c87c606SMark Murray push @skip, "aes"; 7525c87c606SMark Murray $flags .= "-DOPENSSL_NO_AES "; 7535c87c606SMark Murray $depflags .= "-DOPENSSL_NO_AES "; 7545c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_AES\n"; 7555c87c606SMark Murray } 75674664626SKris Kennaway if ($algo eq "DES") 75774664626SKris Kennaway { 758f579bf8eSKris Kennaway push @skip, "mdc2"; 75974664626SKris Kennaway $options .= " no-mdc2"; 7605c87c606SMark Murray $flags .= "-DOPENSSL_NO_MDC2 "; 7615c87c606SMark Murray $depflags .= "-DOPENSSL_NO_MDC2 "; 7625c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_MDC2\n"; 7635c87c606SMark Murray } 7645c87c606SMark Murray if ($algo eq "MD5") 7655c87c606SMark Murray { 7665c87c606SMark Murray $no_md5 = 1; 7675c87c606SMark Murray } 7685c87c606SMark Murray if ($algo eq "SHA") 7695c87c606SMark Murray { 7705c87c606SMark Murray $no_sha = 1; 7715c87c606SMark Murray } 7725c87c606SMark Murray if ($algo eq "RSA") 7735c87c606SMark Murray { 7745c87c606SMark Murray $no_rsa = 1; 7755c87c606SMark Murray } 7765c87c606SMark Murray if ($algo eq "DH") 7775c87c606SMark Murray { 7785c87c606SMark Murray $no_dh = 1; 77974664626SKris Kennaway } 78074664626SKris Kennaway } 781ddd58736SKris Kennaway elsif (/^reconfigure/ || /^reconf/) 782ddd58736SKris Kennaway { 783ddd58736SKris Kennaway if (open(IN,"<$Makefile")) 784ddd58736SKris Kennaway { 785ddd58736SKris Kennaway while (<IN>) 786ddd58736SKris Kennaway { 787ddd58736SKris Kennaway chop; 788ddd58736SKris Kennaway if (/^CONFIGURE_ARGS=(.*)/) 789ddd58736SKris Kennaway { 790ddd58736SKris Kennaway $argvstring=$1; 791ddd58736SKris Kennaway @argvcopy=split(' ',$argvstring); 792ddd58736SKris Kennaway die "Incorrect data to reconfigure, please do a normal configuration\n" 793ddd58736SKris Kennaway if (grep(/^reconf/,@argvcopy)); 794ddd58736SKris Kennaway print "Reconfiguring with: $argvstring\n"; 795ddd58736SKris Kennaway $argv_unprocessed=1; 796ddd58736SKris Kennaway close(IN); 797ddd58736SKris Kennaway last PROCESS_ARGS; 798ddd58736SKris Kennaway } 799ddd58736SKris Kennaway } 800ddd58736SKris Kennaway close(IN); 801ddd58736SKris Kennaway } 802ddd58736SKris Kennaway die "Insufficient data to reconfigure, please do a normal configuration\n"; 803ddd58736SKris Kennaway } 80474664626SKris Kennaway elsif (/^386$/) 80574664626SKris Kennaway { $processor=386; } 80674664626SKris Kennaway elsif (/^rsaref$/) 80774664626SKris Kennaway { 8085c87c606SMark Murray # No RSAref support any more since it's not needed. 8095c87c606SMark Murray # The check for the option is there so scripts aren't 8105c87c606SMark Murray # broken 81174664626SKris Kennaway } 81274664626SKris Kennaway elsif (/^[-+]/) 81374664626SKris Kennaway { 81474664626SKris Kennaway if (/^-[lL](.*)$/) 81574664626SKris Kennaway { 81674664626SKris Kennaway $libs.=$_." "; 81774664626SKris Kennaway } 81874664626SKris Kennaway elsif (/^-[^-]/ or /^\+/) 81974664626SKris Kennaway { 82074664626SKris Kennaway $flags.=$_." "; 82174664626SKris Kennaway } 82274664626SKris Kennaway elsif (/^--prefix=(.*)$/) 82374664626SKris Kennaway { 82474664626SKris Kennaway $prefix=$1; 82574664626SKris Kennaway } 82674664626SKris Kennaway elsif (/^--openssldir=(.*)$/) 82774664626SKris Kennaway { 82874664626SKris Kennaway $openssldir=$1; 82974664626SKris Kennaway } 83074664626SKris Kennaway elsif (/^--install.prefix=(.*)$/) 83174664626SKris Kennaway { 83274664626SKris Kennaway $install_prefix=$1; 83374664626SKris Kennaway } 8345c87c606SMark Murray elsif (/^--with-krb5-(dir|lib|include|flavor)=(.*)$/) 8355c87c606SMark Murray { 8365c87c606SMark Murray $withargs{"krb5-".$1}=$2; 8375c87c606SMark Murray } 83874664626SKris Kennaway else 83974664626SKris Kennaway { 84074664626SKris Kennaway print STDERR $usage; 84174664626SKris Kennaway exit(1); 84274664626SKris Kennaway } 84374664626SKris Kennaway } 84474664626SKris Kennaway elsif ($_ =~ /^([^:]+):(.+)$/) 84574664626SKris Kennaway { 84674664626SKris Kennaway eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string 84774664626SKris Kennaway $target=$1; 84874664626SKris Kennaway } 84974664626SKris Kennaway else 85074664626SKris Kennaway { 85174664626SKris Kennaway die "target already defined - $target\n" if ($target ne ""); 85274664626SKris Kennaway $target=$_; 85374664626SKris Kennaway } 85474664626SKris Kennaway unless ($_ eq $target) { 85574664626SKris Kennaway if ($options eq "") { 85674664626SKris Kennaway $options = $_; 85774664626SKris Kennaway } else { 85874664626SKris Kennaway $options .= " ".$_; 85974664626SKris Kennaway } 86074664626SKris Kennaway } 86174664626SKris Kennaway } 862ddd58736SKris Kennaway} 86374664626SKris Kennaway 8645c87c606SMark Murray$no_ssl3=1 if ($no_md5 || $no_sha); 8655c87c606SMark Murray$no_ssl3=1 if ($no_rsa && $no_dh); 8665c87c606SMark Murray 8675c87c606SMark Murray$no_ssl2=1 if ($no_md5); 8685c87c606SMark Murray$no_ssl2=1 if ($no_rsa); 8695c87c606SMark Murray 8705c87c606SMark Murray$no_tls1=1 if ($no_md5 || $no_sha); 8715c87c606SMark Murray$no_tls1=1 if ($no_dh); 8725c87c606SMark Murray 8735c87c606SMark Murrayif ($no_ssl2) 8745c87c606SMark Murray { 8755c87c606SMark Murray push @skip,"SSL2"; 8765c87c606SMark Murray $flags .= "-DOPENSSL_NO_SSL2 "; 8775c87c606SMark Murray $depflags .= "-DOPENSSL_NO_SSL2 "; 8785c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_SSL2\n"; 8795c87c606SMark Murray } 8805c87c606SMark Murray 8815c87c606SMark Murrayif ($no_ssl3) 8825c87c606SMark Murray { 8835c87c606SMark Murray push @skip,"SSL3"; 8845c87c606SMark Murray $flags .= "-DOPENSSL_NO_SSL3 "; 8855c87c606SMark Murray $depflags .= "-DOPENSSL_NO_SSL3 "; 8865c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_SSL3\n"; 8875c87c606SMark Murray } 8885c87c606SMark Murray 8895c87c606SMark Murrayif ($no_tls1) 8905c87c606SMark Murray { 8915c87c606SMark Murray push @skip,"TLS1"; 8925c87c606SMark Murray $flags .= "-DOPENSSL_NO_TLS1 "; 8935c87c606SMark Murray $depflags .= "-DOPENSSL_NO_TLS1 "; 8945c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_TLS1\n"; 8955c87c606SMark Murray } 8965c87c606SMark Murray 89774664626SKris Kennawayif ($target eq "TABLE") { 89874664626SKris Kennaway foreach $target (sort keys %table) { 89974664626SKris Kennaway print_table_entry($target); 90074664626SKris Kennaway } 90174664626SKris Kennaway exit 0; 90274664626SKris Kennaway} 90374664626SKris Kennaway 904f579bf8eSKris Kennawayif ($target eq "LIST") { 905f579bf8eSKris Kennaway foreach (sort keys %table) { 906f579bf8eSKris Kennaway print; 907f579bf8eSKris Kennaway print "\n"; 908f579bf8eSKris Kennaway } 909f579bf8eSKris Kennaway exit 0; 910f579bf8eSKris Kennaway} 911f579bf8eSKris Kennaway 912c1803d78SJacques Vidrineif ($target =~ m/^CygWin32(-.*)$/) { 913c1803d78SJacques Vidrine $target = "Cygwin".$1; 914c1803d78SJacques Vidrine} 915c1803d78SJacques Vidrine 916ddd58736SKris Kennawayprint "Configuring for $target\n"; 917ddd58736SKris Kennaway 91874664626SKris Kennaway&usage if (!defined($table{$target})); 91974664626SKris Kennaway 92074664626SKris Kennawaymy $IsWindows=scalar grep /^$target$/,@WinTargets; 92174664626SKris Kennaway 922c1803d78SJacques Vidrine$exe_ext=".exe" if ($target eq "Cygwin"); 9235c87c606SMark Murray$exe_ext=".exe" if ($target eq "DJGPP"); 92474664626SKris Kennaway$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq ""); 92574664626SKris Kennaway$prefix=$openssldir if $prefix eq ""; 92674664626SKris Kennaway 92774664626SKris Kennawaychop $openssldir if $openssldir =~ /\/$/; 92874664626SKris Kennawaychop $prefix if $prefix =~ /\/$/; 92974664626SKris Kennaway 93074664626SKris Kennaway$openssldir=$prefix . "/ssl" if $openssldir eq ""; 9315c87c606SMark Murray$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/; 93274664626SKris Kennaway 93374664626SKris Kennaway 93474664626SKris Kennawayprint "IsWindows=$IsWindows\n"; 93574664626SKris Kennaway 936c1803d78SJacques Vidrinemy @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 937c1803d78SJacques Vidrinemy $cc = $fields[$idx_cc]; 938c1803d78SJacques Vidrinemy $cflags = $fields[$idx_cflags]; 939c1803d78SJacques Vidrinemy $unistd = $fields[$idx_unistd]; 940c1803d78SJacques Vidrinemy $thread_cflag = $fields[$idx_thread_cflag]; 9415c87c606SMark Murraymy $sys_id = $fields[$idx_sys_id]; 942c1803d78SJacques Vidrinemy $lflags = $fields[$idx_lflags]; 943c1803d78SJacques Vidrinemy $bn_ops = $fields[$idx_bn_ops]; 944c1803d78SJacques Vidrinemy $bn_obj = $fields[$idx_bn_obj]; 945c1803d78SJacques Vidrinemy $des_obj = $fields[$idx_des_obj]; 946c1803d78SJacques Vidrinemy $bf_obj = $fields[$idx_bf_obj]; 9475c87c606SMark Murray$md5_obj = $fields[$idx_md5_obj]; 9485c87c606SMark Murray$sha1_obj = $fields[$idx_sha1_obj]; 949c1803d78SJacques Vidrinemy $cast_obj = $fields[$idx_cast_obj]; 950c1803d78SJacques Vidrinemy $rc4_obj = $fields[$idx_rc4_obj]; 9515c87c606SMark Murray$rmd160_obj = $fields[$idx_rmd160_obj]; 952c1803d78SJacques Vidrinemy $rc5_obj = $fields[$idx_rc5_obj]; 953c1803d78SJacques Vidrinemy $dso_scheme = $fields[$idx_dso_scheme]; 954c1803d78SJacques Vidrinemy $shared_target = $fields[$idx_shared_target]; 955c1803d78SJacques Vidrinemy $shared_cflag = $fields[$idx_shared_cflag]; 956c1803d78SJacques Vidrinemy $shared_ldflag = $fields[$idx_shared_ldflag]; 957c1803d78SJacques Vidrinemy $shared_extension = $fields[$idx_shared_extension]; 958c1803d78SJacques Vidrinemy $ranlib = $fields[$idx_ranlib]; 9595c87c606SMark Murraymy $arflags = $fields[$idx_arflags]; 960c1803d78SJacques Vidrine 961fceca8a3SJacques Vidrinemy $no_shared_warn=0; 962fceca8a3SJacques Vidrine 96374664626SKris Kennaway$cflags="$flags$cflags" if ($flags ne ""); 96474664626SKris Kennaway 9655c87c606SMark Murray# Kerberos settings. The flavor must be provided from outside, either through 9665c87c606SMark Murray# the script "config" or manually. 9675c87c606SMark Murrayif ($no_krb5 9685c87c606SMark Murray || !defined($withargs{"krb5-flavor"}) 9695c87c606SMark Murray || $withargs{"krb5-flavor"} eq "") 9705c87c606SMark Murray { 9715c87c606SMark Murray $cflags="-DOPENSSL_NO_KRB5 $cflags"; 9725c87c606SMark Murray $options.=" no-krb5" unless $no_krb5; 9735c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_KRB5\n"; 9745c87c606SMark Murray } 9755c87c606SMark Murrayelse 9765c87c606SMark Murray { 9775c87c606SMark Murray my ($lresolv, $lpath, $lext); 9785c87c606SMark Murray if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/) 9795c87c606SMark Murray { 9805c87c606SMark Murray die "Sorry, Heimdal is currently not supported\n"; 9815c87c606SMark Murray } 9825c87c606SMark Murray ##### HACK to force use of Heimdal. 9835c87c606SMark Murray ##### WARNING: Since we don't really have adequate support for Heimdal, 9845c87c606SMark Murray ##### using this will break the build. You'll have to make 9855c87c606SMark Murray ##### changes to the source, and if you do, please send 9865c87c606SMark Murray ##### patches to openssl-dev@openssl.org 9875c87c606SMark Murray if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/) 9885c87c606SMark Murray { 9895c87c606SMark Murray warn "Heimdal isn't really supported. Your build WILL break\n"; 9905c87c606SMark Murray warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n"; 9915c87c606SMark Murray $withargs{"krb5-dir"} = "/usr/heimdal" 9925c87c606SMark Murray if $withargs{"krb5-dir"} eq ""; 9935c87c606SMark Murray $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}. 9945c87c606SMark Murray "/lib -lgssapi -lkrb5 -lcom_err" 9955c87c606SMark Murray if $withargs{"krb5-lib"} eq ""; 9965c87c606SMark Murray $cflags="-DKRB5_HEIMDAL $cflags"; 9975c87c606SMark Murray } 9985c87c606SMark Murray if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/) 9995c87c606SMark Murray { 10005c87c606SMark Murray $withargs{"krb5-dir"} = "/usr/kerberos" 10015c87c606SMark Murray if $withargs{"krb5-dir"} eq ""; 10025c87c606SMark Murray $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}. 10035c87c606SMark Murray "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto" 10045c87c606SMark Murray if $withargs{"krb5-lib"} eq ""; 10055c87c606SMark Murray $cflags="-DKRB5_MIT $cflags"; 10065c87c606SMark Murray $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//; 10075c87c606SMark Murray if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/) 10085c87c606SMark Murray { 10095c87c606SMark Murray $cflags="-DKRB5_MIT_OLD11 $cflags"; 10105c87c606SMark Murray } 10115c87c606SMark Murray } 10125c87c606SMark Murray LRESOLV: 10135c87c606SMark Murray foreach $lpath ("/lib", "/usr/lib") 10145c87c606SMark Murray { 10155c87c606SMark Murray foreach $lext ("a", "so") 10165c87c606SMark Murray { 10175c87c606SMark Murray $lresolv = "$lpath/libresolv.$lext"; 10185c87c606SMark Murray last LRESOLV if (-r "$lresolv"); 10195c87c606SMark Murray $lresolv = ""; 10205c87c606SMark Murray } 10215c87c606SMark Murray } 10225c87c606SMark Murray $withargs{"krb5-lib"} .= " -lresolv" 10235c87c606SMark Murray if ("$lresolv" ne ""); 10245c87c606SMark Murray $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include" 10255c87c606SMark Murray if $withargs{"krb5-include"} eq "" && 10265c87c606SMark Murray $withargs{"krb5-dir"} ne ""; 10275c87c606SMark Murray } 10285c87c606SMark Murray 1029ddd58736SKris Kennaway# The DSO code currently always implements all functions so that no 1030ddd58736SKris Kennaway# applications will have to worry about that from a compilation point 1031ddd58736SKris Kennaway# of view. However, the "method"s may return zero unless that platform 1032ddd58736SKris Kennaway# has support compiled in for them. Currently each method is enabled 1033ddd58736SKris Kennaway# by a define "DSO_<name>" ... we translate the "dso_scheme" config 1034ddd58736SKris Kennaway# string entry into using the following logic; 1035ddd58736SKris Kennawaymy $dso_cflags; 1036ddd58736SKris Kennawayif (!$no_dso && $dso_scheme ne "") 1037ddd58736SKris Kennaway { 1038ddd58736SKris Kennaway $dso_scheme =~ tr/[a-z]/[A-Z]/; 1039ddd58736SKris Kennaway if ($dso_scheme eq "DLFCN") 1040ddd58736SKris Kennaway { 1041ddd58736SKris Kennaway $dso_cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H"; 1042ddd58736SKris Kennaway } 1043ddd58736SKris Kennaway elsif ($dso_scheme eq "DLFCN_NO_H") 1044ddd58736SKris Kennaway { 1045ddd58736SKris Kennaway $dso_cflags = "-DDSO_DLFCN"; 1046ddd58736SKris Kennaway } 1047ddd58736SKris Kennaway else 1048ddd58736SKris Kennaway { 1049ddd58736SKris Kennaway $dso_cflags = "-DDSO_$dso_scheme"; 1050ddd58736SKris Kennaway } 1051ddd58736SKris Kennaway $cflags = "$dso_cflags $cflags"; 1052ddd58736SKris Kennaway } 1053ddd58736SKris Kennaway 105474664626SKris Kennawaymy $thread_cflags; 1055f579bf8eSKris Kennawaymy $thread_defines; 105674664626SKris Kennawayif ($thread_cflag ne "(unknown)" && !$no_threads) 105774664626SKris Kennaway { 105874664626SKris Kennaway # If we know how to do it, support threads by default. 105974664626SKris Kennaway $threads = 1; 106074664626SKris Kennaway } 106174664626SKris Kennawayif ($thread_cflag eq "(unknown)") 106274664626SKris Kennaway { 106374664626SKris Kennaway # If the user asked for "threads", hopefully they also provided 106474664626SKris Kennaway # any system-dependent compiler options that are necessary. 10655c87c606SMark Murray $thread_cflags="-DOPENSSL_THREADS $cflags" ; 10665c87c606SMark Murray $thread_defines .= "#define OPENSSL_THREADS\n"; 106774664626SKris Kennaway } 106874664626SKris Kennawayelse 106974664626SKris Kennaway { 10705c87c606SMark Murray $thread_cflags="-DOPENSSL_THREADS $thread_cflag $cflags"; 10715c87c606SMark Murray $thread_defines .= "#define OPENSSL_THREADS\n"; 1072f579bf8eSKris Kennaway# my $def; 1073f579bf8eSKris Kennaway# foreach $def (split ' ',$thread_cflag) 1074f579bf8eSKris Kennaway# { 1075f579bf8eSKris Kennaway# if ($def =~ s/^-D// && $def !~ /^_/) 1076f579bf8eSKris Kennaway# { 1077f579bf8eSKris Kennaway# $thread_defines .= "#define $def\n"; 1078f579bf8eSKris Kennaway# } 1079f579bf8eSKris Kennaway# } 108074664626SKris Kennaway } 108174664626SKris Kennaway 108274664626SKris Kennaway$lflags="$libs$lflags" if ($libs ne ""); 108374664626SKris Kennaway 108474664626SKris Kennawayif ($no_asm) 108574664626SKris Kennaway { 108674664626SKris Kennaway $bn_obj=$des_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj=""; 108774664626SKris Kennaway $sha1_obj=$md5_obj=$rmd160_obj=""; 108874664626SKris Kennaway } 108974664626SKris Kennaway 10905c87c606SMark Murrayif (!$no_shared) 10915c87c606SMark Murray { 10925c87c606SMark Murray $cast_obj=""; # CAST assembler is not PIC 10935c87c606SMark Murray } 10945c87c606SMark Murray 109574664626SKris Kennawayif ($threads) 109674664626SKris Kennaway { 109774664626SKris Kennaway $cflags=$thread_cflags; 1098f579bf8eSKris Kennaway $openssl_thread_defines .= $thread_defines; 109974664626SKris Kennaway } 110074664626SKris Kennaway 11015c87c606SMark Murrayif ($zlib) 11025c87c606SMark Murray { 11035c87c606SMark Murray $cflags = "-DZLIB $cflags"; 11045c87c606SMark Murray $cflags = "-DZLIB_SHARED $cflags" if $zlib == 2; 11055c87c606SMark Murray $lflags = "$lflags -lz" if $zlib == 1; 11065c87c606SMark Murray } 11075c87c606SMark Murray 1108ddd58736SKris Kennaway# You will find shlib_mark1 and shlib_mark2 explained in Makefile.org 11095740a5e3SKris Kennawaymy $shared_mark = ""; 11105c87c606SMark Murrayif ($shared_target eq "") 11115c87c606SMark Murray { 1112fceca8a3SJacques Vidrine $no_shared_warn = 1 if !$no_shared; 11135c87c606SMark Murray $no_shared = 1; 11145c87c606SMark Murray } 11155c87c606SMark Murrayif (!$no_shared) 11165740a5e3SKris Kennaway { 1117ddd58736SKris Kennaway if ($shared_cflag ne "") 1118ddd58736SKris Kennaway { 1119ddd58736SKris Kennaway $cflags = "$shared_cflag $cflags"; 11205740a5e3SKris Kennaway } 1121ddd58736SKris Kennaway } 11225c87c606SMark Murray 11235c87c606SMark Murrayif ($sys_id ne "") 1124de7cdddaSKris Kennaway { 11255c87c606SMark Murray $cflags="-DOPENSSL_SYSNAME_$sys_id $cflags"; 11265c87c606SMark Murray $openssl_sys_defines="#define OPENSSL_SYSNAME_$sys_id\n"; 1127de7cdddaSKris Kennaway } 1128ddd58736SKris Kennaway 11295740a5e3SKris Kennawayif ($ranlib eq "") 11305740a5e3SKris Kennaway { 11315740a5e3SKris Kennaway $ranlib = $default_ranlib; 11325740a5e3SKris Kennaway } 11335740a5e3SKris Kennaway 113474664626SKris Kennaway#my ($bn1)=split(/\s+/,$bn_obj); 113574664626SKris Kennaway#$bn1 = "" unless defined $bn1; 113674664626SKris Kennaway#$bn1=$bn_asm unless ($bn1 =~ /\.o$/); 113774664626SKris Kennaway#$bn_obj="$bn1"; 113874664626SKris Kennaway 113974664626SKris Kennaway$bn_obj = $bn_asm unless $bn_obj ne ""; 114074664626SKris Kennaway 114174664626SKris Kennaway$des_obj=$des_enc unless ($des_obj =~ /\.o$/); 114274664626SKris Kennaway$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/); 114374664626SKris Kennaway$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/); 114474664626SKris Kennaway$rc4_obj=$rc4_enc unless ($rc4_obj =~ /\.o$/); 114574664626SKris Kennaway$rc5_obj=$rc5_enc unless ($rc5_obj =~ /\.o$/); 114674664626SKris Kennawayif ($sha1_obj =~ /\.o$/) 114774664626SKris Kennaway { 114874664626SKris Kennaway# $sha1_obj=$sha1_enc; 114974664626SKris Kennaway $cflags.=" -DSHA1_ASM"; 115074664626SKris Kennaway } 115174664626SKris Kennawayif ($md5_obj =~ /\.o$/) 115274664626SKris Kennaway { 115374664626SKris Kennaway# $md5_obj=$md5_enc; 115474664626SKris Kennaway $cflags.=" -DMD5_ASM"; 115574664626SKris Kennaway } 115674664626SKris Kennawayif ($rmd160_obj =~ /\.o$/) 115774664626SKris Kennaway { 115874664626SKris Kennaway# $rmd160_obj=$rmd160_enc; 115974664626SKris Kennaway $cflags.=" -DRMD160_ASM"; 116074664626SKris Kennaway } 116174664626SKris Kennaway 11624f20a5a2SJacques Vidrine# "Stringify" the C flags string. This permits it to be made part of a string 11634f20a5a2SJacques Vidrine# and works as well on command lines. 11644f20a5a2SJacques Vidrine$cflags =~ s/([\\\"])/\\\1/g; 11654f20a5a2SJacques Vidrine 116674664626SKris Kennawaymy $version = "unknown"; 116774664626SKris Kennawaymy $major = "unknown"; 116874664626SKris Kennawaymy $minor = "unknown"; 1169ddd58736SKris Kennawaymy $shlib_version_number = "unknown"; 1170ddd58736SKris Kennawaymy $shlib_version_history = "unknown"; 1171ddd58736SKris Kennawaymy $shlib_major = "unknown"; 1172ddd58736SKris Kennawaymy $shlib_minor = "unknown"; 117374664626SKris Kennaway 117474664626SKris Kennawayopen(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n"; 117574664626SKris Kennawaywhile (<IN>) 117674664626SKris Kennaway { 117774664626SKris Kennaway $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /; 1178ddd58736SKris Kennaway $shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/; 1179ddd58736SKris Kennaway $shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/; 118074664626SKris Kennaway } 118174664626SKris Kennawayclose(IN); 1182ddd58736SKris Kennawayif ($shlib_version_history ne "") { $shlib_version_history .= ":"; } 118374664626SKris Kennaway 118474664626SKris Kennawayif ($version =~ /(^[0-9]*)\.([0-9\.]*)/) 118574664626SKris Kennaway { 118674664626SKris Kennaway $major=$1; 118774664626SKris Kennaway $minor=$2; 118874664626SKris Kennaway } 118974664626SKris Kennaway 1190ddd58736SKris Kennawayif ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/) 1191ddd58736SKris Kennaway { 1192ddd58736SKris Kennaway $shlib_major=$1; 1193ddd58736SKris Kennaway $shlib_minor=$2; 1194ddd58736SKris Kennaway } 1195ddd58736SKris Kennaway 119674664626SKris Kennawayopen(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n"; 11975c87c606SMark Murrayunlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new"; 11985c87c606SMark Murrayopen(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n"; 1199f579bf8eSKris Kennawayprint OUT "### Generated automatically from Makefile.org by Configure.\n\n"; 120074664626SKris Kennawaymy $sdirs=0; 120174664626SKris Kennawaywhile (<IN>) 120274664626SKris Kennaway { 120374664626SKris Kennaway chop; 120474664626SKris Kennaway $sdirs = 1 if /^SDIRS=/; 120574664626SKris Kennaway if ($sdirs) { 120674664626SKris Kennaway my $dir; 120774664626SKris Kennaway foreach $dir (@skip) { 12085c87c606SMark Murray s/([ ])$dir /\1/; 120974664626SKris Kennaway } 121074664626SKris Kennaway } 121174664626SKris Kennaway $sdirs = 0 unless /\\$/; 121274664626SKris Kennaway s/^VERSION=.*/VERSION=$version/; 121374664626SKris Kennaway s/^MAJOR=.*/MAJOR=$major/; 121474664626SKris Kennaway s/^MINOR=.*/MINOR=$minor/; 1215ddd58736SKris Kennaway s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=$shlib_version_number/; 1216ddd58736SKris Kennaway s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/; 1217ddd58736SKris Kennaway s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/; 1218ddd58736SKris Kennaway s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/; 12195740a5e3SKris Kennaway s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/; 122074664626SKris Kennaway s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/; 122174664626SKris Kennaway s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/; 122274664626SKris Kennaway s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/; 122374664626SKris Kennaway s/^PLATFORM=.*$/PLATFORM=$target/; 122474664626SKris Kennaway s/^OPTIONS=.*$/OPTIONS=$options/; 1225ddd58736SKris Kennaway s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/; 122674664626SKris Kennaway s/^CC=.*$/CC= $cc/; 12275c87c606SMark Murray s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc"; 122874664626SKris Kennaway s/^CFLAG=.*$/CFLAG= $cflags/; 122974664626SKris Kennaway s/^DEPFLAG=.*$/DEPFLAG= $depflags/; 123074664626SKris Kennaway s/^EX_LIBS=.*$/EX_LIBS= $lflags/; 12315740a5e3SKris Kennaway s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/; 123274664626SKris Kennaway s/^BN_ASM=.*$/BN_ASM= $bn_obj/; 123374664626SKris Kennaway s/^DES_ENC=.*$/DES_ENC= $des_obj/; 123474664626SKris Kennaway s/^BF_ENC=.*$/BF_ENC= $bf_obj/; 123574664626SKris Kennaway s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/; 123674664626SKris Kennaway s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/; 123774664626SKris Kennaway s/^RC5_ENC=.*$/RC5_ENC= $rc5_obj/; 123874664626SKris Kennaway s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/; 123974664626SKris Kennaway s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/; 124074664626SKris Kennaway s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/; 124174664626SKris Kennaway s/^PROCESSOR=.*/PROCESSOR= $processor/; 124274664626SKris Kennaway s/^RANLIB=.*/RANLIB= $ranlib/; 12435c87c606SMark Murray s/^ARFLAGS=.*/ARFLAGS= $arflags/; 124474664626SKris Kennaway s/^PERL=.*/PERL= $perl/; 12455c87c606SMark Murray s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/; 1246fceca8a3SJacques Vidrine s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/; 1247ddd58736SKris Kennaway s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/; 12485740a5e3SKris Kennaway s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/; 12495740a5e3SKris Kennaway s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared); 1250a21b1b38SKris Kennaway if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/) 1251a21b1b38SKris Kennaway { 1252a21b1b38SKris Kennaway my $sotmp = $1; 12534f20a5a2SJacques Vidrine s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/; 12544f20a5a2SJacques Vidrine } 12554f20a5a2SJacques Vidrine elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.dylib$/) 12564f20a5a2SJacques Vidrine { 12574f20a5a2SJacques Vidrine s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.dylib/; 1258a21b1b38SKris Kennaway } 1259a21b1b38SKris Kennaway elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/) 1260a21b1b38SKris Kennaway { 1261a21b1b38SKris Kennaway my $sotmp = $1; 1262a21b1b38SKris Kennaway s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/; 1263a21b1b38SKris Kennaway } 12644f20a5a2SJacques Vidrine elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/) 12654f20a5a2SJacques Vidrine { 12664f20a5a2SJacques Vidrine s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/; 12674f20a5a2SJacques Vidrine } 1268c1803d78SJacques Vidrine s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/; 126974664626SKris Kennaway print OUT $_."\n"; 127074664626SKris Kennaway } 127174664626SKris Kennawayclose(IN); 127274664626SKris Kennawayclose(OUT); 12735c87c606SMark Murrayrename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e $Makefile; 12745c87c606SMark Murrayrename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n"; 127574664626SKris Kennaway 127674664626SKris Kennawayprint "CC =$cc\n"; 127774664626SKris Kennawayprint "CFLAG =$cflags\n"; 127874664626SKris Kennawayprint "EX_LIBS =$lflags\n"; 127974664626SKris Kennawayprint "BN_ASM =$bn_obj\n"; 128074664626SKris Kennawayprint "DES_ENC =$des_obj\n"; 128174664626SKris Kennawayprint "BF_ENC =$bf_obj\n"; 128274664626SKris Kennawayprint "CAST_ENC =$cast_obj\n"; 128374664626SKris Kennawayprint "RC4_ENC =$rc4_obj\n"; 128474664626SKris Kennawayprint "RC5_ENC =$rc5_obj\n"; 128574664626SKris Kennawayprint "MD5_OBJ_ASM =$md5_obj\n"; 128674664626SKris Kennawayprint "SHA1_OBJ_ASM =$sha1_obj\n"; 128774664626SKris Kennawayprint "RMD160_OBJ_ASM=$rmd160_obj\n"; 128874664626SKris Kennawayprint "PROCESSOR =$processor\n"; 128974664626SKris Kennawayprint "RANLIB =$ranlib\n"; 12905c87c606SMark Murrayprint "ARFLAGS =$arflags\n"; 129174664626SKris Kennawayprint "PERL =$perl\n"; 12925c87c606SMark Murrayprint "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n" 12935c87c606SMark Murray if $withargs{"krb5-include"} ne ""; 129474664626SKris Kennaway 129574664626SKris Kennawaymy $des_ptr=0; 129674664626SKris Kennawaymy $des_risc1=0; 129774664626SKris Kennawaymy $des_risc2=0; 129874664626SKris Kennawaymy $des_unroll=0; 129974664626SKris Kennawaymy $bn_ll=0; 130074664626SKris Kennawaymy $def_int=2; 130174664626SKris Kennawaymy $rc4_int=$def_int; 130274664626SKris Kennawaymy $md2_int=$def_int; 130374664626SKris Kennawaymy $idea_int=$def_int; 130474664626SKris Kennawaymy $rc2_int=$def_int; 130574664626SKris Kennawaymy $rc4_idx=0; 1306f579bf8eSKris Kennawaymy $rc4_chunk=0; 130774664626SKris Kennawaymy $bf_ptr=0; 130874664626SKris Kennawaymy @type=("char","short","int","long"); 130974664626SKris Kennawaymy ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0); 13105c87c606SMark Murraymy $export_var_as_fn=0; 131174664626SKris Kennaway 131274664626SKris Kennawaymy $des_int; 131374664626SKris Kennaway 131474664626SKris Kennawayforeach (sort split(/\s+/,$bn_ops)) 131574664626SKris Kennaway { 131674664626SKris Kennaway $des_ptr=1 if /DES_PTR/; 131774664626SKris Kennaway $des_risc1=1 if /DES_RISC1/; 131874664626SKris Kennaway $des_risc2=1 if /DES_RISC2/; 131974664626SKris Kennaway $des_unroll=1 if /DES_UNROLL/; 132074664626SKris Kennaway $des_int=1 if /DES_INT/; 132174664626SKris Kennaway $bn_ll=1 if /BN_LLONG/; 132274664626SKris Kennaway $rc4_int=0 if /RC4_CHAR/; 132374664626SKris Kennaway $rc4_int=3 if /RC4_LONG/; 132474664626SKris Kennaway $rc4_idx=1 if /RC4_INDEX/; 1325f579bf8eSKris Kennaway $rc4_chunk=1 if /RC4_CHUNK/; 1326f579bf8eSKris Kennaway $rc4_chunk=2 if /RC4_CHUNK_LL/; 132774664626SKris Kennaway $md2_int=0 if /MD2_CHAR/; 132874664626SKris Kennaway $md2_int=3 if /MD2_LONG/; 132974664626SKris Kennaway $idea_int=1 if /IDEA_SHORT/; 133074664626SKris Kennaway $idea_int=3 if /IDEA_LONG/; 133174664626SKris Kennaway $rc2_int=1 if /RC2_SHORT/; 133274664626SKris Kennaway $rc2_int=3 if /RC2_LONG/; 133374664626SKris Kennaway $bf_ptr=1 if $_ eq "BF_PTR"; 133474664626SKris Kennaway $bf_ptr=2 if $_ eq "BF_PTR2"; 133574664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(0,1,0,0,0) if /SIXTY_FOUR_BIT/; 133674664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(1,0,0,0,0) if /SIXTY_FOUR_BIT_LONG/; 133774664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0) if /THIRTY_TWO_BIT/; 133874664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,1,0) if /SIXTEEN_BIT/; 133974664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/; 13405c87c606SMark Murray $export_var_as_fn=1 if /EXPORT_VAR_AS_FN/; 134174664626SKris Kennaway } 134274664626SKris Kennaway 134374664626SKris Kennawayopen(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n"; 13445c87c606SMark Murrayunlink("crypto/opensslconf.h.new") || die "unable to remove old crypto/opensslconf.h.new:$!\n" if -e "crypto/opensslconf.h.new"; 13455c87c606SMark Murrayopen(OUT,'>crypto/opensslconf.h.new') || die "unable to create crypto/opensslconf.h.new:$!\n"; 1346f579bf8eSKris Kennawayprint OUT "/* opensslconf.h */\n"; 1347f579bf8eSKris Kennawayprint OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n"; 1348f579bf8eSKris Kennaway 1349f579bf8eSKris Kennawayprint OUT "/* OpenSSL was configured with the following options: */\n"; 13505c87c606SMark Murraymy $openssl_algorithm_defines_trans = $openssl_algorithm_defines; 13515c87c606SMark Murray$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n# define $1\n# endif/mg; 1352f579bf8eSKris Kennaway$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 1353f579bf8eSKris Kennaway$openssl_algorithm_defines = " /* no ciphers excluded */\n" if $openssl_algorithm_defines eq ""; 1354f579bf8eSKris Kennaway$openssl_thread_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 13555c87c606SMark Murray$openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 1356f579bf8eSKris Kennaway$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 13575c87c606SMark Murrayprint OUT $openssl_sys_defines; 13585c87c606SMark Murrayprint OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n"; 13595c87c606SMark Murrayprint OUT $openssl_algorithm_defines; 13605c87c606SMark Murrayprint OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n"; 13615c87c606SMark Murrayprint OUT $openssl_thread_defines; 13625c87c606SMark Murrayprint OUT $openssl_other_defines,"\n"; 13635c87c606SMark Murray 13645c87c606SMark Murrayprint OUT "/* The OPENSSL_NO_* macros are also defined as NO_* if the application\n"; 13655c87c606SMark Murrayprint OUT " asks for it. This is a transient feature that is provided for those\n"; 13665c87c606SMark Murrayprint OUT " who haven't had the time to do the appropriate changes in their\n"; 13675c87c606SMark Murrayprint OUT " applications. */\n"; 13685c87c606SMark Murrayprint OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n"; 13695c87c606SMark Murrayprint OUT $openssl_algorithm_defines_trans; 13705c87c606SMark Murrayprint OUT "#endif\n\n"; 1371f579bf8eSKris Kennaway 137274664626SKris Kennawaywhile (<IN>) 137374664626SKris Kennaway { 137474664626SKris Kennaway if (/^#define\s+OPENSSLDIR/) 137574664626SKris Kennaway { print OUT "#define OPENSSLDIR \"$openssldir\"\n"; } 13765c87c606SMark Murray elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/) 13775c87c606SMark Murray { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n" 13785c87c606SMark Murray if $export_var_as_fn; 13795c87c606SMark Murray printf OUT "#%s OPENSSL_EXPORT_VAR_AS_FUNCTION\n", 13805c87c606SMark Murray ($export_var_as_fn)?"define":"undef"; } 138174664626SKris Kennaway elsif (/^#define\s+OPENSSL_UNISTD/) 138274664626SKris Kennaway { 138374664626SKris Kennaway $unistd = "<unistd.h>" if $unistd eq ""; 138474664626SKris Kennaway print OUT "#define OPENSSL_UNISTD $unistd\n"; 138574664626SKris Kennaway } 138674664626SKris Kennaway elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/) 138774664626SKris Kennaway { printf OUT "#%s SIXTY_FOUR_BIT_LONG\n",($b64l)?"define":"undef"; } 138874664626SKris Kennaway elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT/) 138974664626SKris Kennaway { printf OUT "#%s SIXTY_FOUR_BIT\n",($b64)?"define":"undef"; } 139074664626SKris Kennaway elsif (/^#((define)|(undef))\s+THIRTY_TWO_BIT/) 139174664626SKris Kennaway { printf OUT "#%s THIRTY_TWO_BIT\n",($b32)?"define":"undef"; } 139274664626SKris Kennaway elsif (/^#((define)|(undef))\s+SIXTEEN_BIT/) 139374664626SKris Kennaway { printf OUT "#%s SIXTEEN_BIT\n",($b16)?"define":"undef"; } 139474664626SKris Kennaway elsif (/^#((define)|(undef))\s+EIGHT_BIT/) 139574664626SKris Kennaway { printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; } 139674664626SKris Kennaway elsif (/^#((define)|(undef))\s+BN_LLONG\s*$/) 139774664626SKris Kennaway { printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; } 139874664626SKris Kennaway elsif (/^\#define\s+DES_LONG\s+.*/) 139974664626SKris Kennaway { printf OUT "#define DES_LONG unsigned %s\n", 140074664626SKris Kennaway ($des_int)?'int':'long'; } 140174664626SKris Kennaway elsif (/^\#(define|undef)\s+DES_PTR/) 140274664626SKris Kennaway { printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; } 140374664626SKris Kennaway elsif (/^\#(define|undef)\s+DES_RISC1/) 140474664626SKris Kennaway { printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; } 140574664626SKris Kennaway elsif (/^\#(define|undef)\s+DES_RISC2/) 140674664626SKris Kennaway { printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; } 140774664626SKris Kennaway elsif (/^\#(define|undef)\s+DES_UNROLL/) 140874664626SKris Kennaway { printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; } 140974664626SKris Kennaway elsif (/^#define\s+RC4_INT\s/) 141074664626SKris Kennaway { printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; } 1411f579bf8eSKris Kennaway elsif (/^#undef\s+RC4_CHUNK/) 1412f579bf8eSKris Kennaway { 1413f579bf8eSKris Kennaway printf OUT "#undef RC4_CHUNK\n" if $rc4_chunk==0; 1414f579bf8eSKris Kennaway printf OUT "#define RC4_CHUNK unsigned long\n" if $rc4_chunk==1; 1415f579bf8eSKris Kennaway printf OUT "#define RC4_CHUNK unsigned long long\n" if $rc4_chunk==2; 1416f579bf8eSKris Kennaway } 141774664626SKris Kennaway elsif (/^#((define)|(undef))\s+RC4_INDEX/) 141874664626SKris Kennaway { printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; } 141974664626SKris Kennaway elsif (/^#(define|undef)\s+I386_ONLY/) 142074664626SKris Kennaway { printf OUT "#%s I386_ONLY\n", ($processor == 386)? 142174664626SKris Kennaway "define":"undef"; } 142274664626SKris Kennaway elsif (/^#define\s+MD2_INT\s/) 142374664626SKris Kennaway { printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; } 142474664626SKris Kennaway elsif (/^#define\s+IDEA_INT\s/) 142574664626SKris Kennaway {printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];} 142674664626SKris Kennaway elsif (/^#define\s+RC2_INT\s/) 142774664626SKris Kennaway {printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];} 142874664626SKris Kennaway elsif (/^#(define|undef)\s+BF_PTR/) 142974664626SKris Kennaway { 143074664626SKris Kennaway printf OUT "#undef BF_PTR\n" if $bf_ptr == 0; 143174664626SKris Kennaway printf OUT "#define BF_PTR\n" if $bf_ptr == 1; 143274664626SKris Kennaway printf OUT "#define BF_PTR2\n" if $bf_ptr == 2; 143374664626SKris Kennaway } 143474664626SKris Kennaway else 143574664626SKris Kennaway { print OUT $_; } 143674664626SKris Kennaway } 143774664626SKris Kennawayclose(IN); 143874664626SKris Kennawayclose(OUT); 14395c87c606SMark Murrayrename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h"; 14405c87c606SMark Murrayrename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to rename crypto/opensslconf.h.new\n"; 144174664626SKris Kennaway 144274664626SKris Kennaway 144374664626SKris Kennaway# Fix the date 144474664626SKris Kennaway 144574664626SKris Kennawayprint "SIXTY_FOUR_BIT_LONG mode\n" if $b64l; 144674664626SKris Kennawayprint "SIXTY_FOUR_BIT mode\n" if $b64; 144774664626SKris Kennawayprint "THIRTY_TWO_BIT mode\n" if $b32; 144874664626SKris Kennawayprint "SIXTEEN_BIT mode\n" if $b16; 144974664626SKris Kennawayprint "EIGHT_BIT mode\n" if $b8; 145074664626SKris Kennawayprint "DES_PTR used\n" if $des_ptr; 145174664626SKris Kennawayprint "DES_RISC1 used\n" if $des_risc1; 145274664626SKris Kennawayprint "DES_RISC2 used\n" if $des_risc2; 145374664626SKris Kennawayprint "DES_UNROLL used\n" if $des_unroll; 145474664626SKris Kennawayprint "DES_INT used\n" if $des_int; 145574664626SKris Kennawayprint "BN_LLONG mode\n" if $bn_ll; 145674664626SKris Kennawayprint "RC4 uses u$type[$rc4_int]\n" if $rc4_int != $def_int; 145774664626SKris Kennawayprint "RC4_INDEX mode\n" if $rc4_idx; 1458f579bf8eSKris Kennawayprint "RC4_CHUNK is undefined\n" if $rc4_chunk==0; 1459f579bf8eSKris Kennawayprint "RC4_CHUNK is unsigned long\n" if $rc4_chunk==1; 1460f579bf8eSKris Kennawayprint "RC4_CHUNK is unsigned long long\n" if $rc4_chunk==2; 146174664626SKris Kennawayprint "MD2 uses u$type[$md2_int]\n" if $md2_int != $def_int; 146274664626SKris Kennawayprint "IDEA uses u$type[$idea_int]\n" if $idea_int != $def_int; 146374664626SKris Kennawayprint "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int; 146474664626SKris Kennawayprint "BF_PTR used\n" if $bf_ptr == 1; 146574664626SKris Kennawayprint "BF_PTR2 used\n" if $bf_ptr == 2; 146674664626SKris Kennaway 146774664626SKris Kennawayif($IsWindows) { 146874664626SKris Kennaway open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h"; 146974664626SKris Kennaway printf OUT <<EOF; 147074664626SKris Kennaway#ifndef MK1MF_BUILD 147174664626SKris Kennaway /* auto-generated by Configure for crypto/cversion.c: 147274664626SKris Kennaway * for Unix builds, crypto/Makefile.ssl generates functional definitions; 147374664626SKris Kennaway * Windows builds (and other mk1mf builds) compile cversion.c with 147474664626SKris Kennaway * -DMK1MF_BUILD and use definitions added to this file by util/mk1mf.pl. */ 147574664626SKris Kennaway #error "Windows builds (PLATFORM=$target) use mk1mf.pl-created Makefiles" 147674664626SKris Kennaway#endif 147774664626SKris KennawayEOF 147874664626SKris Kennaway close(OUT); 147974664626SKris Kennaway} else { 14805c87c606SMark Murray my $make_command = "make -f Makefile.ssl PERL=\'$perl\'"; 14815c87c606SMark Murray my $make_targets = ""; 14825c87c606SMark Murray $make_targets .= " links" if $symlink; 14835c87c606SMark Murray $make_targets .= " depend" if $depflags ne "" && $make_depend; 14845c87c606SMark Murray $make_targets .= " gentests" if $symlink; 14855c87c606SMark Murray (system $make_command.$make_targets) == 0 or exit $? 14865c87c606SMark Murray if $make_targets ne ""; 148774664626SKris Kennaway if ( $perl =~ m@^/@) { 1488ddd58736SKris Kennaway &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";'); 148974664626SKris Kennaway &dofile("apps/der_chop",$perl,'^#!/', '#!%s'); 1490f579bf8eSKris Kennaway &dofile("apps/CA.pl",$perl,'^#!/', '#!%s'); 149174664626SKris Kennaway } else { 149274664626SKris Kennaway # No path for Perl known ... 1493ddd58736SKris Kennaway &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";'); 149474664626SKris Kennaway &dofile("apps/der_chop",'/usr/local/bin/perl','^#!/', '#!%s'); 1495f579bf8eSKris Kennaway &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s'); 149674664626SKris Kennaway } 14975c87c606SMark Murray if ($depflags ne "" && !$make_depend) { 14985c87c606SMark Murray print <<EOF; 14995c87c606SMark Murray 15005c87c606SMark MurraySince you've disabled at least one algorithm, you need to do the following 15015c87c606SMark Murraybefore building: 15025c87c606SMark Murray 15035c87c606SMark Murray make depend 15045c87c606SMark MurrayEOF 15055c87c606SMark Murray } 150674664626SKris Kennaway} 150774664626SKris Kennaway 150874664626SKris Kennawayprint <<EOF; 150974664626SKris Kennaway 1510f579bf8eSKris KennawayConfigured for $target. 151174664626SKris KennawayEOF 151274664626SKris Kennaway 151374664626SKris Kennawayprint <<\EOF if (!$no_threads && !$threads); 151474664626SKris Kennaway 151574664626SKris KennawayThe library could not be configured for supporting multi-threaded 151674664626SKris Kennawayapplications as the compiler options required on this system are not known. 151774664626SKris KennawaySee file INSTALL for details if you need multi-threading. 151874664626SKris KennawayEOF 151974664626SKris Kennaway 1520fceca8a3SJacques Vidrineprint <<\EOF if ($no_shared_warn); 1521fceca8a3SJacques Vidrine 1522fceca8a3SJacques VidrineYou gave the option 'shared'. Normally, that would give you shared libraries. 1523fceca8a3SJacques VidrineUnfortunately, the OpenSSL configuration doesn't include shared library support 1524fceca8a3SJacques Vidrinefor this platform yet, so it will pretend you gave the option 'no-shared'. If 1525fceca8a3SJacques Vidrineyou can inform the developpers (openssl-dev\@openssl.org) how to support shared 1526fceca8a3SJacques Vidrinelibraries on this platform, they will at least look at it and try their best 1527fceca8a3SJacques Vidrine(but please first make sure you have tried with a current version of OpenSSL). 1528fceca8a3SJacques VidrineEOF 1529fceca8a3SJacques Vidrine 153074664626SKris Kennawayexit(0); 153174664626SKris Kennaway 153274664626SKris Kennawaysub usage 153374664626SKris Kennaway { 153474664626SKris Kennaway print STDERR $usage; 1535f579bf8eSKris Kennaway print STDERR "\npick os/compiler from:\n"; 153674664626SKris Kennaway my $j=0; 153774664626SKris Kennaway my $i; 1538f579bf8eSKris Kennaway my $k=0; 153974664626SKris Kennaway foreach $i (sort keys %table) 154074664626SKris Kennaway { 154174664626SKris Kennaway next if $i =~ /^debug/; 1542f579bf8eSKris Kennaway $k += length($i) + 1; 1543f579bf8eSKris Kennaway if ($k > 78) 1544f579bf8eSKris Kennaway { 1545f579bf8eSKris Kennaway print STDERR "\n"; 1546f579bf8eSKris Kennaway $k=length($i); 1547f579bf8eSKris Kennaway } 1548f579bf8eSKris Kennaway print STDERR $i . " "; 154974664626SKris Kennaway } 155074664626SKris Kennaway foreach $i (sort keys %table) 155174664626SKris Kennaway { 155274664626SKris Kennaway next if $i !~ /^debug/; 1553f579bf8eSKris Kennaway $k += length($i) + 1; 1554f579bf8eSKris Kennaway if ($k > 78) 1555f579bf8eSKris Kennaway { 155674664626SKris Kennaway print STDERR "\n"; 1557f579bf8eSKris Kennaway $k=length($i); 1558f579bf8eSKris Kennaway } 1559f579bf8eSKris Kennaway print STDERR $i . " "; 1560f579bf8eSKris Kennaway } 1561f579bf8eSKris Kennaway print STDERR "\n\nNOTE: If in doubt, on Unix-ish systems use './config'.\n"; 156274664626SKris Kennaway exit(1); 156374664626SKris Kennaway } 156474664626SKris Kennaway 156574664626SKris Kennawaysub which 156674664626SKris Kennaway { 156774664626SKris Kennaway my($name)=@_; 156874664626SKris Kennaway my $path; 156974664626SKris Kennaway foreach $path (split /:/, $ENV{PATH}) 157074664626SKris Kennaway { 157174664626SKris Kennaway if (-f "$path/$name" and -x _) 157274664626SKris Kennaway { 157374664626SKris Kennaway return "$path/$name" unless ($name eq "perl" and 157474664626SKris Kennaway system("$path/$name -e " . '\'exit($]<5.0);\'')); 157574664626SKris Kennaway } 157674664626SKris Kennaway } 157774664626SKris Kennaway } 157874664626SKris Kennaway 157974664626SKris Kennawaysub dofile 158074664626SKris Kennaway { 158174664626SKris Kennaway my $f; my $p; my %m; my @a; my $k; my $ff; 158274664626SKris Kennaway ($f,$p,%m)=@_; 158374664626SKris Kennaway 158474664626SKris Kennaway open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n"; 158574664626SKris Kennaway @a=<IN>; 158674664626SKris Kennaway close(IN); 158774664626SKris Kennaway foreach $k (keys %m) 158874664626SKris Kennaway { 158974664626SKris Kennaway grep(/$k/ && ($_=sprintf($m{$k}."\n",$p)),@a); 159074664626SKris Kennaway } 1591f579bf8eSKris Kennaway open(OUT,">$f.new") || die "unable to open $f.new:$!\n"; 159274664626SKris Kennaway print OUT @a; 159374664626SKris Kennaway close(OUT); 1594f579bf8eSKris Kennaway rename($f,"$f.bak") || die "unable to rename $f\n" if -e $f; 1595f579bf8eSKris Kennaway rename("$f.new",$f) || die "unable to rename $f.new\n"; 159674664626SKris Kennaway } 159774664626SKris Kennaway 159874664626SKris Kennawaysub print_table_entry 159974664626SKris Kennaway { 160074664626SKris Kennaway my $target = shift; 160174664626SKris Kennaway 16025c87c606SMark Murray (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags, 16035c87c606SMark Murray my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj, 1604ddd58736SKris Kennaway my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj, 16055740a5e3SKris Kennaway my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag, 16065c87c606SMark Murray my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)= 16075740a5e3SKris Kennaway split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 160874664626SKris Kennaway 160974664626SKris Kennaway print <<EOF 161074664626SKris Kennaway 161174664626SKris Kennaway*** $target 161274664626SKris Kennaway\$cc = $cc 161374664626SKris Kennaway\$cflags = $cflags 161474664626SKris Kennaway\$unistd = $unistd 161574664626SKris Kennaway\$thread_cflag = $thread_cflag 16165c87c606SMark Murray\$sys_id = $sys_id 161774664626SKris Kennaway\$lflags = $lflags 161874664626SKris Kennaway\$bn_ops = $bn_ops 161974664626SKris Kennaway\$bn_obj = $bn_obj 162074664626SKris Kennaway\$des_obj = $des_obj 162174664626SKris Kennaway\$bf_obj = $bf_obj 162274664626SKris Kennaway\$md5_obj = $md5_obj 162374664626SKris Kennaway\$sha1_obj = $sha1_obj 162474664626SKris Kennaway\$cast_obj = $cast_obj 162574664626SKris Kennaway\$rc4_obj = $rc4_obj 162674664626SKris Kennaway\$rmd160_obj = $rmd160_obj 162774664626SKris Kennaway\$rc5_obj = $rc5_obj 1628ddd58736SKris Kennaway\$dso_scheme = $dso_scheme 1629ddd58736SKris Kennaway\$shared_target= $shared_target 1630ddd58736SKris Kennaway\$shared_cflag = $shared_cflag 1631c1803d78SJacques Vidrine\$shared_ldflag = $shared_ldflag 16325740a5e3SKris Kennaway\$shared_extension = $shared_extension 16335740a5e3SKris Kennaway\$ranlib = $ranlib 16345c87c606SMark Murray\$arflags = $arflags 163574664626SKris KennawayEOF 163674664626SKris Kennaway } 1637c1803d78SJacques Vidrine 1638c1803d78SJacques Vidrinesub test_sanity 1639c1803d78SJacques Vidrine { 1640c1803d78SJacques Vidrine my $errorcnt = 0; 1641c1803d78SJacques Vidrine 1642c1803d78SJacques Vidrine print STDERR "=" x 70, "\n"; 1643c1803d78SJacques Vidrine print STDERR "=== SANITY TESTING!\n"; 1644c1803d78SJacques Vidrine print STDERR "=== No configuration will be done, all other arguments will be ignored!\n"; 1645c1803d78SJacques Vidrine print STDERR "=" x 70, "\n"; 1646c1803d78SJacques Vidrine 1647c1803d78SJacques Vidrine foreach $target (sort keys %table) 1648c1803d78SJacques Vidrine { 1649c1803d78SJacques Vidrine @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 1650c1803d78SJacques Vidrine 1651c1803d78SJacques Vidrine if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/) 1652c1803d78SJacques Vidrine { 1653c1803d78SJacques Vidrine $errorcnt++; 1654c1803d78SJacques Vidrine print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n"; 1655c1803d78SJacques Vidrine print STDERR " in the previous field\n"; 1656c1803d78SJacques Vidrine } 1657c1803d78SJacques Vidrine elsif ($fields[$idx_dso_scheme+1] =~ /^(dl|dlfcn|win32|vms)$/) 1658c1803d78SJacques Vidrine { 1659c1803d78SJacques Vidrine $errorcnt++; 1660c1803d78SJacques Vidrine print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n"; 1661c1803d78SJacques Vidrine print STDERR " in the following field\n"; 1662c1803d78SJacques Vidrine } 1663c1803d78SJacques Vidrine elsif ($fields[$idx_dso_scheme] !~ /^(dl|dlfcn|win32|vms|)$/) 1664c1803d78SJacques Vidrine { 1665c1803d78SJacques Vidrine $errorcnt++; 1666c1803d78SJacques Vidrine print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n"; 1667c1803d78SJacques Vidrine print STDERR " valid values are 'dl', 'dlfcn', 'win32' and 'vms'\n"; 1668c1803d78SJacques Vidrine } 1669c1803d78SJacques Vidrine } 1670c1803d78SJacques Vidrine print STDERR "No sanity errors detected!\n" if $errorcnt == 0; 1671c1803d78SJacques Vidrine return $errorcnt; 1672c1803d78SJacques Vidrine } 1673