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", 148ced566fdSJacques Vidrine"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wmissing-prototypes -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 149ced566fdSJacques Vidrine"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wmissing-prototypes -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 150ced566fdSJacques Vidrine"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wmissing-prototypes -Wconversion -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 151ced566fdSJacques Vidrine"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wmissing-prototypes -Wconversion -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 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 219ced566fdSJacques Vidrine# './Configure irix-cc -o32' manually. 22074664626SKris Kennaway# -mips4 flag is added by ./config when appropriate. 221ced566fdSJacques Vidrine"irix-mips3-gcc","gcc:-mabi=n32 -mmips-as -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:${mips3_irix_asm}:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 222ced566fdSJacques 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::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 22374664626SKris Kennaway# N64 ABI builds. 224ced566fdSJacques Vidrine"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -mmips-as -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_irix_asm}:dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 225ced566fdSJacques Vidrine"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_irix_asm}:dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 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)", 263ced566fdSJacques Vidrine"hpux64-parisc2-gcc","gcc:-O3 -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:-fpic::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 2645c87c606SMark Murray 2655c87c606SMark Murray# IA-64 targets 266fceca8a3SJacques 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)", 2675c87c606SMark Murray# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with 2685c87c606SMark Murray# with debugging of the following config. 269fceca8a3SJacques 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)", 270ddd58736SKris Kennaway 271ddd58736SKris Kennaway# More attempts at unified 10.X and 11.X targets for HP C compiler. 272ddd58736SKris Kennaway# 273ddd58736SKris Kennaway# Chris Ruemmler <ruemmler@cup.hp.com> 274ddd58736SKris Kennaway# Kevin Steves <ks@hp.se> 275fceca8a3SJacques 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)", 276fceca8a3SJacques 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)", 277fceca8a3SJacques 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)", 2785c87c606SMark Murray# Isn't the line below meaningless? HP-UX cc optimizes for host by default. 2795c87c606SMark Murray# hpux-parisc1_0-cc with +DAportable flag would make more sense. <appro> 280fceca8a3SJacques 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)", 28174664626SKris Kennaway 28274664626SKris Kennaway# HPUX 9.X config. 28374664626SKris Kennaway# Don't use the bundled cc. It is broken. Use HP ANSI C if possible, or 28474664626SKris Kennaway# egcs. gcc 2.8.1 is also broken. 28574664626SKris Kennaway 2865c87c606SMark 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)", 28774664626SKris Kennaway# If hpux-cc fails (e.g. during "make test"), try the next one; otherwise, 288f579bf8eSKris Kennaway# please report your OS and compiler version to the openssl-bugs@openssl.org 28974664626SKris Kennaway# mailing list. 2905c87c606SMark 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)", 29174664626SKris Kennaway 2925c87c606SMark 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)", 29374664626SKris Kennaway# If hpux-gcc fails, try this one: 2945c87c606SMark 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)", 295a21b1b38SKris Kennaway 296a21b1b38SKris Kennaway# HPUX 9.X on Motorola 68k platforms with gcc 2975c87c606SMark Murray"hpux-m68k-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown):::BN_LLONG DES_PTR DES_UNROLL:::::::::::::", 29874664626SKris Kennaway 29974664626SKris Kennaway# HPUX 10.X config. Supports threads. 3005c87c606SMark 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)", 30174664626SKris Kennaway# If hpux10-cc fails, try this one (if still fails, try deleting BN_LLONG): 3025c87c606SMark 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)", 30374664626SKris Kennaway 3045c87c606SMark 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)", 30574664626SKris Kennaway# If hpux10-gcc fails, try this one: 3065c87c606SMark 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)", 30774664626SKris Kennaway 30874664626SKris Kennaway# HPUX 11.X from www.globus.org. 30974664626SKris Kennaway# Only works on PA-RISC 2.0 cpus, and not optimized. Why? 3105c87c606SMark Murray#"hpux11-32bit-cc","cc:+DA2.0 -DB_ENDIAN -D_HPUX_SOURCE -Aa -Ae +ESlit::-D_REENTRANT:::DES_PTR DES_UNROLL DES_RISC1:::", 3115c87c606SMark 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 :::", 312f579bf8eSKris Kennaway# Use unified settings above instead. 31374664626SKris Kennaway 314ddd58736SKris Kennaway#### HP MPE/iX http://jazz.external.hp.com/src/openssl/ 3155c87c606SMark 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:::", 316ddd58736SKris Kennaway 317c1803d78SJacques Vidrine#### PARISC Linux setups 3185c87c606SMark 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::", 319c1803d78SJacques Vidrine 320a21b1b38SKris Kennaway# Dec Alpha, OSF/1 - the alpha164-cc is historical, for the conversion 321a21b1b38SKris Kennaway# from the older DEC C Compiler to the newer compiler. It's now the 322a21b1b38SKris Kennaway# same as the preferred entry, alpha-cc. If you are still using the 323a21b1b38SKris Kennaway# older compiler (you're at 3.x or earlier, or perhaps very early 4.x) 324a21b1b38SKris Kennaway# you should use `alphaold-cc'. 325a21b1b38SKris Kennaway# 326a21b1b38SKris Kennaway# "What's in a name? That which we call a rose 327a21b1b38SKris Kennaway# By any other word would smell as sweet." 328a21b1b38SKris Kennaway# 329a21b1b38SKris Kennaway# - William Shakespeare, "Romeo & Juliet", Act II, scene II. 330a21b1b38SKris Kennaway# 331a21b1b38SKris Kennaway# For OSF/1 3.2b and earlier, and Digital UNIX 3.2c - 3.2g, with the 332a21b1b38SKris Kennaway# vendor compiler, use alphaold-cc. 333a21b1b38SKris Kennaway# For Digital UNIX 4.0 - 4.0e, with the vendor compiler, use alpha-cc. 334a21b1b38SKris Kennaway# For Tru64 UNIX 4.f - current, with the vendor compiler, use alpha-cc. 335a21b1b38SKris Kennaway# 336a21b1b38SKris Kennaway# There's also an alternate target available (which `config' will never 337a21b1b38SKris Kennaway# select) called alpha-cc-rpath. This target builds an RPATH into the 338a21b1b38SKris Kennaway# shared libraries, which is very convenient on Tru64 since binaries 339a21b1b38SKris Kennaway# linked against that shared library will automatically inherit that RPATH, 340a21b1b38SKris Kennaway# and hence know where to look for the openssl libraries, even if they're in 341a21b1b38SKris Kennaway# an odd place. 342a21b1b38SKris Kennaway# 34374664626SKris Kennaway# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version 344a21b1b38SKris Kennaway# 3455c87c606SMark Murray"alpha-gcc","gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so", 3465c87c606SMark Murray"alphaold-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so", 3475c87c606SMark Murray"alpha164-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", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:tru64-shared:::.so", 3495c87c606SMark 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", 350a21b1b38SKris Kennaway# 351a21b1b38SKris Kennaway# This probably belongs in a different section. 352a21b1b38SKris Kennaway# 3535c87c606SMark 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)", 354f579bf8eSKris Kennaway 355f579bf8eSKris Kennaway#### Alpha Linux with GNU C and Compaq C setups 356f579bf8eSKris Kennaway# Special notes: 357f579bf8eSKris Kennaway# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you 358f579bf8eSKris Kennaway# ought to run './Configure linux-alpha+bwx-gcc' manually, do 359f579bf8eSKris Kennaway# complement the command line with -mcpu=ev56, -mcpu=ev6 or whatever 360f579bf8eSKris Kennaway# which is appropriate. 361f579bf8eSKris Kennaway# - If you use ccc keep in mind that -fast implies -arch host and the 362f579bf8eSKris Kennaway# compiler is free to issue instructions which gonna make elder CPU 363f579bf8eSKris Kennaway# choke. If you wish to build "blended" toolkit, add -arch generic 364f579bf8eSKris Kennaway# *after* -fast and invoke './Configure linux-alpha-ccc' manually. 365f579bf8eSKris Kennaway# 366f579bf8eSKris Kennaway# <appro@fy.chalmers.se> 367f579bf8eSKris Kennaway# 3685c87c606SMark 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)", 3695c87c606SMark 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)", 3705c87c606SMark 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}", 3715c87c606SMark 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}", 37274664626SKris Kennaway 37374664626SKris Kennaway# assembler versions -- currently defunct: 3745c87c606SMark Murray##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer:::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:${alpha_asm}", 37574664626SKris Kennaway 37674664626SKris Kennaway# The intel boxes :-), It would be worth seeing if bsdi-gcc can use the 37774664626SKris Kennaway# bn86-elf.o file file since it is hand tweaked assembler. 3785c87c606SMark 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)", 3795c87c606SMark 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)", 3805c87c606SMark 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)", 3815c87c606SMark 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)", 3825c87c606SMark 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", 3835c87c606SMark 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", 3845c87c606SMark 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)", 3855c87c606SMark 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", 3865c87c606SMark 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}", 387fceca8a3SJacques 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)", 388fceca8a3SJacques 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)", 3895c87c606SMark 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)", 3905c87c606SMark Murray"linux-m68k", "gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::", 3915c87c606SMark 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)", 3925c87c606SMark 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)", 3935c87c606SMark 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)", 39450ef0093SJacques 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)", 3955c87c606SMark 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)", 3965c87c606SMark 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)", 3975c87c606SMark 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)", 3985c87c606SMark 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)", 3995c87c606SMark 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)", 400fceca8a3SJacques 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)", 401fceca8a3SJacques 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)", 4025c87c606SMark Murray"FreeBSD", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}", 4035c87c606SMark Murray"bsdi-gcc", "gcc:-O3 -ffast-math -DL_ENDIAN -DPERL5 -m486::(unknown):::RSA_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_bsdi_asm}", 4045c87c606SMark 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)", 4055c87c606SMark Murray"nextstep", "cc:-O -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", 4065c87c606SMark Murray"nextstep3.3", "cc:-O3 -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", 4075c87c606SMark Murray 40874664626SKris Kennaway# NCR MP-RAS UNIX ver 02.03.01 409fceca8a3SJacques Vidrine"ncr-scde","cc:-O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw::(unknown)::-lsocket -lnsl -lc89:${x86_gcc_des} ${x86_gcc_opts}:::", 41074664626SKris Kennaway 411ddd58736SKris Kennaway# QNX 4 4125c87c606SMark Murray"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:", 413ddd58736SKris Kennaway 414a21b1b38SKris Kennaway# QNX 6 4155c87c606SMark Murray"qnx6", "cc:-DL_ENDIAN -DTERMIOS::(unknown)::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:", 416a21b1b38SKris Kennaway 417ddd58736SKris Kennaway# Linux on ARM 4185c87c606SMark 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)", 419ddd58736SKris Kennaway 420fceca8a3SJacques Vidrine# SCO/Caldera targets. 421fceca8a3SJacques Vidrine# 422fceca8a3SJacques Vidrine# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc. 423fceca8a3SJacques Vidrine# Now we only have blended unixware-* as it's the only one used by ./config. 424fceca8a3SJacques Vidrine# If you want to optimize for particular microarchitecture, bypass ./config 425fceca8a3SJacques Vidrine# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate. 426fceca8a3SJacques Vidrine# Note that not all targets include assembler support. Mostly because of 427fceca8a3SJacques Vidrine# lack of motivation to support out-of-date platforms with out-of-date 428fceca8a3SJacques Vidrine# compiler drivers and assemblers. Tim Rice <tim@multitalents.net> has 429fceca8a3SJacques Vidrine# patiently assisted to debug most of it. 430fceca8a3SJacques Vidrine# 4315740a5e3SKris Kennaway# UnixWare 2.0x fails destest with -O 4325c87c606SMark Murray"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::", 4335c87c606SMark Murray"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::", 434fceca8a3SJacques 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)", 435fceca8a3SJacques 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)", 436fceca8a3SJacques 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)", 437fceca8a3SJacques 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)", 438fceca8a3SJacques 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 ... 439fceca8a3SJacques Vidrine# SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the SCO cc. 440fceca8a3SJacques 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)", 441fceca8a3SJacques 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)", 44274664626SKris Kennaway 443f579bf8eSKris Kennaway 44474664626SKris Kennaway# IBM's AIX. 4455c87c606SMark Murray"aix-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::", 4465c87c606SMark Murray"aix-gcc", "gcc:-O3 -DB_ENDIAN::(unknown):AIX::BN_LLONG RC4_CHAR:::", 447fceca8a3SJacques Vidrine"aix43-cc", "cc:-O -DAIX -DB_ENDIAN -qmaxmem=16384::(unknown):::BN_LLONG RC4_CHAR::::::::::dlfcn:aix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::", 4485c87c606SMark Murray"aix43-gcc", "gcc:-O1 -DAIX -DB_ENDIAN::(unknown):::BN_LLONG RC4_CHAR::::::::::dlfcn:", 449fceca8a3SJacques 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", 45074664626SKris Kennaway 45174664626SKris Kennaway# 452c1803d78SJacques Vidrine# Cray T90 and similar (SDSC) 45374664626SKris Kennaway# It's Big-endian, but the algorithms work properly when B_ENDIAN is NOT 45474664626SKris Kennaway# defined. The T90 ints and longs are 8 bytes long, and apparently the 45574664626SKris Kennaway# B_ENDIAN code assumes 4 byte ints. Fortunately, the non-B_ENDIAN and 45674664626SKris Kennaway# non L_ENDIAN code aligns the bytes in each word correctly. 45774664626SKris Kennaway# 45874664626SKris Kennaway# The BIT_FIELD_LIMITS define is to avoid two fatal compiler errors: 45974664626SKris Kennaway#'Taking the address of a bit field is not allowed. ' 46074664626SKris Kennaway#'An expression with bit field exists as the operand of "sizeof" ' 46174664626SKris Kennaway# (written by Wayne Schroeder <schroede@SDSC.EDU>) 462c1803d78SJacques Vidrine# 463c1803d78SJacques Vidrine# j90 is considered the base machine type for unicos machines, 464c1803d78SJacques Vidrine# so this configuration is now called "cray-j90" ... 4655c87c606SMark Murray"cray-j90", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::", 46674664626SKris Kennaway 46774664626SKris Kennaway# 46874664626SKris Kennaway# Cray T3E (Research Center Juelich, beckman@acl.lanl.gov) 46974664626SKris Kennaway# 47074664626SKris Kennaway# The BIT_FIELD_LIMITS define was written for the C90 (it seems). I added 47174664626SKris Kennaway# another use. Basically, the problem is that the T3E uses some bit fields 47274664626SKris Kennaway# for some st_addr stuff, and then sizeof and address-of fails 47374664626SKris Kennaway# I could not use the ams/alpha.o option because the Cray assembler, 'cam' 47474664626SKris Kennaway# did not like it. 4755c87c606SMark Murray"cray-t3e", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:::", 47674664626SKris Kennaway 47774664626SKris Kennaway# DGUX, 88100. 4785c87c606SMark Murray"dgux-R3-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):::RC4_INDEX DES_UNROLL:::", 4795c87c606SMark Murray"dgux-R4-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown)::-lnsl -lsocket:RC4_INDEX DES_UNROLL:::", 4805c87c606SMark 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}", 48174664626SKris Kennaway 48274664626SKris Kennaway# Sinix/ReliantUNIX RM400 48374664626SKris Kennaway# NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g */ 4845c87c606SMark 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)", 4855c87c606SMark Murray"SINIX","cc:-O::(unknown):SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:RC4_INDEX RC4_CHAR:::", 4865c87c606SMark Murray"SINIX-N","/usr/ucb/cc:-O2 -misaligned::(unknown)::-lucb:RC4_INDEX RC4_CHAR:::", 48774664626SKris Kennaway 48874664626SKris Kennaway# SIEMENS BS2000/OSD: an EBCDIC-based mainframe 4895c87c606SMark 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:::", 49074664626SKris Kennaway 491a21b1b38SKris Kennaway# OS/390 Unix an EBCDIC-based Unix system on IBM mainframe 492a21b1b38SKris Kennaway# You need to compile using the c89.sh wrapper in the tools directory, because the 493a21b1b38SKris Kennaway# IBM compiler does not like the -L switch after any object modules. 494a21b1b38SKris Kennaway# 4955c87c606SMark 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:::", 496a21b1b38SKris Kennaway 49774664626SKris Kennaway# Windows NT, Microsoft Visual C++ 4.0 49874664626SKris Kennaway 4995c87c606SMark Murray"VC-NT","cl::::WINNT::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32", 5005c87c606SMark Murray"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32", 5015c87c606SMark Murray"VC-WIN32","cl::::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}::::::::::win32", 5025c87c606SMark Murray"VC-WIN16","cl:::(unknown):WIN16::MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::", 5035c87c606SMark Murray"VC-W31-16","cl:::(unknown):WIN16::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::", 5045c87c606SMark Murray"VC-W31-32","cl::::WIN16::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::", 5055c87c606SMark Murray"VC-MSDOS","cl:::(unknown):MSDOS::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::", 50674664626SKris Kennaway 50774664626SKris Kennaway# Borland C++ 4.5 508fceca8a3SJacques Vidrine"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN::::::::::win32", 5095c87c606SMark Murray"BC-16","bcc:::(unknown):WIN16::BN_LLONG DES_PTR RC4_INDEX SIXTEEN_BIT:::", 51074664626SKris Kennaway 51150ef0093SJacques Vidrine# MinGW 51250ef0093SJacques 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", 513ddd58736SKris Kennaway 5144f20a5a2SJacques Vidrine# UWIN 5155c87c606SMark Murray"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32", 5164f20a5a2SJacques Vidrine 517c1803d78SJacques Vidrine# Cygwin 5185c87c606SMark 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", 5195c87c606SMark 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", 5205c87c606SMark Murray 5215c87c606SMark Murray# DJGPP 5225c87c606SMark 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}::::::::::", 52374664626SKris Kennaway 52474664626SKris Kennaway# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at> 5255c87c606SMark Murray"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::", 5265c87c606SMark Murray"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::::::", 52774664626SKris Kennaway# K&R C is no longer supported; you need gcc on old Ultrix installations 5285c87c606SMark Murray##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::", 52974664626SKris Kennaway 53074664626SKris Kennaway# Some OpenBSD from Bob Beck <beck@obtuse.com> 5315c87c606SMark 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)", 5325c87c606SMark 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)", 5335c87c606SMark 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)", 5345c87c606SMark 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)", 5355c87c606SMark 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)", 5365c87c606SMark 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)", 5375c87c606SMark 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)", 5385c87c606SMark 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)", 5395c87c606SMark 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)", 5405c87c606SMark 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)", 5415c87c606SMark 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)", 54274664626SKris Kennaway 543a21b1b38SKris Kennaway##### MacOS X (a.k.a. Rhapsody or Darwin) setup 5445c87c606SMark Murray"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", 5455c87c606SMark 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", 5465c87c606SMark 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", 5475c87c606SMark Murray 5485c87c606SMark Murray##### A/UX 5495c87c606SMark Murray"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", 550f579bf8eSKris Kennaway 551ddd58736SKris Kennaway##### Sony NEWS-OS 4.x 5525c87c606SMark 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::::", 5535c87c606SMark Murray 5545c87c606SMark Murray##### GNU Hurd 5555c87c606SMark 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", 5565c87c606SMark Murray 5575c87c606SMark Murray##### OS/2 EMX 5585c87c606SMark Murray"OS2-EMX", "gcc::::::::", 559ddd58736SKris Kennaway 560c1803d78SJacques Vidrine##### VxWorks for various targets 5615c87c606SMark Murray"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::", 5625c87c606SMark 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:::::", 5635c87c606SMark 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:::::", 56450ef0093SJacques Vidrine"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::", 56550ef0093SJacques 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:", 5665c87c606SMark Murray 5675c87c606SMark Murray##### Compaq Non-Stop Kernel (Tandem) 5685c87c606SMark Murray"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::", 569c1803d78SJacques Vidrine 57074664626SKris Kennaway); 57174664626SKris Kennaway 5725c87c606SMark Murraymy @WinTargets=qw(VC-NT VC-CE VC-WIN32 VC-WIN16 VC-W31-16 VC-W31-32 VC-MSDOS 5735c87c606SMark Murray BC-32 BC-16 Mingw32 OS2-EMX); 57474664626SKris Kennaway 575c1803d78SJacques Vidrinemy $idx = 0; 576c1803d78SJacques Vidrinemy $idx_cc = $idx++; 577c1803d78SJacques Vidrinemy $idx_cflags = $idx++; 578c1803d78SJacques Vidrinemy $idx_unistd = $idx++; 579c1803d78SJacques Vidrinemy $idx_thread_cflag = $idx++; 5805c87c606SMark Murraymy $idx_sys_id = $idx++; 581c1803d78SJacques Vidrinemy $idx_lflags = $idx++; 582c1803d78SJacques Vidrinemy $idx_bn_ops = $idx++; 583c1803d78SJacques Vidrinemy $idx_bn_obj = $idx++; 584c1803d78SJacques Vidrinemy $idx_des_obj = $idx++; 585c1803d78SJacques Vidrinemy $idx_bf_obj = $idx++; 586c1803d78SJacques Vidrinemy $idx_md5_obj = $idx++; 587c1803d78SJacques Vidrinemy $idx_sha1_obj = $idx++; 588c1803d78SJacques Vidrinemy $idx_cast_obj = $idx++; 589c1803d78SJacques Vidrinemy $idx_rc4_obj = $idx++; 590c1803d78SJacques Vidrinemy $idx_rmd160_obj = $idx++; 591c1803d78SJacques Vidrinemy $idx_rc5_obj = $idx++; 592c1803d78SJacques Vidrinemy $idx_dso_scheme = $idx++; 593c1803d78SJacques Vidrinemy $idx_shared_target = $idx++; 594c1803d78SJacques Vidrinemy $idx_shared_cflag = $idx++; 595c1803d78SJacques Vidrinemy $idx_shared_ldflag = $idx++; 596c1803d78SJacques Vidrinemy $idx_shared_extension = $idx++; 597c1803d78SJacques Vidrinemy $idx_ranlib = $idx++; 5985c87c606SMark Murraymy $idx_arflags = $idx++; 599c1803d78SJacques Vidrine 60074664626SKris Kennawaymy $prefix=""; 60174664626SKris Kennawaymy $openssldir=""; 6025740a5e3SKris Kennawaymy $exe_ext=""; 60374664626SKris Kennawaymy $install_prefix=""; 60474664626SKris Kennawaymy $no_threads=0; 605ddd58736SKris Kennawaymy $no_shared=1; 6065c87c606SMark Murraymy $zlib=0; 6075c87c606SMark Murraymy $no_krb5=0; 60874664626SKris Kennawaymy $threads=0; 60974664626SKris Kennawaymy $no_asm=0; 610ddd58736SKris Kennawaymy $no_dso=0; 61174664626SKris Kennawaymy @skip=(); 61274664626SKris Kennawaymy $Makefile="Makefile.ssl"; 61374664626SKris Kennawaymy $des_locl="crypto/des/des_locl.h"; 61474664626SKris Kennawaymy $des ="crypto/des/des.h"; 61574664626SKris Kennawaymy $bn ="crypto/bn/bn.h"; 61674664626SKris Kennawaymy $md2 ="crypto/md2/md2.h"; 61774664626SKris Kennawaymy $rc4 ="crypto/rc4/rc4.h"; 61874664626SKris Kennawaymy $rc4_locl="crypto/rc4/rc4_locl.h"; 61974664626SKris Kennawaymy $idea ="crypto/idea/idea.h"; 62074664626SKris Kennawaymy $rc2 ="crypto/rc2/rc2.h"; 62174664626SKris Kennawaymy $bf ="crypto/bf/bf_locl.h"; 62274664626SKris Kennawaymy $bn_asm ="bn_asm.o"; 62374664626SKris Kennawaymy $des_enc="des_enc.o fcrypt_b.o"; 62474664626SKris Kennawaymy $bf_enc ="bf_enc.o"; 62574664626SKris Kennawaymy $cast_enc="c_enc.o"; 62674664626SKris Kennawaymy $rc4_enc="rc4_enc.o"; 62774664626SKris Kennawaymy $rc5_enc="rc5_enc.o"; 62874664626SKris Kennawaymy $md5_obj=""; 62974664626SKris Kennawaymy $sha1_obj=""; 63074664626SKris Kennawaymy $rmd160_obj=""; 63174664626SKris Kennawaymy $processor=""; 6325740a5e3SKris Kennawaymy $default_ranlib; 63374664626SKris Kennawaymy $perl; 63474664626SKris Kennaway 6355c87c606SMark Murraymy $no_ssl2=0; 6365c87c606SMark Murraymy $no_ssl3=0; 6375c87c606SMark Murraymy $no_tls1=0; 6385c87c606SMark Murraymy $no_md5=0; 6395c87c606SMark Murraymy $no_sha=0; 6405c87c606SMark Murraymy $no_rsa=0; 6415c87c606SMark Murraymy $no_dh=0; 6425c87c606SMark Murray 6435740a5e3SKris Kennaway$default_ranlib= &which("ranlib") or $default_ranlib="true"; 644f579bf8eSKris Kennaway$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl") 645f579bf8eSKris Kennaway or $perl="perl"; 64674664626SKris Kennaway 64774664626SKris Kennaway&usage if ($#ARGV < 0); 64874664626SKris Kennaway 649ddd58736SKris Kennawaymy $flags; 650ddd58736SKris Kennawaymy $depflags; 651ddd58736SKris Kennawaymy $openssl_algorithm_defines; 652ddd58736SKris Kennawaymy $openssl_thread_defines; 6535c87c606SMark Murraymy $openssl_sys_defines=""; 654ddd58736SKris Kennawaymy $openssl_other_defines; 655ddd58736SKris Kennawaymy $libs; 656fceca8a3SJacques Vidrinemy $libkrb5=""; 657ddd58736SKris Kennawaymy $target; 658ddd58736SKris Kennawaymy $options; 659ddd58736SKris Kennawaymy $symlink; 6605c87c606SMark Murraymy $make_depend=0; 6615c87c606SMark Murraymy %withargs=(); 662ddd58736SKris Kennaway 663ddd58736SKris Kennawaymy @argvcopy=@ARGV; 664ddd58736SKris Kennawaymy $argvstring=""; 665ddd58736SKris Kennawaymy $argv_unprocessed=1; 666ddd58736SKris Kennaway 667ddd58736SKris Kennawaywhile($argv_unprocessed) 668ddd58736SKris Kennaway { 669ddd58736SKris Kennaway $flags=""; 670ddd58736SKris Kennaway $depflags=""; 671ddd58736SKris Kennaway $openssl_algorithm_defines=""; 672ddd58736SKris Kennaway $openssl_thread_defines=""; 6735c87c606SMark Murray $openssl_sys_defines=""; 674ddd58736SKris Kennaway $openssl_other_defines=""; 675ddd58736SKris Kennaway $libs=""; 676ddd58736SKris Kennaway $target=""; 677ddd58736SKris Kennaway $options=""; 678ddd58736SKris Kennaway $symlink=1; 679ddd58736SKris Kennaway 680ddd58736SKris Kennaway $argv_unprocessed=0; 681ddd58736SKris Kennaway $argvstring=join(' ',@argvcopy); 682ddd58736SKris Kennaway 683ddd58736SKris KennawayPROCESS_ARGS: 684ddd58736SKris Kennaway foreach (@argvcopy) 68574664626SKris Kennaway { 686f579bf8eSKris Kennaway s /^-no-/no-/; # some people just can't read the instructions 687c1803d78SJacques Vidrine if (/^--test-sanity$/) 688c1803d78SJacques Vidrine { 689c1803d78SJacques Vidrine exit(&test_sanity()); 690c1803d78SJacques Vidrine } 691c1803d78SJacques Vidrine elsif (/^no-asm$/) 69274664626SKris Kennaway { 69374664626SKris Kennaway $no_asm=1; 6945c87c606SMark Murray $flags .= "-DOPENSSL_NO_ASM "; 6955c87c606SMark Murray $openssl_other_defines .= "#define OPENSSL_NO_ASM\n"; 6965c87c606SMark Murray } 697fceca8a3SJacques Vidrine elsif (/^no-err$/) 698fceca8a3SJacques Vidrine { 699fceca8a3SJacques Vidrine $flags .= "-DOPENSSL_NO_ERR "; 700fceca8a3SJacques Vidrine $openssl_other_defines .= "#define OPENSSL_NO_ERR\n"; 701fceca8a3SJacques Vidrine } 7025c87c606SMark Murray elsif (/^no-hw-(.+)$/) 7035c87c606SMark Murray { 7045c87c606SMark Murray my $hw=$1; 7055c87c606SMark Murray $hw =~ tr/[a-z]/[A-Z]/; 7065c87c606SMark Murray $flags .= "-DOPENSSL_NO_HW_$hw "; 7075c87c606SMark Murray $openssl_other_defines .= "#define OPENSSL_NO_HW_$hw\n"; 7085c87c606SMark Murray } 7095c87c606SMark Murray elsif (/^no-hw$/) 7105c87c606SMark Murray { 7115c87c606SMark Murray $flags .= "-DOPENSSL_NO_HW "; 7125c87c606SMark Murray $openssl_other_defines .= "#define OPENSSL_NO_HW\n"; 71374664626SKris Kennaway } 714ddd58736SKris Kennaway elsif (/^no-dso$/) 715ddd58736SKris Kennaway { $no_dso=1; } 7165c87c606SMark Murray elsif (/^no-krb5$/) 7175c87c606SMark Murray { $no_krb5=1; } 71874664626SKris Kennaway elsif (/^no-threads$/) 71974664626SKris Kennaway { $no_threads=1; } 72074664626SKris Kennaway elsif (/^threads$/) 72174664626SKris Kennaway { $threads=1; } 722ddd58736SKris Kennaway elsif (/^no-shared$/) 723ddd58736SKris Kennaway { $no_shared=1; } 7245c87c606SMark Murray elsif (/^shared$/ || /^-shared$/ || /^--shared$/) 725ddd58736SKris Kennaway { $no_shared=0; } 7265c87c606SMark Murray elsif (/^no-zlib$/) 7275c87c606SMark Murray { $zlib=0; } 7285c87c606SMark Murray elsif (/^zlib$/) 7295c87c606SMark Murray { $zlib=1; } 7305c87c606SMark Murray elsif (/^zlib-dynamic$/) 7315c87c606SMark Murray { $zlib=2; } 732ddd58736SKris Kennaway elsif (/^no-symlinks$/) 733ddd58736SKris Kennaway { $symlink=0; } 7345c87c606SMark Murray elsif (/^no-ssl$/) 7355c87c606SMark Murray { $no_ssl2 = $no_ssl3 = 1; } 7365c87c606SMark Murray elsif (/^no-ssl2$/) 7375c87c606SMark Murray { $no_ssl2 = 1; } 7385c87c606SMark Murray elsif (/^no-ssl3$/) 7395c87c606SMark Murray { $no_ssl3 = 1; } 7405c87c606SMark Murray elsif (/^no-tls1?$/) 7415c87c606SMark Murray { $no_tls1 = 1; } 74274664626SKris Kennaway elsif (/^no-(.+)$/) 74374664626SKris Kennaway { 74474664626SKris Kennaway my $algo=$1; 74574664626SKris Kennaway push @skip,$algo; 74674664626SKris Kennaway $algo =~ tr/[a-z]/[A-Z]/; 7475c87c606SMark Murray $flags .= "-DOPENSSL_NO_$algo "; 7485c87c606SMark Murray $depflags .= "-DOPENSSL_NO_$algo "; 7495c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_$algo\n"; 7505c87c606SMark Murray if ($algo eq "RIJNDAEL") 7515c87c606SMark Murray { 7525c87c606SMark Murray push @skip, "aes"; 7535c87c606SMark Murray $flags .= "-DOPENSSL_NO_AES "; 7545c87c606SMark Murray $depflags .= "-DOPENSSL_NO_AES "; 7555c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_AES\n"; 7565c87c606SMark Murray } 75774664626SKris Kennaway if ($algo eq "DES") 75874664626SKris Kennaway { 759f579bf8eSKris Kennaway push @skip, "mdc2"; 76074664626SKris Kennaway $options .= " no-mdc2"; 7615c87c606SMark Murray $flags .= "-DOPENSSL_NO_MDC2 "; 7625c87c606SMark Murray $depflags .= "-DOPENSSL_NO_MDC2 "; 7635c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_MDC2\n"; 7645c87c606SMark Murray } 7655c87c606SMark Murray if ($algo eq "MD5") 7665c87c606SMark Murray { 7675c87c606SMark Murray $no_md5 = 1; 7685c87c606SMark Murray } 7695c87c606SMark Murray if ($algo eq "SHA") 7705c87c606SMark Murray { 7715c87c606SMark Murray $no_sha = 1; 7725c87c606SMark Murray } 7735c87c606SMark Murray if ($algo eq "RSA") 7745c87c606SMark Murray { 7755c87c606SMark Murray $no_rsa = 1; 7765c87c606SMark Murray } 7775c87c606SMark Murray if ($algo eq "DH") 7785c87c606SMark Murray { 7795c87c606SMark Murray $no_dh = 1; 78074664626SKris Kennaway } 78174664626SKris Kennaway } 782ddd58736SKris Kennaway elsif (/^reconfigure/ || /^reconf/) 783ddd58736SKris Kennaway { 784ddd58736SKris Kennaway if (open(IN,"<$Makefile")) 785ddd58736SKris Kennaway { 786ddd58736SKris Kennaway while (<IN>) 787ddd58736SKris Kennaway { 788ddd58736SKris Kennaway chop; 789ddd58736SKris Kennaway if (/^CONFIGURE_ARGS=(.*)/) 790ddd58736SKris Kennaway { 791ddd58736SKris Kennaway $argvstring=$1; 792ddd58736SKris Kennaway @argvcopy=split(' ',$argvstring); 793ddd58736SKris Kennaway die "Incorrect data to reconfigure, please do a normal configuration\n" 794ddd58736SKris Kennaway if (grep(/^reconf/,@argvcopy)); 795ddd58736SKris Kennaway print "Reconfiguring with: $argvstring\n"; 796ddd58736SKris Kennaway $argv_unprocessed=1; 797ddd58736SKris Kennaway close(IN); 798ddd58736SKris Kennaway last PROCESS_ARGS; 799ddd58736SKris Kennaway } 800ddd58736SKris Kennaway } 801ddd58736SKris Kennaway close(IN); 802ddd58736SKris Kennaway } 803ddd58736SKris Kennaway die "Insufficient data to reconfigure, please do a normal configuration\n"; 804ddd58736SKris Kennaway } 80574664626SKris Kennaway elsif (/^386$/) 80674664626SKris Kennaway { $processor=386; } 80774664626SKris Kennaway elsif (/^rsaref$/) 80874664626SKris Kennaway { 8095c87c606SMark Murray # No RSAref support any more since it's not needed. 8105c87c606SMark Murray # The check for the option is there so scripts aren't 8115c87c606SMark Murray # broken 81274664626SKris Kennaway } 81374664626SKris Kennaway elsif (/^[-+]/) 81474664626SKris Kennaway { 81574664626SKris Kennaway if (/^-[lL](.*)$/) 81674664626SKris Kennaway { 81774664626SKris Kennaway $libs.=$_." "; 81874664626SKris Kennaway } 81974664626SKris Kennaway elsif (/^-[^-]/ or /^\+/) 82074664626SKris Kennaway { 82174664626SKris Kennaway $flags.=$_." "; 82274664626SKris Kennaway } 82374664626SKris Kennaway elsif (/^--prefix=(.*)$/) 82474664626SKris Kennaway { 82574664626SKris Kennaway $prefix=$1; 82674664626SKris Kennaway } 82774664626SKris Kennaway elsif (/^--openssldir=(.*)$/) 82874664626SKris Kennaway { 82974664626SKris Kennaway $openssldir=$1; 83074664626SKris Kennaway } 83174664626SKris Kennaway elsif (/^--install.prefix=(.*)$/) 83274664626SKris Kennaway { 83374664626SKris Kennaway $install_prefix=$1; 83474664626SKris Kennaway } 8355c87c606SMark Murray elsif (/^--with-krb5-(dir|lib|include|flavor)=(.*)$/) 8365c87c606SMark Murray { 8375c87c606SMark Murray $withargs{"krb5-".$1}=$2; 8385c87c606SMark Murray } 83974664626SKris Kennaway else 84074664626SKris Kennaway { 84174664626SKris Kennaway print STDERR $usage; 84274664626SKris Kennaway exit(1); 84374664626SKris Kennaway } 84474664626SKris Kennaway } 84574664626SKris Kennaway elsif ($_ =~ /^([^:]+):(.+)$/) 84674664626SKris Kennaway { 84774664626SKris Kennaway eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string 84874664626SKris Kennaway $target=$1; 84974664626SKris Kennaway } 85074664626SKris Kennaway else 85174664626SKris Kennaway { 85274664626SKris Kennaway die "target already defined - $target\n" if ($target ne ""); 85374664626SKris Kennaway $target=$_; 85474664626SKris Kennaway } 85574664626SKris Kennaway unless ($_ eq $target) { 85674664626SKris Kennaway if ($options eq "") { 85774664626SKris Kennaway $options = $_; 85874664626SKris Kennaway } else { 85974664626SKris Kennaway $options .= " ".$_; 86074664626SKris Kennaway } 86174664626SKris Kennaway } 86274664626SKris Kennaway } 863ddd58736SKris Kennaway} 86474664626SKris Kennaway 8655c87c606SMark Murray$no_ssl3=1 if ($no_md5 || $no_sha); 8665c87c606SMark Murray$no_ssl3=1 if ($no_rsa && $no_dh); 8675c87c606SMark Murray 8685c87c606SMark Murray$no_ssl2=1 if ($no_md5); 8695c87c606SMark Murray$no_ssl2=1 if ($no_rsa); 8705c87c606SMark Murray 8715c87c606SMark Murray$no_tls1=1 if ($no_md5 || $no_sha); 8725c87c606SMark Murray$no_tls1=1 if ($no_dh); 8735c87c606SMark Murray 8745c87c606SMark Murrayif ($no_ssl2) 8755c87c606SMark Murray { 8765c87c606SMark Murray push @skip,"SSL2"; 8775c87c606SMark Murray $flags .= "-DOPENSSL_NO_SSL2 "; 8785c87c606SMark Murray $depflags .= "-DOPENSSL_NO_SSL2 "; 8795c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_SSL2\n"; 8805c87c606SMark Murray } 8815c87c606SMark Murray 8825c87c606SMark Murrayif ($no_ssl3) 8835c87c606SMark Murray { 8845c87c606SMark Murray push @skip,"SSL3"; 8855c87c606SMark Murray $flags .= "-DOPENSSL_NO_SSL3 "; 8865c87c606SMark Murray $depflags .= "-DOPENSSL_NO_SSL3 "; 8875c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_SSL3\n"; 8885c87c606SMark Murray } 8895c87c606SMark Murray 8905c87c606SMark Murrayif ($no_tls1) 8915c87c606SMark Murray { 8925c87c606SMark Murray push @skip,"TLS1"; 8935c87c606SMark Murray $flags .= "-DOPENSSL_NO_TLS1 "; 8945c87c606SMark Murray $depflags .= "-DOPENSSL_NO_TLS1 "; 8955c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_TLS1\n"; 8965c87c606SMark Murray } 8975c87c606SMark Murray 89874664626SKris Kennawayif ($target eq "TABLE") { 89974664626SKris Kennaway foreach $target (sort keys %table) { 90074664626SKris Kennaway print_table_entry($target); 90174664626SKris Kennaway } 90274664626SKris Kennaway exit 0; 90374664626SKris Kennaway} 90474664626SKris Kennaway 905f579bf8eSKris Kennawayif ($target eq "LIST") { 906f579bf8eSKris Kennaway foreach (sort keys %table) { 907f579bf8eSKris Kennaway print; 908f579bf8eSKris Kennaway print "\n"; 909f579bf8eSKris Kennaway } 910f579bf8eSKris Kennaway exit 0; 911f579bf8eSKris Kennaway} 912f579bf8eSKris Kennaway 913c1803d78SJacques Vidrineif ($target =~ m/^CygWin32(-.*)$/) { 914c1803d78SJacques Vidrine $target = "Cygwin".$1; 915c1803d78SJacques Vidrine} 916c1803d78SJacques Vidrine 917ddd58736SKris Kennawayprint "Configuring for $target\n"; 918ddd58736SKris Kennaway 91974664626SKris Kennaway&usage if (!defined($table{$target})); 92074664626SKris Kennaway 92174664626SKris Kennawaymy $IsWindows=scalar grep /^$target$/,@WinTargets; 92274664626SKris Kennaway 923c1803d78SJacques Vidrine$exe_ext=".exe" if ($target eq "Cygwin"); 9245c87c606SMark Murray$exe_ext=".exe" if ($target eq "DJGPP"); 92574664626SKris Kennaway$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq ""); 92674664626SKris Kennaway$prefix=$openssldir if $prefix eq ""; 92774664626SKris Kennaway 92874664626SKris Kennawaychop $openssldir if $openssldir =~ /\/$/; 92974664626SKris Kennawaychop $prefix if $prefix =~ /\/$/; 93074664626SKris Kennaway 93174664626SKris Kennaway$openssldir=$prefix . "/ssl" if $openssldir eq ""; 9325c87c606SMark Murray$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/; 93374664626SKris Kennaway 93474664626SKris Kennaway 93574664626SKris Kennawayprint "IsWindows=$IsWindows\n"; 93674664626SKris Kennaway 937c1803d78SJacques Vidrinemy @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 938c1803d78SJacques Vidrinemy $cc = $fields[$idx_cc]; 939c1803d78SJacques Vidrinemy $cflags = $fields[$idx_cflags]; 940c1803d78SJacques Vidrinemy $unistd = $fields[$idx_unistd]; 941c1803d78SJacques Vidrinemy $thread_cflag = $fields[$idx_thread_cflag]; 9425c87c606SMark Murraymy $sys_id = $fields[$idx_sys_id]; 943c1803d78SJacques Vidrinemy $lflags = $fields[$idx_lflags]; 944c1803d78SJacques Vidrinemy $bn_ops = $fields[$idx_bn_ops]; 945c1803d78SJacques Vidrinemy $bn_obj = $fields[$idx_bn_obj]; 946c1803d78SJacques Vidrinemy $des_obj = $fields[$idx_des_obj]; 947c1803d78SJacques Vidrinemy $bf_obj = $fields[$idx_bf_obj]; 9485c87c606SMark Murray$md5_obj = $fields[$idx_md5_obj]; 9495c87c606SMark Murray$sha1_obj = $fields[$idx_sha1_obj]; 950c1803d78SJacques Vidrinemy $cast_obj = $fields[$idx_cast_obj]; 951c1803d78SJacques Vidrinemy $rc4_obj = $fields[$idx_rc4_obj]; 9525c87c606SMark Murray$rmd160_obj = $fields[$idx_rmd160_obj]; 953c1803d78SJacques Vidrinemy $rc5_obj = $fields[$idx_rc5_obj]; 954c1803d78SJacques Vidrinemy $dso_scheme = $fields[$idx_dso_scheme]; 955c1803d78SJacques Vidrinemy $shared_target = $fields[$idx_shared_target]; 956c1803d78SJacques Vidrinemy $shared_cflag = $fields[$idx_shared_cflag]; 957c1803d78SJacques Vidrinemy $shared_ldflag = $fields[$idx_shared_ldflag]; 958c1803d78SJacques Vidrinemy $shared_extension = $fields[$idx_shared_extension]; 959c1803d78SJacques Vidrinemy $ranlib = $fields[$idx_ranlib]; 9605c87c606SMark Murraymy $arflags = $fields[$idx_arflags]; 961c1803d78SJacques Vidrine 962fceca8a3SJacques Vidrinemy $no_shared_warn=0; 963fceca8a3SJacques Vidrine 96474664626SKris Kennaway$cflags="$flags$cflags" if ($flags ne ""); 96574664626SKris Kennaway 9665c87c606SMark Murray# Kerberos settings. The flavor must be provided from outside, either through 9675c87c606SMark Murray# the script "config" or manually. 9685c87c606SMark Murrayif ($no_krb5 9695c87c606SMark Murray || !defined($withargs{"krb5-flavor"}) 9705c87c606SMark Murray || $withargs{"krb5-flavor"} eq "") 9715c87c606SMark Murray { 9725c87c606SMark Murray $cflags="-DOPENSSL_NO_KRB5 $cflags"; 9735c87c606SMark Murray $options.=" no-krb5" unless $no_krb5; 9745c87c606SMark Murray $openssl_algorithm_defines .= "#define OPENSSL_NO_KRB5\n"; 9755c87c606SMark Murray } 9765c87c606SMark Murrayelse 9775c87c606SMark Murray { 9785c87c606SMark Murray my ($lresolv, $lpath, $lext); 9795c87c606SMark Murray if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/) 9805c87c606SMark Murray { 9815c87c606SMark Murray die "Sorry, Heimdal is currently not supported\n"; 9825c87c606SMark Murray } 9835c87c606SMark Murray ##### HACK to force use of Heimdal. 9845c87c606SMark Murray ##### WARNING: Since we don't really have adequate support for Heimdal, 9855c87c606SMark Murray ##### using this will break the build. You'll have to make 9865c87c606SMark Murray ##### changes to the source, and if you do, please send 9875c87c606SMark Murray ##### patches to openssl-dev@openssl.org 9885c87c606SMark Murray if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/) 9895c87c606SMark Murray { 9905c87c606SMark Murray warn "Heimdal isn't really supported. Your build WILL break\n"; 9915c87c606SMark Murray warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n"; 9925c87c606SMark Murray $withargs{"krb5-dir"} = "/usr/heimdal" 9935c87c606SMark Murray if $withargs{"krb5-dir"} eq ""; 9945c87c606SMark Murray $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}. 9955c87c606SMark Murray "/lib -lgssapi -lkrb5 -lcom_err" 9965c87c606SMark Murray if $withargs{"krb5-lib"} eq ""; 9975c87c606SMark Murray $cflags="-DKRB5_HEIMDAL $cflags"; 9985c87c606SMark Murray } 9995c87c606SMark Murray if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/) 10005c87c606SMark Murray { 10015c87c606SMark Murray $withargs{"krb5-dir"} = "/usr/kerberos" 10025c87c606SMark Murray if $withargs{"krb5-dir"} eq ""; 10035c87c606SMark Murray $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}. 10045c87c606SMark Murray "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto" 10055c87c606SMark Murray if $withargs{"krb5-lib"} eq ""; 10065c87c606SMark Murray $cflags="-DKRB5_MIT $cflags"; 10075c87c606SMark Murray $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//; 10085c87c606SMark Murray if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/) 10095c87c606SMark Murray { 10105c87c606SMark Murray $cflags="-DKRB5_MIT_OLD11 $cflags"; 10115c87c606SMark Murray } 10125c87c606SMark Murray } 10135c87c606SMark Murray LRESOLV: 10145c87c606SMark Murray foreach $lpath ("/lib", "/usr/lib") 10155c87c606SMark Murray { 10165c87c606SMark Murray foreach $lext ("a", "so") 10175c87c606SMark Murray { 10185c87c606SMark Murray $lresolv = "$lpath/libresolv.$lext"; 10195c87c606SMark Murray last LRESOLV if (-r "$lresolv"); 10205c87c606SMark Murray $lresolv = ""; 10215c87c606SMark Murray } 10225c87c606SMark Murray } 10235c87c606SMark Murray $withargs{"krb5-lib"} .= " -lresolv" 10245c87c606SMark Murray if ("$lresolv" ne ""); 10255c87c606SMark Murray $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include" 10265c87c606SMark Murray if $withargs{"krb5-include"} eq "" && 10275c87c606SMark Murray $withargs{"krb5-dir"} ne ""; 10285c87c606SMark Murray } 10295c87c606SMark Murray 1030ddd58736SKris Kennaway# The DSO code currently always implements all functions so that no 1031ddd58736SKris Kennaway# applications will have to worry about that from a compilation point 1032ddd58736SKris Kennaway# of view. However, the "method"s may return zero unless that platform 1033ddd58736SKris Kennaway# has support compiled in for them. Currently each method is enabled 1034ddd58736SKris Kennaway# by a define "DSO_<name>" ... we translate the "dso_scheme" config 1035ddd58736SKris Kennaway# string entry into using the following logic; 1036ddd58736SKris Kennawaymy $dso_cflags; 1037ddd58736SKris Kennawayif (!$no_dso && $dso_scheme ne "") 1038ddd58736SKris Kennaway { 1039ddd58736SKris Kennaway $dso_scheme =~ tr/[a-z]/[A-Z]/; 1040ddd58736SKris Kennaway if ($dso_scheme eq "DLFCN") 1041ddd58736SKris Kennaway { 1042ddd58736SKris Kennaway $dso_cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H"; 1043ddd58736SKris Kennaway } 1044ddd58736SKris Kennaway elsif ($dso_scheme eq "DLFCN_NO_H") 1045ddd58736SKris Kennaway { 1046ddd58736SKris Kennaway $dso_cflags = "-DDSO_DLFCN"; 1047ddd58736SKris Kennaway } 1048ddd58736SKris Kennaway else 1049ddd58736SKris Kennaway { 1050ddd58736SKris Kennaway $dso_cflags = "-DDSO_$dso_scheme"; 1051ddd58736SKris Kennaway } 1052ddd58736SKris Kennaway $cflags = "$dso_cflags $cflags"; 1053ddd58736SKris Kennaway } 1054ddd58736SKris Kennaway 105574664626SKris Kennawaymy $thread_cflags; 1056f579bf8eSKris Kennawaymy $thread_defines; 105774664626SKris Kennawayif ($thread_cflag ne "(unknown)" && !$no_threads) 105874664626SKris Kennaway { 105974664626SKris Kennaway # If we know how to do it, support threads by default. 106074664626SKris Kennaway $threads = 1; 106174664626SKris Kennaway } 106274664626SKris Kennawayif ($thread_cflag eq "(unknown)") 106374664626SKris Kennaway { 106474664626SKris Kennaway # If the user asked for "threads", hopefully they also provided 106574664626SKris Kennaway # any system-dependent compiler options that are necessary. 10665c87c606SMark Murray $thread_cflags="-DOPENSSL_THREADS $cflags" ; 10675c87c606SMark Murray $thread_defines .= "#define OPENSSL_THREADS\n"; 106874664626SKris Kennaway } 106974664626SKris Kennawayelse 107074664626SKris Kennaway { 10715c87c606SMark Murray $thread_cflags="-DOPENSSL_THREADS $thread_cflag $cflags"; 10725c87c606SMark Murray $thread_defines .= "#define OPENSSL_THREADS\n"; 1073f579bf8eSKris Kennaway# my $def; 1074f579bf8eSKris Kennaway# foreach $def (split ' ',$thread_cflag) 1075f579bf8eSKris Kennaway# { 1076f579bf8eSKris Kennaway# if ($def =~ s/^-D// && $def !~ /^_/) 1077f579bf8eSKris Kennaway# { 1078f579bf8eSKris Kennaway# $thread_defines .= "#define $def\n"; 1079f579bf8eSKris Kennaway# } 1080f579bf8eSKris Kennaway# } 108174664626SKris Kennaway } 108274664626SKris Kennaway 108374664626SKris Kennaway$lflags="$libs$lflags" if ($libs ne ""); 108474664626SKris Kennaway 108574664626SKris Kennawayif ($no_asm) 108674664626SKris Kennaway { 108774664626SKris Kennaway $bn_obj=$des_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj=""; 108874664626SKris Kennaway $sha1_obj=$md5_obj=$rmd160_obj=""; 108974664626SKris Kennaway } 109074664626SKris Kennaway 10915c87c606SMark Murrayif (!$no_shared) 10925c87c606SMark Murray { 10935c87c606SMark Murray $cast_obj=""; # CAST assembler is not PIC 10945c87c606SMark Murray } 10955c87c606SMark Murray 109674664626SKris Kennawayif ($threads) 109774664626SKris Kennaway { 109874664626SKris Kennaway $cflags=$thread_cflags; 1099f579bf8eSKris Kennaway $openssl_thread_defines .= $thread_defines; 110074664626SKris Kennaway } 110174664626SKris Kennaway 11025c87c606SMark Murrayif ($zlib) 11035c87c606SMark Murray { 11045c87c606SMark Murray $cflags = "-DZLIB $cflags"; 11055c87c606SMark Murray $cflags = "-DZLIB_SHARED $cflags" if $zlib == 2; 11065c87c606SMark Murray $lflags = "$lflags -lz" if $zlib == 1; 11075c87c606SMark Murray } 11085c87c606SMark Murray 1109ddd58736SKris Kennaway# You will find shlib_mark1 and shlib_mark2 explained in Makefile.org 11105740a5e3SKris Kennawaymy $shared_mark = ""; 11115c87c606SMark Murrayif ($shared_target eq "") 11125c87c606SMark Murray { 1113fceca8a3SJacques Vidrine $no_shared_warn = 1 if !$no_shared; 11145c87c606SMark Murray $no_shared = 1; 11155c87c606SMark Murray } 11165c87c606SMark Murrayif (!$no_shared) 11175740a5e3SKris Kennaway { 1118ddd58736SKris Kennaway if ($shared_cflag ne "") 1119ddd58736SKris Kennaway { 1120ddd58736SKris Kennaway $cflags = "$shared_cflag $cflags"; 11215740a5e3SKris Kennaway } 1122ddd58736SKris Kennaway } 11235c87c606SMark Murray 11245c87c606SMark Murrayif ($sys_id ne "") 1125de7cdddaSKris Kennaway { 11265c87c606SMark Murray $cflags="-DOPENSSL_SYSNAME_$sys_id $cflags"; 11275c87c606SMark Murray $openssl_sys_defines="#define OPENSSL_SYSNAME_$sys_id\n"; 1128de7cdddaSKris Kennaway } 1129ddd58736SKris Kennaway 11305740a5e3SKris Kennawayif ($ranlib eq "") 11315740a5e3SKris Kennaway { 11325740a5e3SKris Kennaway $ranlib = $default_ranlib; 11335740a5e3SKris Kennaway } 11345740a5e3SKris Kennaway 113574664626SKris Kennaway#my ($bn1)=split(/\s+/,$bn_obj); 113674664626SKris Kennaway#$bn1 = "" unless defined $bn1; 113774664626SKris Kennaway#$bn1=$bn_asm unless ($bn1 =~ /\.o$/); 113874664626SKris Kennaway#$bn_obj="$bn1"; 113974664626SKris Kennaway 114074664626SKris Kennaway$bn_obj = $bn_asm unless $bn_obj ne ""; 114174664626SKris Kennaway 114274664626SKris Kennaway$des_obj=$des_enc unless ($des_obj =~ /\.o$/); 114374664626SKris Kennaway$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/); 114474664626SKris Kennaway$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/); 114574664626SKris Kennaway$rc4_obj=$rc4_enc unless ($rc4_obj =~ /\.o$/); 114674664626SKris Kennaway$rc5_obj=$rc5_enc unless ($rc5_obj =~ /\.o$/); 114774664626SKris Kennawayif ($sha1_obj =~ /\.o$/) 114874664626SKris Kennaway { 114974664626SKris Kennaway# $sha1_obj=$sha1_enc; 115074664626SKris Kennaway $cflags.=" -DSHA1_ASM"; 115174664626SKris Kennaway } 115274664626SKris Kennawayif ($md5_obj =~ /\.o$/) 115374664626SKris Kennaway { 115474664626SKris Kennaway# $md5_obj=$md5_enc; 115574664626SKris Kennaway $cflags.=" -DMD5_ASM"; 115674664626SKris Kennaway } 115774664626SKris Kennawayif ($rmd160_obj =~ /\.o$/) 115874664626SKris Kennaway { 115974664626SKris Kennaway# $rmd160_obj=$rmd160_enc; 116074664626SKris Kennaway $cflags.=" -DRMD160_ASM"; 116174664626SKris Kennaway } 116274664626SKris Kennaway 11634f20a5a2SJacques Vidrine# "Stringify" the C flags string. This permits it to be made part of a string 11644f20a5a2SJacques Vidrine# and works as well on command lines. 11654f20a5a2SJacques Vidrine$cflags =~ s/([\\\"])/\\\1/g; 11664f20a5a2SJacques Vidrine 116774664626SKris Kennawaymy $version = "unknown"; 116874664626SKris Kennawaymy $major = "unknown"; 116974664626SKris Kennawaymy $minor = "unknown"; 1170ddd58736SKris Kennawaymy $shlib_version_number = "unknown"; 1171ddd58736SKris Kennawaymy $shlib_version_history = "unknown"; 1172ddd58736SKris Kennawaymy $shlib_major = "unknown"; 1173ddd58736SKris Kennawaymy $shlib_minor = "unknown"; 117474664626SKris Kennaway 117574664626SKris Kennawayopen(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n"; 117674664626SKris Kennawaywhile (<IN>) 117774664626SKris Kennaway { 117874664626SKris Kennaway $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /; 1179ddd58736SKris Kennaway $shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/; 1180ddd58736SKris Kennaway $shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/; 118174664626SKris Kennaway } 118274664626SKris Kennawayclose(IN); 1183ddd58736SKris Kennawayif ($shlib_version_history ne "") { $shlib_version_history .= ":"; } 118474664626SKris Kennaway 118574664626SKris Kennawayif ($version =~ /(^[0-9]*)\.([0-9\.]*)/) 118674664626SKris Kennaway { 118774664626SKris Kennaway $major=$1; 118874664626SKris Kennaway $minor=$2; 118974664626SKris Kennaway } 119074664626SKris Kennaway 1191ddd58736SKris Kennawayif ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/) 1192ddd58736SKris Kennaway { 1193ddd58736SKris Kennaway $shlib_major=$1; 1194ddd58736SKris Kennaway $shlib_minor=$2; 1195ddd58736SKris Kennaway } 1196ddd58736SKris Kennaway 119774664626SKris Kennawayopen(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n"; 11985c87c606SMark Murrayunlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new"; 11995c87c606SMark Murrayopen(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n"; 1200f579bf8eSKris Kennawayprint OUT "### Generated automatically from Makefile.org by Configure.\n\n"; 120174664626SKris Kennawaymy $sdirs=0; 120274664626SKris Kennawaywhile (<IN>) 120374664626SKris Kennaway { 120474664626SKris Kennaway chop; 120574664626SKris Kennaway $sdirs = 1 if /^SDIRS=/; 120674664626SKris Kennaway if ($sdirs) { 120774664626SKris Kennaway my $dir; 120874664626SKris Kennaway foreach $dir (@skip) { 12095c87c606SMark Murray s/([ ])$dir /\1/; 121074664626SKris Kennaway } 121174664626SKris Kennaway } 121274664626SKris Kennaway $sdirs = 0 unless /\\$/; 121374664626SKris Kennaway s/^VERSION=.*/VERSION=$version/; 121474664626SKris Kennaway s/^MAJOR=.*/MAJOR=$major/; 121574664626SKris Kennaway s/^MINOR=.*/MINOR=$minor/; 1216ddd58736SKris Kennaway s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=$shlib_version_number/; 1217ddd58736SKris Kennaway s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/; 1218ddd58736SKris Kennaway s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/; 1219ddd58736SKris Kennaway s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/; 12205740a5e3SKris Kennaway s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/; 122174664626SKris Kennaway s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/; 122274664626SKris Kennaway s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/; 122374664626SKris Kennaway s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/; 122474664626SKris Kennaway s/^PLATFORM=.*$/PLATFORM=$target/; 122574664626SKris Kennaway s/^OPTIONS=.*$/OPTIONS=$options/; 1226ddd58736SKris Kennaway s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/; 122774664626SKris Kennaway s/^CC=.*$/CC= $cc/; 12285c87c606SMark Murray s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc"; 122974664626SKris Kennaway s/^CFLAG=.*$/CFLAG= $cflags/; 123074664626SKris Kennaway s/^DEPFLAG=.*$/DEPFLAG= $depflags/; 123174664626SKris Kennaway s/^EX_LIBS=.*$/EX_LIBS= $lflags/; 12325740a5e3SKris Kennaway s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/; 123374664626SKris Kennaway s/^BN_ASM=.*$/BN_ASM= $bn_obj/; 123474664626SKris Kennaway s/^DES_ENC=.*$/DES_ENC= $des_obj/; 123574664626SKris Kennaway s/^BF_ENC=.*$/BF_ENC= $bf_obj/; 123674664626SKris Kennaway s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/; 123774664626SKris Kennaway s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/; 123874664626SKris Kennaway s/^RC5_ENC=.*$/RC5_ENC= $rc5_obj/; 123974664626SKris Kennaway s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/; 124074664626SKris Kennaway s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/; 124174664626SKris Kennaway s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/; 124274664626SKris Kennaway s/^PROCESSOR=.*/PROCESSOR= $processor/; 124374664626SKris Kennaway s/^RANLIB=.*/RANLIB= $ranlib/; 12445c87c606SMark Murray s/^ARFLAGS=.*/ARFLAGS= $arflags/; 124574664626SKris Kennaway s/^PERL=.*/PERL= $perl/; 12465c87c606SMark Murray s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/; 1247fceca8a3SJacques Vidrine s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/; 1248ddd58736SKris Kennaway s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/; 12495740a5e3SKris Kennaway s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/; 12505740a5e3SKris Kennaway s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared); 1251a21b1b38SKris Kennaway if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/) 1252a21b1b38SKris Kennaway { 1253a21b1b38SKris Kennaway my $sotmp = $1; 12544f20a5a2SJacques Vidrine s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/; 12554f20a5a2SJacques Vidrine } 12564f20a5a2SJacques Vidrine elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.dylib$/) 12574f20a5a2SJacques Vidrine { 12584f20a5a2SJacques Vidrine s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.dylib/; 1259a21b1b38SKris Kennaway } 1260a21b1b38SKris Kennaway elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/) 1261a21b1b38SKris Kennaway { 1262a21b1b38SKris Kennaway my $sotmp = $1; 1263a21b1b38SKris Kennaway s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/; 1264a21b1b38SKris Kennaway } 12654f20a5a2SJacques Vidrine elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/) 12664f20a5a2SJacques Vidrine { 12674f20a5a2SJacques Vidrine s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/; 12684f20a5a2SJacques Vidrine } 1269c1803d78SJacques Vidrine s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/; 127074664626SKris Kennaway print OUT $_."\n"; 127174664626SKris Kennaway } 127274664626SKris Kennawayclose(IN); 127374664626SKris Kennawayclose(OUT); 12745c87c606SMark Murrayrename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e $Makefile; 12755c87c606SMark Murrayrename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n"; 127674664626SKris Kennaway 127774664626SKris Kennawayprint "CC =$cc\n"; 127874664626SKris Kennawayprint "CFLAG =$cflags\n"; 127974664626SKris Kennawayprint "EX_LIBS =$lflags\n"; 128074664626SKris Kennawayprint "BN_ASM =$bn_obj\n"; 128174664626SKris Kennawayprint "DES_ENC =$des_obj\n"; 128274664626SKris Kennawayprint "BF_ENC =$bf_obj\n"; 128374664626SKris Kennawayprint "CAST_ENC =$cast_obj\n"; 128474664626SKris Kennawayprint "RC4_ENC =$rc4_obj\n"; 128574664626SKris Kennawayprint "RC5_ENC =$rc5_obj\n"; 128674664626SKris Kennawayprint "MD5_OBJ_ASM =$md5_obj\n"; 128774664626SKris Kennawayprint "SHA1_OBJ_ASM =$sha1_obj\n"; 128874664626SKris Kennawayprint "RMD160_OBJ_ASM=$rmd160_obj\n"; 128974664626SKris Kennawayprint "PROCESSOR =$processor\n"; 129074664626SKris Kennawayprint "RANLIB =$ranlib\n"; 12915c87c606SMark Murrayprint "ARFLAGS =$arflags\n"; 129274664626SKris Kennawayprint "PERL =$perl\n"; 12935c87c606SMark Murrayprint "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n" 12945c87c606SMark Murray if $withargs{"krb5-include"} ne ""; 129574664626SKris Kennaway 129674664626SKris Kennawaymy $des_ptr=0; 129774664626SKris Kennawaymy $des_risc1=0; 129874664626SKris Kennawaymy $des_risc2=0; 129974664626SKris Kennawaymy $des_unroll=0; 130074664626SKris Kennawaymy $bn_ll=0; 130174664626SKris Kennawaymy $def_int=2; 130274664626SKris Kennawaymy $rc4_int=$def_int; 130374664626SKris Kennawaymy $md2_int=$def_int; 130474664626SKris Kennawaymy $idea_int=$def_int; 130574664626SKris Kennawaymy $rc2_int=$def_int; 130674664626SKris Kennawaymy $rc4_idx=0; 1307f579bf8eSKris Kennawaymy $rc4_chunk=0; 130874664626SKris Kennawaymy $bf_ptr=0; 130974664626SKris Kennawaymy @type=("char","short","int","long"); 131074664626SKris Kennawaymy ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0); 13115c87c606SMark Murraymy $export_var_as_fn=0; 131274664626SKris Kennaway 131374664626SKris Kennawaymy $des_int; 131474664626SKris Kennaway 131574664626SKris Kennawayforeach (sort split(/\s+/,$bn_ops)) 131674664626SKris Kennaway { 131774664626SKris Kennaway $des_ptr=1 if /DES_PTR/; 131874664626SKris Kennaway $des_risc1=1 if /DES_RISC1/; 131974664626SKris Kennaway $des_risc2=1 if /DES_RISC2/; 132074664626SKris Kennaway $des_unroll=1 if /DES_UNROLL/; 132174664626SKris Kennaway $des_int=1 if /DES_INT/; 132274664626SKris Kennaway $bn_ll=1 if /BN_LLONG/; 132374664626SKris Kennaway $rc4_int=0 if /RC4_CHAR/; 132474664626SKris Kennaway $rc4_int=3 if /RC4_LONG/; 132574664626SKris Kennaway $rc4_idx=1 if /RC4_INDEX/; 1326f579bf8eSKris Kennaway $rc4_chunk=1 if /RC4_CHUNK/; 1327f579bf8eSKris Kennaway $rc4_chunk=2 if /RC4_CHUNK_LL/; 132874664626SKris Kennaway $md2_int=0 if /MD2_CHAR/; 132974664626SKris Kennaway $md2_int=3 if /MD2_LONG/; 133074664626SKris Kennaway $idea_int=1 if /IDEA_SHORT/; 133174664626SKris Kennaway $idea_int=3 if /IDEA_LONG/; 133274664626SKris Kennaway $rc2_int=1 if /RC2_SHORT/; 133374664626SKris Kennaway $rc2_int=3 if /RC2_LONG/; 133474664626SKris Kennaway $bf_ptr=1 if $_ eq "BF_PTR"; 133574664626SKris Kennaway $bf_ptr=2 if $_ eq "BF_PTR2"; 133674664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(0,1,0,0,0) if /SIXTY_FOUR_BIT/; 133774664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(1,0,0,0,0) if /SIXTY_FOUR_BIT_LONG/; 133874664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0) if /THIRTY_TWO_BIT/; 133974664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,1,0) if /SIXTEEN_BIT/; 134074664626SKris Kennaway ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/; 13415c87c606SMark Murray $export_var_as_fn=1 if /EXPORT_VAR_AS_FN/; 134274664626SKris Kennaway } 134374664626SKris Kennaway 134474664626SKris Kennawayopen(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n"; 13455c87c606SMark Murrayunlink("crypto/opensslconf.h.new") || die "unable to remove old crypto/opensslconf.h.new:$!\n" if -e "crypto/opensslconf.h.new"; 13465c87c606SMark Murrayopen(OUT,'>crypto/opensslconf.h.new') || die "unable to create crypto/opensslconf.h.new:$!\n"; 1347f579bf8eSKris Kennawayprint OUT "/* opensslconf.h */\n"; 1348f579bf8eSKris Kennawayprint OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n"; 1349f579bf8eSKris Kennaway 1350f579bf8eSKris Kennawayprint OUT "/* OpenSSL was configured with the following options: */\n"; 13515c87c606SMark Murraymy $openssl_algorithm_defines_trans = $openssl_algorithm_defines; 13525c87c606SMark Murray$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n# define $1\n# endif/mg; 1353f579bf8eSKris Kennaway$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 1354f579bf8eSKris Kennaway$openssl_algorithm_defines = " /* no ciphers excluded */\n" if $openssl_algorithm_defines eq ""; 1355f579bf8eSKris Kennaway$openssl_thread_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 13565c87c606SMark Murray$openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 1357f579bf8eSKris Kennaway$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 13585c87c606SMark Murrayprint OUT $openssl_sys_defines; 13595c87c606SMark Murrayprint OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n"; 13605c87c606SMark Murrayprint OUT $openssl_algorithm_defines; 13615c87c606SMark Murrayprint OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n"; 13625c87c606SMark Murrayprint OUT $openssl_thread_defines; 13635c87c606SMark Murrayprint OUT $openssl_other_defines,"\n"; 13645c87c606SMark Murray 13655c87c606SMark Murrayprint OUT "/* The OPENSSL_NO_* macros are also defined as NO_* if the application\n"; 13665c87c606SMark Murrayprint OUT " asks for it. This is a transient feature that is provided for those\n"; 13675c87c606SMark Murrayprint OUT " who haven't had the time to do the appropriate changes in their\n"; 13685c87c606SMark Murrayprint OUT " applications. */\n"; 13695c87c606SMark Murrayprint OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n"; 13705c87c606SMark Murrayprint OUT $openssl_algorithm_defines_trans; 13715c87c606SMark Murrayprint OUT "#endif\n\n"; 1372f579bf8eSKris Kennaway 137374664626SKris Kennawaywhile (<IN>) 137474664626SKris Kennaway { 137574664626SKris Kennaway if (/^#define\s+OPENSSLDIR/) 137674664626SKris Kennaway { print OUT "#define OPENSSLDIR \"$openssldir\"\n"; } 13775c87c606SMark Murray elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/) 13785c87c606SMark Murray { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n" 13795c87c606SMark Murray if $export_var_as_fn; 13805c87c606SMark Murray printf OUT "#%s OPENSSL_EXPORT_VAR_AS_FUNCTION\n", 13815c87c606SMark Murray ($export_var_as_fn)?"define":"undef"; } 138274664626SKris Kennaway elsif (/^#define\s+OPENSSL_UNISTD/) 138374664626SKris Kennaway { 138474664626SKris Kennaway $unistd = "<unistd.h>" if $unistd eq ""; 138574664626SKris Kennaway print OUT "#define OPENSSL_UNISTD $unistd\n"; 138674664626SKris Kennaway } 138774664626SKris Kennaway elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/) 138874664626SKris Kennaway { printf OUT "#%s SIXTY_FOUR_BIT_LONG\n",($b64l)?"define":"undef"; } 138974664626SKris Kennaway elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT/) 139074664626SKris Kennaway { printf OUT "#%s SIXTY_FOUR_BIT\n",($b64)?"define":"undef"; } 139174664626SKris Kennaway elsif (/^#((define)|(undef))\s+THIRTY_TWO_BIT/) 139274664626SKris Kennaway { printf OUT "#%s THIRTY_TWO_BIT\n",($b32)?"define":"undef"; } 139374664626SKris Kennaway elsif (/^#((define)|(undef))\s+SIXTEEN_BIT/) 139474664626SKris Kennaway { printf OUT "#%s SIXTEEN_BIT\n",($b16)?"define":"undef"; } 139574664626SKris Kennaway elsif (/^#((define)|(undef))\s+EIGHT_BIT/) 139674664626SKris Kennaway { printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; } 139774664626SKris Kennaway elsif (/^#((define)|(undef))\s+BN_LLONG\s*$/) 139874664626SKris Kennaway { printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; } 139974664626SKris Kennaway elsif (/^\#define\s+DES_LONG\s+.*/) 140074664626SKris Kennaway { printf OUT "#define DES_LONG unsigned %s\n", 140174664626SKris Kennaway ($des_int)?'int':'long'; } 140274664626SKris Kennaway elsif (/^\#(define|undef)\s+DES_PTR/) 140374664626SKris Kennaway { printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; } 140474664626SKris Kennaway elsif (/^\#(define|undef)\s+DES_RISC1/) 140574664626SKris Kennaway { printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; } 140674664626SKris Kennaway elsif (/^\#(define|undef)\s+DES_RISC2/) 140774664626SKris Kennaway { printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; } 140874664626SKris Kennaway elsif (/^\#(define|undef)\s+DES_UNROLL/) 140974664626SKris Kennaway { printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; } 141074664626SKris Kennaway elsif (/^#define\s+RC4_INT\s/) 141174664626SKris Kennaway { printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; } 1412f579bf8eSKris Kennaway elsif (/^#undef\s+RC4_CHUNK/) 1413f579bf8eSKris Kennaway { 1414f579bf8eSKris Kennaway printf OUT "#undef RC4_CHUNK\n" if $rc4_chunk==0; 1415f579bf8eSKris Kennaway printf OUT "#define RC4_CHUNK unsigned long\n" if $rc4_chunk==1; 1416f579bf8eSKris Kennaway printf OUT "#define RC4_CHUNK unsigned long long\n" if $rc4_chunk==2; 1417f579bf8eSKris Kennaway } 141874664626SKris Kennaway elsif (/^#((define)|(undef))\s+RC4_INDEX/) 141974664626SKris Kennaway { printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; } 142074664626SKris Kennaway elsif (/^#(define|undef)\s+I386_ONLY/) 142174664626SKris Kennaway { printf OUT "#%s I386_ONLY\n", ($processor == 386)? 142274664626SKris Kennaway "define":"undef"; } 142374664626SKris Kennaway elsif (/^#define\s+MD2_INT\s/) 142474664626SKris Kennaway { printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; } 142574664626SKris Kennaway elsif (/^#define\s+IDEA_INT\s/) 142674664626SKris Kennaway {printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];} 142774664626SKris Kennaway elsif (/^#define\s+RC2_INT\s/) 142874664626SKris Kennaway {printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];} 142974664626SKris Kennaway elsif (/^#(define|undef)\s+BF_PTR/) 143074664626SKris Kennaway { 143174664626SKris Kennaway printf OUT "#undef BF_PTR\n" if $bf_ptr == 0; 143274664626SKris Kennaway printf OUT "#define BF_PTR\n" if $bf_ptr == 1; 143374664626SKris Kennaway printf OUT "#define BF_PTR2\n" if $bf_ptr == 2; 143474664626SKris Kennaway } 143574664626SKris Kennaway else 143674664626SKris Kennaway { print OUT $_; } 143774664626SKris Kennaway } 143874664626SKris Kennawayclose(IN); 143974664626SKris Kennawayclose(OUT); 14405c87c606SMark Murrayrename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h"; 14415c87c606SMark Murrayrename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to rename crypto/opensslconf.h.new\n"; 144274664626SKris Kennaway 144374664626SKris Kennaway 144474664626SKris Kennaway# Fix the date 144574664626SKris Kennaway 144674664626SKris Kennawayprint "SIXTY_FOUR_BIT_LONG mode\n" if $b64l; 144774664626SKris Kennawayprint "SIXTY_FOUR_BIT mode\n" if $b64; 144874664626SKris Kennawayprint "THIRTY_TWO_BIT mode\n" if $b32; 144974664626SKris Kennawayprint "SIXTEEN_BIT mode\n" if $b16; 145074664626SKris Kennawayprint "EIGHT_BIT mode\n" if $b8; 145174664626SKris Kennawayprint "DES_PTR used\n" if $des_ptr; 145274664626SKris Kennawayprint "DES_RISC1 used\n" if $des_risc1; 145374664626SKris Kennawayprint "DES_RISC2 used\n" if $des_risc2; 145474664626SKris Kennawayprint "DES_UNROLL used\n" if $des_unroll; 145574664626SKris Kennawayprint "DES_INT used\n" if $des_int; 145674664626SKris Kennawayprint "BN_LLONG mode\n" if $bn_ll; 145774664626SKris Kennawayprint "RC4 uses u$type[$rc4_int]\n" if $rc4_int != $def_int; 145874664626SKris Kennawayprint "RC4_INDEX mode\n" if $rc4_idx; 1459f579bf8eSKris Kennawayprint "RC4_CHUNK is undefined\n" if $rc4_chunk==0; 1460f579bf8eSKris Kennawayprint "RC4_CHUNK is unsigned long\n" if $rc4_chunk==1; 1461f579bf8eSKris Kennawayprint "RC4_CHUNK is unsigned long long\n" if $rc4_chunk==2; 146274664626SKris Kennawayprint "MD2 uses u$type[$md2_int]\n" if $md2_int != $def_int; 146374664626SKris Kennawayprint "IDEA uses u$type[$idea_int]\n" if $idea_int != $def_int; 146474664626SKris Kennawayprint "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int; 146574664626SKris Kennawayprint "BF_PTR used\n" if $bf_ptr == 1; 146674664626SKris Kennawayprint "BF_PTR2 used\n" if $bf_ptr == 2; 146774664626SKris Kennaway 146874664626SKris Kennawayif($IsWindows) { 146974664626SKris Kennaway open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h"; 147074664626SKris Kennaway printf OUT <<EOF; 147174664626SKris Kennaway#ifndef MK1MF_BUILD 147274664626SKris Kennaway /* auto-generated by Configure for crypto/cversion.c: 147374664626SKris Kennaway * for Unix builds, crypto/Makefile.ssl generates functional definitions; 147474664626SKris Kennaway * Windows builds (and other mk1mf builds) compile cversion.c with 147574664626SKris Kennaway * -DMK1MF_BUILD and use definitions added to this file by util/mk1mf.pl. */ 147674664626SKris Kennaway #error "Windows builds (PLATFORM=$target) use mk1mf.pl-created Makefiles" 147774664626SKris Kennaway#endif 147874664626SKris KennawayEOF 147974664626SKris Kennaway close(OUT); 148074664626SKris Kennaway} else { 14815c87c606SMark Murray my $make_command = "make -f Makefile.ssl PERL=\'$perl\'"; 14825c87c606SMark Murray my $make_targets = ""; 14835c87c606SMark Murray $make_targets .= " links" if $symlink; 14845c87c606SMark Murray $make_targets .= " depend" if $depflags ne "" && $make_depend; 14855c87c606SMark Murray $make_targets .= " gentests" if $symlink; 14865c87c606SMark Murray (system $make_command.$make_targets) == 0 or exit $? 14875c87c606SMark Murray if $make_targets ne ""; 148874664626SKris Kennaway if ( $perl =~ m@^/@) { 1489ddd58736SKris Kennaway &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";'); 149074664626SKris Kennaway &dofile("apps/der_chop",$perl,'^#!/', '#!%s'); 1491f579bf8eSKris Kennaway &dofile("apps/CA.pl",$perl,'^#!/', '#!%s'); 149274664626SKris Kennaway } else { 149374664626SKris Kennaway # No path for Perl known ... 1494ddd58736SKris Kennaway &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";'); 149574664626SKris Kennaway &dofile("apps/der_chop",'/usr/local/bin/perl','^#!/', '#!%s'); 1496f579bf8eSKris Kennaway &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s'); 149774664626SKris Kennaway } 14985c87c606SMark Murray if ($depflags ne "" && !$make_depend) { 14995c87c606SMark Murray print <<EOF; 15005c87c606SMark Murray 15015c87c606SMark MurraySince you've disabled at least one algorithm, you need to do the following 15025c87c606SMark Murraybefore building: 15035c87c606SMark Murray 15045c87c606SMark Murray make depend 15055c87c606SMark MurrayEOF 15065c87c606SMark Murray } 150774664626SKris Kennaway} 150874664626SKris Kennaway 150974664626SKris Kennawayprint <<EOF; 151074664626SKris Kennaway 1511f579bf8eSKris KennawayConfigured for $target. 151274664626SKris KennawayEOF 151374664626SKris Kennaway 151474664626SKris Kennawayprint <<\EOF if (!$no_threads && !$threads); 151574664626SKris Kennaway 151674664626SKris KennawayThe library could not be configured for supporting multi-threaded 151774664626SKris Kennawayapplications as the compiler options required on this system are not known. 151874664626SKris KennawaySee file INSTALL for details if you need multi-threading. 151974664626SKris KennawayEOF 152074664626SKris Kennaway 1521fceca8a3SJacques Vidrineprint <<\EOF if ($no_shared_warn); 1522fceca8a3SJacques Vidrine 1523fceca8a3SJacques VidrineYou gave the option 'shared'. Normally, that would give you shared libraries. 1524fceca8a3SJacques VidrineUnfortunately, the OpenSSL configuration doesn't include shared library support 1525fceca8a3SJacques Vidrinefor this platform yet, so it will pretend you gave the option 'no-shared'. If 1526fceca8a3SJacques Vidrineyou can inform the developpers (openssl-dev\@openssl.org) how to support shared 1527fceca8a3SJacques Vidrinelibraries on this platform, they will at least look at it and try their best 1528fceca8a3SJacques Vidrine(but please first make sure you have tried with a current version of OpenSSL). 1529fceca8a3SJacques VidrineEOF 1530fceca8a3SJacques Vidrine 153174664626SKris Kennawayexit(0); 153274664626SKris Kennaway 153374664626SKris Kennawaysub usage 153474664626SKris Kennaway { 153574664626SKris Kennaway print STDERR $usage; 1536f579bf8eSKris Kennaway print STDERR "\npick os/compiler from:\n"; 153774664626SKris Kennaway my $j=0; 153874664626SKris Kennaway my $i; 1539f579bf8eSKris Kennaway my $k=0; 154074664626SKris Kennaway foreach $i (sort keys %table) 154174664626SKris Kennaway { 154274664626SKris Kennaway next if $i =~ /^debug/; 1543f579bf8eSKris Kennaway $k += length($i) + 1; 1544f579bf8eSKris Kennaway if ($k > 78) 1545f579bf8eSKris Kennaway { 1546f579bf8eSKris Kennaway print STDERR "\n"; 1547f579bf8eSKris Kennaway $k=length($i); 1548f579bf8eSKris Kennaway } 1549f579bf8eSKris Kennaway print STDERR $i . " "; 155074664626SKris Kennaway } 155174664626SKris Kennaway foreach $i (sort keys %table) 155274664626SKris Kennaway { 155374664626SKris Kennaway next if $i !~ /^debug/; 1554f579bf8eSKris Kennaway $k += length($i) + 1; 1555f579bf8eSKris Kennaway if ($k > 78) 1556f579bf8eSKris Kennaway { 155774664626SKris Kennaway print STDERR "\n"; 1558f579bf8eSKris Kennaway $k=length($i); 1559f579bf8eSKris Kennaway } 1560f579bf8eSKris Kennaway print STDERR $i . " "; 1561f579bf8eSKris Kennaway } 1562f579bf8eSKris Kennaway print STDERR "\n\nNOTE: If in doubt, on Unix-ish systems use './config'.\n"; 156374664626SKris Kennaway exit(1); 156474664626SKris Kennaway } 156574664626SKris Kennaway 156674664626SKris Kennawaysub which 156774664626SKris Kennaway { 156874664626SKris Kennaway my($name)=@_; 156974664626SKris Kennaway my $path; 157074664626SKris Kennaway foreach $path (split /:/, $ENV{PATH}) 157174664626SKris Kennaway { 157274664626SKris Kennaway if (-f "$path/$name" and -x _) 157374664626SKris Kennaway { 157474664626SKris Kennaway return "$path/$name" unless ($name eq "perl" and 157574664626SKris Kennaway system("$path/$name -e " . '\'exit($]<5.0);\'')); 157674664626SKris Kennaway } 157774664626SKris Kennaway } 157874664626SKris Kennaway } 157974664626SKris Kennaway 158074664626SKris Kennawaysub dofile 158174664626SKris Kennaway { 158274664626SKris Kennaway my $f; my $p; my %m; my @a; my $k; my $ff; 158374664626SKris Kennaway ($f,$p,%m)=@_; 158474664626SKris Kennaway 158574664626SKris Kennaway open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n"; 158674664626SKris Kennaway @a=<IN>; 158774664626SKris Kennaway close(IN); 158874664626SKris Kennaway foreach $k (keys %m) 158974664626SKris Kennaway { 159074664626SKris Kennaway grep(/$k/ && ($_=sprintf($m{$k}."\n",$p)),@a); 159174664626SKris Kennaway } 1592f579bf8eSKris Kennaway open(OUT,">$f.new") || die "unable to open $f.new:$!\n"; 159374664626SKris Kennaway print OUT @a; 159474664626SKris Kennaway close(OUT); 1595f579bf8eSKris Kennaway rename($f,"$f.bak") || die "unable to rename $f\n" if -e $f; 1596f579bf8eSKris Kennaway rename("$f.new",$f) || die "unable to rename $f.new\n"; 159774664626SKris Kennaway } 159874664626SKris Kennaway 159974664626SKris Kennawaysub print_table_entry 160074664626SKris Kennaway { 160174664626SKris Kennaway my $target = shift; 160274664626SKris Kennaway 16035c87c606SMark Murray (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags, 16045c87c606SMark Murray my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj, 1605ddd58736SKris Kennaway my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj, 16065740a5e3SKris Kennaway my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag, 16075c87c606SMark Murray my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)= 16085740a5e3SKris Kennaway split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 160974664626SKris Kennaway 161074664626SKris Kennaway print <<EOF 161174664626SKris Kennaway 161274664626SKris Kennaway*** $target 161374664626SKris Kennaway\$cc = $cc 161474664626SKris Kennaway\$cflags = $cflags 161574664626SKris Kennaway\$unistd = $unistd 161674664626SKris Kennaway\$thread_cflag = $thread_cflag 16175c87c606SMark Murray\$sys_id = $sys_id 161874664626SKris Kennaway\$lflags = $lflags 161974664626SKris Kennaway\$bn_ops = $bn_ops 162074664626SKris Kennaway\$bn_obj = $bn_obj 162174664626SKris Kennaway\$des_obj = $des_obj 162274664626SKris Kennaway\$bf_obj = $bf_obj 162374664626SKris Kennaway\$md5_obj = $md5_obj 162474664626SKris Kennaway\$sha1_obj = $sha1_obj 162574664626SKris Kennaway\$cast_obj = $cast_obj 162674664626SKris Kennaway\$rc4_obj = $rc4_obj 162774664626SKris Kennaway\$rmd160_obj = $rmd160_obj 162874664626SKris Kennaway\$rc5_obj = $rc5_obj 1629ddd58736SKris Kennaway\$dso_scheme = $dso_scheme 1630ddd58736SKris Kennaway\$shared_target= $shared_target 1631ddd58736SKris Kennaway\$shared_cflag = $shared_cflag 1632c1803d78SJacques Vidrine\$shared_ldflag = $shared_ldflag 16335740a5e3SKris Kennaway\$shared_extension = $shared_extension 16345740a5e3SKris Kennaway\$ranlib = $ranlib 16355c87c606SMark Murray\$arflags = $arflags 163674664626SKris KennawayEOF 163774664626SKris Kennaway } 1638c1803d78SJacques Vidrine 1639c1803d78SJacques Vidrinesub test_sanity 1640c1803d78SJacques Vidrine { 1641c1803d78SJacques Vidrine my $errorcnt = 0; 1642c1803d78SJacques Vidrine 1643c1803d78SJacques Vidrine print STDERR "=" x 70, "\n"; 1644c1803d78SJacques Vidrine print STDERR "=== SANITY TESTING!\n"; 1645c1803d78SJacques Vidrine print STDERR "=== No configuration will be done, all other arguments will be ignored!\n"; 1646c1803d78SJacques Vidrine print STDERR "=" x 70, "\n"; 1647c1803d78SJacques Vidrine 1648c1803d78SJacques Vidrine foreach $target (sort keys %table) 1649c1803d78SJacques Vidrine { 1650c1803d78SJacques Vidrine @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 1651c1803d78SJacques Vidrine 1652c1803d78SJacques Vidrine if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/) 1653c1803d78SJacques Vidrine { 1654c1803d78SJacques Vidrine $errorcnt++; 1655c1803d78SJacques Vidrine print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n"; 1656c1803d78SJacques Vidrine print STDERR " in the previous field\n"; 1657c1803d78SJacques Vidrine } 1658c1803d78SJacques Vidrine elsif ($fields[$idx_dso_scheme+1] =~ /^(dl|dlfcn|win32|vms)$/) 1659c1803d78SJacques Vidrine { 1660c1803d78SJacques Vidrine $errorcnt++; 1661c1803d78SJacques Vidrine print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n"; 1662c1803d78SJacques Vidrine print STDERR " in the following field\n"; 1663c1803d78SJacques Vidrine } 1664c1803d78SJacques Vidrine elsif ($fields[$idx_dso_scheme] !~ /^(dl|dlfcn|win32|vms|)$/) 1665c1803d78SJacques Vidrine { 1666c1803d78SJacques Vidrine $errorcnt++; 1667c1803d78SJacques Vidrine print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n"; 1668c1803d78SJacques Vidrine print STDERR " valid values are 'dl', 'dlfcn', 'win32' and 'vms'\n"; 1669c1803d78SJacques Vidrine } 1670c1803d78SJacques Vidrine } 1671c1803d78SJacques Vidrine print STDERR "No sanity errors detected!\n" if $errorcnt == 0; 1672c1803d78SJacques Vidrine return $errorcnt; 1673c1803d78SJacques Vidrine } 1674