1ebfedea0SLionel Sambuc: 2ebfedea0SLionel Sambuceval 'exec perl -S $0 ${1+"$@"}' 3ebfedea0SLionel Sambuc if $running_under_some_shell; 4ebfedea0SLionel Sambuc## 5ebfedea0SLionel Sambuc## Configure -- OpenSSL source tree configuration script 6ebfedea0SLionel Sambuc## 7ebfedea0SLionel Sambuc 8ebfedea0SLionel Sambucrequire 5.000; 9ebfedea0SLionel Sambucuse strict; 10ebfedea0SLionel Sambuc 11ebfedea0SLionel Sambuc# see INSTALL for instructions. 12ebfedea0SLionel Sambuc 13ebfedea0SLionel Sambucmy $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n"; 14ebfedea0SLionel Sambuc 15ebfedea0SLionel Sambuc# Options: 16ebfedea0SLionel Sambuc# 17ebfedea0SLionel Sambuc# --openssldir install OpenSSL in OPENSSLDIR (Default: DIR/ssl if the 18ebfedea0SLionel Sambuc# --prefix option is given; /usr/local/ssl otherwise) 19ebfedea0SLionel Sambuc# --prefix prefix for the OpenSSL include, lib and bin directories 20ebfedea0SLionel Sambuc# (Default: the OPENSSLDIR directory) 21ebfedea0SLionel Sambuc# 22ebfedea0SLionel Sambuc# --install_prefix Additional prefix for package builders (empty by 23ebfedea0SLionel Sambuc# default). This needn't be set in advance, you can 24ebfedea0SLionel Sambuc# just as well use "make INSTALL_PREFIX=/whatever install". 25ebfedea0SLionel Sambuc# 26ebfedea0SLionel Sambuc# --with-krb5-dir Declare where Kerberos 5 lives. The libraries are expected 27ebfedea0SLionel Sambuc# to live in the subdirectory lib/ and the header files in 28ebfedea0SLionel Sambuc# include/. A value is required. 29ebfedea0SLionel Sambuc# --with-krb5-lib Declare where the Kerberos 5 libraries live. A value is 30ebfedea0SLionel Sambuc# required. 31ebfedea0SLionel Sambuc# (Default: KRB5_DIR/lib) 32ebfedea0SLionel Sambuc# --with-krb5-include Declare where the Kerberos 5 header files live. A 33ebfedea0SLionel Sambuc# value is required. 34ebfedea0SLionel Sambuc# (Default: KRB5_DIR/include) 35ebfedea0SLionel Sambuc# --with-krb5-flavor Declare what flavor of Kerberos 5 is used. Currently 36ebfedea0SLionel Sambuc# supported values are "MIT" and "Heimdal". A value is required. 37ebfedea0SLionel Sambuc# 38ebfedea0SLionel Sambuc# --test-sanity Make a number of sanity checks on the data in this file. 39ebfedea0SLionel Sambuc# This is a debugging tool for OpenSSL developers. 40ebfedea0SLionel Sambuc# 41ebfedea0SLionel Sambuc# --cross-compile-prefix Add specified prefix to binutils components. 42ebfedea0SLionel Sambuc# 43ebfedea0SLionel Sambuc# no-hw-xxx do not compile support for specific crypto hardware. 44ebfedea0SLionel Sambuc# Generic OpenSSL-style methods relating to this support 45ebfedea0SLionel Sambuc# are always compiled but return NULL if the hardware 46ebfedea0SLionel Sambuc# support isn't compiled. 47ebfedea0SLionel Sambuc# no-hw do not compile support for any crypto hardware. 48ebfedea0SLionel Sambuc# [no-]threads [don't] try to create a library that is suitable for 49ebfedea0SLionel Sambuc# multithreaded applications (default is "threads" if we 50ebfedea0SLionel Sambuc# know how to do it) 51ebfedea0SLionel Sambuc# [no-]shared [don't] try to create shared libraries when supported. 52ebfedea0SLionel Sambuc# no-asm do not use assembler 53ebfedea0SLionel Sambuc# no-dso do not compile in any native shared-library methods. This 54ebfedea0SLionel Sambuc# will ensure that all methods just return NULL. 55ebfedea0SLionel Sambuc# no-krb5 do not compile in any KRB5 library or code. 56ebfedea0SLionel Sambuc# [no-]zlib [don't] compile support for zlib compression. 57ebfedea0SLionel Sambuc# zlib-dynamic Like "zlib", but the zlib library is expected to be a shared 58ebfedea0SLionel Sambuc# library and will be loaded in run-time by the OpenSSL library. 59ebfedea0SLionel Sambuc# sctp include SCTP support 60ebfedea0SLionel Sambuc# 386 generate 80386 code 61ebfedea0SLionel Sambuc# no-sse2 disables IA-32 SSE2 code, above option implies no-sse2 62ebfedea0SLionel Sambuc# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...) 63ebfedea0SLionel Sambuc# -<xxx> +<xxx> compiler options are passed through 64ebfedea0SLionel Sambuc# 65ebfedea0SLionel Sambuc# DEBUG_SAFESTACK use type-safe stacks to enforce type-safety on stack items 66ebfedea0SLionel Sambuc# provided to stack calls. Generates unique stack functions for 67ebfedea0SLionel Sambuc# each possible stack type. 68ebfedea0SLionel Sambuc# DES_PTR use pointer lookup vs arrays in the DES in crypto/des/des_locl.h 69ebfedea0SLionel Sambuc# DES_RISC1 use different DES_ENCRYPT macro that helps reduce register 70ebfedea0SLionel Sambuc# dependancies but needs to more registers, good for RISC CPU's 71ebfedea0SLionel Sambuc# DES_RISC2 A different RISC variant. 72ebfedea0SLionel Sambuc# DES_UNROLL unroll the inner DES loop, sometimes helps, somtimes hinders. 73ebfedea0SLionel Sambuc# DES_INT use 'int' instead of 'long' for DES_LONG in crypto/des/des.h 74ebfedea0SLionel Sambuc# This is used on the DEC Alpha where long is 8 bytes 75ebfedea0SLionel Sambuc# and int is 4 76ebfedea0SLionel Sambuc# BN_LLONG use the type 'long long' in crypto/bn/bn.h 77ebfedea0SLionel Sambuc# MD2_CHAR use 'char' instead of 'int' for MD2_INT in crypto/md2/md2.h 78ebfedea0SLionel Sambuc# MD2_LONG use 'long' instead of 'int' for MD2_INT in crypto/md2/md2.h 79ebfedea0SLionel Sambuc# IDEA_SHORT use 'short' instead of 'int' for IDEA_INT in crypto/idea/idea.h 80ebfedea0SLionel Sambuc# IDEA_LONG use 'long' instead of 'int' for IDEA_INT in crypto/idea/idea.h 81ebfedea0SLionel Sambuc# RC2_SHORT use 'short' instead of 'int' for RC2_INT in crypto/rc2/rc2.h 82ebfedea0SLionel Sambuc# RC2_LONG use 'long' instead of 'int' for RC2_INT in crypto/rc2/rc2.h 83ebfedea0SLionel Sambuc# RC4_CHAR use 'char' instead of 'int' for RC4_INT in crypto/rc4/rc4.h 84ebfedea0SLionel Sambuc# RC4_LONG use 'long' instead of 'int' for RC4_INT in crypto/rc4/rc4.h 85ebfedea0SLionel Sambuc# RC4_INDEX define RC4_INDEX in crypto/rc4/rc4_locl.h. This turns on 86ebfedea0SLionel Sambuc# array lookups instead of pointer use. 87ebfedea0SLionel Sambuc# RC4_CHUNK enables code that handles data aligned at long (natural CPU 88ebfedea0SLionel Sambuc# word) boundary. 89ebfedea0SLionel Sambuc# RC4_CHUNK_LL enables code that handles data aligned at long long boundary 90ebfedea0SLionel Sambuc# (intended for 64-bit CPUs running 32-bit OS). 91ebfedea0SLionel Sambuc# BF_PTR use 'pointer arithmatic' for Blowfish (unsafe on Alpha). 92ebfedea0SLionel Sambuc# BF_PTR2 intel specific version (generic version is more efficient). 93ebfedea0SLionel Sambuc# 94ebfedea0SLionel Sambuc# Following are set automatically by this script 95ebfedea0SLionel Sambuc# 96ebfedea0SLionel Sambuc# MD5_ASM use some extra md5 assember, 97ebfedea0SLionel Sambuc# SHA1_ASM use some extra sha1 assember, must define L_ENDIAN for x86 98ebfedea0SLionel Sambuc# RMD160_ASM use some extra ripemd160 assember, 99ebfedea0SLionel Sambuc# SHA256_ASM sha256_block is implemented in assembler 100ebfedea0SLionel Sambuc# SHA512_ASM sha512_block is implemented in assembler 101ebfedea0SLionel Sambuc# AES_ASM ASE_[en|de]crypt is implemented in assembler 102ebfedea0SLionel Sambuc 103ebfedea0SLionel Sambuc# Minimum warning options... any contributions to OpenSSL should at least get 104ebfedea0SLionel Sambuc# past these. 105ebfedea0SLionel Sambuc 106ebfedea0SLionel Sambucmy $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED"; 107ebfedea0SLionel Sambuc 108ebfedea0SLionel Sambucmy $strict_warnings = 0; 109ebfedea0SLionel Sambuc 110ebfedea0SLionel Sambucmy $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL"; 111ebfedea0SLionel Sambuc 112ebfedea0SLionel Sambuc# MD2_CHAR slags pentium pros 113ebfedea0SLionel Sambucmy $x86_gcc_opts="RC4_INDEX MD2_INT"; 114ebfedea0SLionel Sambuc 115ebfedea0SLionel Sambuc# MODIFY THESE PARAMETERS IF YOU ARE GOING TO USE THE 'util/speed.sh SCRIPT 116ebfedea0SLionel Sambuc# Don't worry about these normally 117ebfedea0SLionel Sambuc 118ebfedea0SLionel Sambucmy $tcc="cc"; 119ebfedea0SLionel Sambucmy $tflags="-fast -Xa"; 120ebfedea0SLionel Sambucmy $tbn_mul=""; 121ebfedea0SLionel Sambucmy $tlib="-lnsl -lsocket"; 122ebfedea0SLionel Sambuc#$bits1="SIXTEEN_BIT "; 123ebfedea0SLionel Sambuc#$bits2="THIRTY_TWO_BIT "; 124ebfedea0SLionel Sambucmy $bits1="THIRTY_TWO_BIT "; 125ebfedea0SLionel Sambucmy $bits2="SIXTY_FOUR_BIT "; 126ebfedea0SLionel Sambuc 127ebfedea0SLionel Sambucmy $x86_asm="x86cpuid.o:bn-586.o co-586.o x86-mont.o x86-gf2m.o:des-586.o crypt586.o:aes-586.o vpaes-x86.o aesni-x86.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o:cmll-x86.o:ghash-x86.o:"; 128ebfedea0SLionel Sambuc 129ebfedea0SLionel Sambucmy $x86_elf_asm="$x86_asm:elf"; 130ebfedea0SLionel Sambuc 131ebfedea0SLionel Sambucmy $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o modexp512-x86_64.o::aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o rc4-md5-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:ghash-x86_64.o:"; 132ebfedea0SLionel Sambucmy $ia64_asm="ia64cpuid.o:bn-ia64.o ia64-mont.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o:::::ghash-ia64.o::void"; 133ebfedea0SLionel Sambucmy $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o:des_enc-sparc.o fcrypt_b.o:aes_core.o aes_cbc.o aes-sparcv9.o:::sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o:::::::ghash-sparcv9.o::void"; 134ebfedea0SLionel Sambucmy $sparcv8_asm=":sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::::::void"; 135ebfedea0SLionel Sambucmy $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o:::::sha1-alpha.o:::::::ghash-alpha.o::void"; 136ebfedea0SLionel Sambucmy $mips32_asm=":bn-mips.o::aes_cbc.o aes-mips.o:::sha1-mips.o sha256-mips.o::::::::"; 137ebfedea0SLionel Sambucmy $mips64_asm=":bn-mips.o mips-mont.o::aes_cbc.o aes-mips.o:::sha1-mips.o sha256-mips.o sha512-mips.o::::::::"; 138ebfedea0SLionel Sambucmy $s390x_asm="s390xcap.o s390xcpuid.o:bn-s390x.o s390x-mont.o s390x-gf2m.o::aes-s390x.o aes-ctr.o aes-xts.o:::sha1-s390x.o sha256-s390x.o sha512-s390x.o::rc4-s390x.o:::::ghash-s390x.o:"; 139ebfedea0SLionel Sambucmy $armv4_asm="armcap.o armv4cpuid.o:bn_asm.o armv4-mont.o armv4-gf2m.o::aes_cbc.o aes-armv4.o:::sha1-armv4-large.o sha256-armv4.o sha512-armv4.o:::::::ghash-armv4.o::void"; 140ebfedea0SLionel Sambucmy $parisc11_asm="pariscid.o:bn_asm.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::32"; 141ebfedea0SLionel Sambucmy $parisc20_asm="pariscid.o:pa-risc2W.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::64"; 142ebfedea0SLionel Sambucmy $ppc32_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o::::::::"; 143ebfedea0SLionel Sambucmy $ppc64_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::::"; 144ebfedea0SLionel Sambucmy $no_asm=":::::::::::::::void"; 145ebfedea0SLionel Sambuc 146ebfedea0SLionel Sambuc# As for $BSDthreads. Idea is to maintain "collective" set of flags, 147ebfedea0SLionel Sambuc# which would cover all BSD flavors. -pthread applies to them all, 148ebfedea0SLionel Sambuc# but is treated differently. OpenBSD expands is as -D_POSIX_THREAD 149ebfedea0SLionel Sambuc# -lc_r, which is sufficient. FreeBSD 4.x expands it as -lc_r, 150ebfedea0SLionel Sambuc# which has to be accompanied by explicit -D_THREAD_SAFE and 151ebfedea0SLionel Sambuc# sometimes -D_REENTRANT. FreeBSD 5.x expands it as -lc_r, which 152ebfedea0SLionel Sambuc# seems to be sufficient? 153ebfedea0SLionel Sambucmy $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT"; 154ebfedea0SLionel Sambuc 155ebfedea0SLionel Sambuc#config-string $cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $wp_obj : $cmll_obj : $modes_obj : $engines_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags : $multilib 156ebfedea0SLionel Sambuc 157ebfedea0SLionel Sambucmy %table=( 158ebfedea0SLionel Sambuc# File 'TABLE' (created by 'make TABLE') contains the data from this list, 159ebfedea0SLionel Sambuc# formatted for better readability. 160ebfedea0SLionel Sambuc 161ebfedea0SLionel Sambuc 162ebfedea0SLionel Sambuc#"b", "${tcc}:${tflags}::${tlib}:${bits1}:${tbn_mul}::", 163ebfedea0SLionel Sambuc#"bl-4c-2c", "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR MD2_CHAR:${tbn_mul}::", 164ebfedea0SLionel Sambuc#"bl-4c-ri", "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR RC4_INDEX:${tbn_mul}::", 165ebfedea0SLionel Sambuc#"b2-is-ri-dp", "${tcc}:${tflags}::${tlib}:${bits2}IDEA_SHORT RC4_INDEX DES_PTR:${tbn_mul}::", 166ebfedea0SLionel Sambuc 167ebfedea0SLionel Sambuc# Our development configs 168ebfedea0SLionel Sambuc"purify", "purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::", 169ebfedea0SLionel Sambuc"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::::", 170ebfedea0SLionel Sambuc"debug-ben", "gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DDEBUG_SAFESTACK -O2 -pipe::(unknown):::::", 171ebfedea0SLionel Sambuc"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)::::", 172ebfedea0SLionel Sambuc"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)::::", 173ebfedea0SLionel Sambuc"debug-ben-debug", "gcc44:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O2 -pipe::(unknown)::::::", 174ebfedea0SLionel Sambuc"debug-ben-debug-64", "gcc:$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 175ebfedea0SLionel Sambuc"debug-ben-macos", "cc:$gcc_devteam_warn -arch i386 -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -O3 -DL_ENDIAN -g3 -pipe::(unknown)::-Wl,-search_paths_first::::", 176ebfedea0SLionel Sambuc"debug-ben-macos-gcc46", "gcc-mp-4.6:$gcc_devteam_warn -Wconversion -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -O3 -DL_ENDIAN -g3 -pipe::(unknown)::::::", 177ebfedea0SLionel Sambuc"debug-ben-darwin64","cc:$gcc_devteam_warn -Wno-language-extension-token -Wno-extended-offsetof -arch x86_64 -O3 -DL_ENDIAN -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$x86_64_asm;$asm=~s/rc4\-[^:]+//;$asm}.":macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 178ebfedea0SLionel Sambuc"debug-ben-no-opt", "gcc: -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -DTERMIOS -Wall -g3::(unknown)::::::", 179ebfedea0SLionel Sambuc"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)::::::", 180ebfedea0SLionel Sambuc"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", 181*0a6a1f1dSLionel Sambuc"debug-bodo", "gcc:$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DBN_DEBUG_RAND -DCONF_DEBUG -DBIO_PAIR_DEBUG -m64 -DL_ENDIAN -DTERMIO -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", 182ebfedea0SLionel Sambuc"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll", 183ebfedea0SLionel Sambuc"debug-steve64", "gcc:$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 184ebfedea0SLionel Sambuc"debug-steve32", "gcc:$gcc_devteam_warn -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -g -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 185ebfedea0SLionel Sambuc"debug-steve-opt", "gcc:$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 186ebfedea0SLionel Sambuc"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -ggdb -g3 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 187ebfedea0SLionel Sambuc"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 188*0a6a1f1dSLionel Sambuc"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 189*0a6a1f1dSLionel Sambuc"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 190ebfedea0SLionel Sambuc"debug-geoff32","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 191ebfedea0SLionel Sambuc"debug-geoff64","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 192*0a6a1f1dSLionel Sambuc"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn", 193*0a6a1f1dSLionel Sambuc"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn", 194*0a6a1f1dSLionel Sambuc"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 195*0a6a1f1dSLionel Sambuc"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 196*0a6a1f1dSLionel Sambuc"debug-linux-ia32-aes", "gcc:-DAES_EXPERIMENTAL -DL_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes_x86core.o aes_cbc.o aesni-x86.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o::ghash-x86.o::elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 197*0a6a1f1dSLionel Sambuc"debug-linux-generic32","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 198*0a6a1f1dSLionel Sambuc"debug-linux-generic64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 199*0a6a1f1dSLionel Sambuc"debug-linux-x86_64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", 200ebfedea0SLionel Sambuc"dist", "cc:-O::(unknown)::::::", 201ebfedea0SLionel Sambuc 202ebfedea0SLionel Sambuc# Basic configs that should work on any (32 and less bit) box 203ebfedea0SLionel Sambuc"gcc", "gcc:-O3::(unknown):::BN_LLONG:::", 204ebfedea0SLionel Sambuc"cc", "cc:-O::(unknown)::::::", 205ebfedea0SLionel Sambuc 206ebfedea0SLionel Sambuc####VOS Configurations 207ebfedea0SLionel Sambuc"vos-gcc","gcc:-O3 -Wall -DOPENSSL_SYSNAME_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:", 208ebfedea0SLionel Sambuc"debug-vos-gcc","gcc:-O0 -g -Wall -DOPENSSL_SYSNAME_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:", 209ebfedea0SLionel Sambuc 210ebfedea0SLionel Sambuc#### Solaris x86 with GNU C setups 211ebfedea0SLionel Sambuc# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it 212ebfedea0SLionel Sambuc# here because whenever GNU C instantiates an assembler template it 213ebfedea0SLionel Sambuc# surrounds it with #APP #NO_APP comment pair which (at least Solaris 214ebfedea0SLionel Sambuc# 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic" 215ebfedea0SLionel Sambuc# error message. 216ebfedea0SLionel Sambuc"solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -march=pentium -Wall -DL_ENDIAN -DOPENSSL_NO_INLINE_ASM::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 217ebfedea0SLionel Sambuc# -shared -static-libgcc might appear controversial, but modules taken 218ebfedea0SLionel Sambuc# from static libgcc do not have relocations and linking them into our 219ebfedea0SLionel Sambuc# shared objects doesn't have any negative side-effects. On the contrary, 220ebfedea0SLionel Sambuc# doing so makes it possible to use gcc shared build with Sun C. Given 221ebfedea0SLionel Sambuc# that gcc generates faster code [thanks to inline assembler], I would 222ebfedea0SLionel Sambuc# actually recommend to consider using gcc shared build even with vendor 223ebfedea0SLionel Sambuc# compiler:-) 224ebfedea0SLionel Sambuc# <appro@fy.chalmers.se> 225ebfedea0SLionel Sambuc"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64", 226ebfedea0SLionel Sambuc 227ebfedea0SLionel Sambuc#### Solaris x86 with Sun C setups 228ebfedea0SLionel Sambuc"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 229ebfedea0SLionel Sambuc"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64", 230ebfedea0SLionel Sambuc 231ebfedea0SLionel Sambuc#### SPARC Solaris with GNU C setups 232ebfedea0SLionel Sambuc"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 233*0a6a1f1dSLionel Sambuc"solaris-sparcv8-gcc","gcc:-mcpu=v8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 234ebfedea0SLionel Sambuc# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc 235ebfedea0SLionel Sambuc"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:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 236ebfedea0SLionel Sambuc"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64", 237ebfedea0SLionel Sambuc#### 238*0a6a1f1dSLionel Sambuc"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mcpu=v8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 239ebfedea0SLionel Sambuc"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 240ebfedea0SLionel Sambuc 241ebfedea0SLionel Sambuc#### SPARC Solaris with Sun C setups 242ebfedea0SLionel Sambuc# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2. 243ebfedea0SLionel Sambuc# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8 244ebfedea0SLionel Sambuc# SC5.0 note: Compiler common patch 107357-01 or later is required! 245ebfedea0SLionel Sambuc"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 246ebfedea0SLionel Sambuc"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 247ebfedea0SLionel Sambuc"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:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 248ebfedea0SLionel Sambuc"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64", 249ebfedea0SLionel Sambuc#### 250ebfedea0SLionel Sambuc"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:${sparcv8_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 251ebfedea0SLionel Sambuc"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:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 252ebfedea0SLionel Sambuc 253ebfedea0SLionel Sambuc#### SunOS configs, assuming sparc for the gcc one. 254ebfedea0SLionel Sambuc#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::", 255*0a6a1f1dSLionel Sambuc"sunos-gcc","gcc:-O3 -mcpu=v8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:${no_asm}::", 256ebfedea0SLionel Sambuc 257ebfedea0SLionel Sambuc#### IRIX 5.x configs 258ebfedea0SLionel Sambuc# -mips2 flag is added by ./config when appropriate. 259*0a6a1f1dSLionel Sambuc"irix-gcc","gcc:-O3 -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK DES_UNROLL DES_RISC2 DES_PTR BF_PTR:${mips32_asm}:o32:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 260*0a6a1f1dSLionel Sambuc"irix-cc", "cc:-O2 -use_readonly_const -DB_ENDIAN::(unknown):::BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC2 DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 261ebfedea0SLionel Sambuc#### IRIX 6.x configs 262ebfedea0SLionel Sambuc# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke 263ebfedea0SLionel Sambuc# './Configure irix-cc -o32' manually. 264*0a6a1f1dSLionel Sambuc"irix-mips3-gcc","gcc:-mabi=n32 -O3 -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:${mips64_asm}:n32:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32", 265*0a6a1f1dSLionel Sambuc"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:${mips64_asm}:n32:dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32", 266ebfedea0SLionel Sambuc# N64 ABI builds. 267*0a6a1f1dSLionel Sambuc"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips64_asm}:64:dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", 268*0a6a1f1dSLionel Sambuc"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips64_asm}:64:dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", 269ebfedea0SLionel Sambuc 270ebfedea0SLionel Sambuc#### Unified HP-UX ANSI C configs. 271ebfedea0SLionel Sambuc# Special notes: 272ebfedea0SLionel Sambuc# - Originally we were optimizing at +O4 level. It should be noted 273ebfedea0SLionel Sambuc# that the only difference between +O3 and +O4 is global inter- 274ebfedea0SLionel Sambuc# procedural analysis. As it has to be performed during the link 275ebfedea0SLionel Sambuc# stage the compiler leaves behind certain pseudo-code in lib*.a 276ebfedea0SLionel Sambuc# which might be release or even patch level specific. Generating 277ebfedea0SLionel Sambuc# the machine code for and analyzing the *whole* program appears 278ebfedea0SLionel Sambuc# to be *extremely* memory demanding while the performance gain is 279ebfedea0SLionel Sambuc# actually questionable. The situation is intensified by the default 280ebfedea0SLionel Sambuc# HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB 281ebfedea0SLionel Sambuc# which is way too low for +O4. In other words, doesn't +O3 make 282ebfedea0SLionel Sambuc# more sense? 283ebfedea0SLionel Sambuc# - Keep in mind that the HP compiler by default generates code 284ebfedea0SLionel Sambuc# suitable for execution on the host you're currently compiling at. 285ebfedea0SLionel Sambuc# If the toolkit is ment to be used on various PA-RISC processors 286ebfedea0SLionel Sambuc# consider './config +DAportable'. 287ebfedea0SLionel Sambuc# - +DD64 is chosen in favour of +DA2.0W because it's meant to be 288ebfedea0SLionel Sambuc# compatible with *future* releases. 289ebfedea0SLionel Sambuc# - If you run ./Configure hpux-parisc-[g]cc manually don't forget to 290ebfedea0SLionel Sambuc# pass -D_REENTRANT on HP-UX 10 and later. 291ebfedea0SLionel Sambuc# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in 292ebfedea0SLionel Sambuc# 32-bit message digests. (For the moment of this writing) HP C 293ebfedea0SLionel Sambuc# doesn't seem to "digest" too many local variables (they make "him" 294ebfedea0SLionel Sambuc# chew forever:-). For more details look-up MD32_XARRAY comment in 295ebfedea0SLionel Sambuc# crypto/sha/sha_lcl.h. 296ebfedea0SLionel Sambuc# <appro@fy.chalmers.se> 297ebfedea0SLionel Sambuc# 298ebfedea0SLionel Sambuc# Since there is mention of this in shlib/hpux10-cc.sh 299ebfedea0SLionel Sambuc"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 300ebfedea0SLionel Sambuc"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 301ebfedea0SLionel Sambuc"hpux-parisc1_1-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${parisc11_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa1.1", 302ebfedea0SLionel Sambuc"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1:".eval{my $asm=$parisc20_asm;$asm=~s/2W\./2\./;$asm=~s/:64/:32/;$asm}.":dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_32", 303ebfedea0SLionel Sambuc"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::::::void:dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_64", 304ebfedea0SLionel Sambuc 305ebfedea0SLionel Sambuc# More attempts at unified 10.X and 11.X targets for HP C compiler. 306ebfedea0SLionel Sambuc# 307ebfedea0SLionel Sambuc# Chris Ruemmler <ruemmler@cup.hp.com> 308ebfedea0SLionel Sambuc# Kevin Steves <ks@hp.se> 309ebfedea0SLionel Sambuc"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 310ebfedea0SLionel Sambuc"hpux-parisc1_1-cc","cc:+DA1.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:${parisc11_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa1.1", 311ebfedea0SLionel Sambuc"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:".eval{my $asm=$parisc20_asm;$asm=~s/2W\./2\./;$asm=~s/:64/:32/;$asm}.":dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_32", 312ebfedea0SLionel Sambuc"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:${parisc20_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_64", 313ebfedea0SLionel Sambuc 314ebfedea0SLionel Sambuc# HP/UX IA-64 targets 315ebfedea0SLionel Sambuc"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux32", 316ebfedea0SLionel Sambuc# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with 317ebfedea0SLionel Sambuc# with debugging of the following config. 318ebfedea0SLionel Sambuc"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux64", 319ebfedea0SLionel Sambuc# GCC builds... 320ebfedea0SLionel Sambuc"hpux-ia64-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux32", 321ebfedea0SLionel Sambuc"hpux64-ia64-gcc","gcc:-mlp64 -O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-mlp64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux64", 322ebfedea0SLionel Sambuc 323ebfedea0SLionel Sambuc# Legacy HPUX 9.X configs... 324ebfedea0SLionel Sambuc"hpux-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 325ebfedea0SLionel Sambuc"hpux-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 326ebfedea0SLionel Sambuc 327ebfedea0SLionel Sambuc#### HP MPE/iX http://jazz.external.hp.com/src/openssl/ 328ebfedea0SLionel Sambuc"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:::", 329ebfedea0SLionel Sambuc 330ebfedea0SLionel Sambuc# DEC Alpha OSF/1/Tru64 targets. 331ebfedea0SLionel Sambuc# 332ebfedea0SLionel Sambuc# "What's in a name? That which we call a rose 333ebfedea0SLionel Sambuc# By any other word would smell as sweet." 334ebfedea0SLionel Sambuc# 335ebfedea0SLionel Sambuc# - William Shakespeare, "Romeo & Juliet", Act II, scene II. 336ebfedea0SLionel Sambuc# 337ebfedea0SLionel Sambuc# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version 338ebfedea0SLionel Sambuc# 339ebfedea0SLionel Sambuc"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so", 340ebfedea0SLionel Sambuc"osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so", 341ebfedea0SLionel Sambuc"tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared::-msym:.so", 342ebfedea0SLionel Sambuc 343ebfedea0SLionel Sambuc#### 344ebfedea0SLionel Sambuc#### Variety of LINUX:-) 345ebfedea0SLionel Sambuc#### 346ebfedea0SLionel Sambuc# *-generic* is endian-neutral target, but ./config is free to 347ebfedea0SLionel Sambuc# throw in -D[BL]_ENDIAN, whichever appropriate... 348*0a6a1f1dSLionel Sambuc"linux-generic32","gcc:-O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 349*0a6a1f1dSLionel Sambuc"linux-ppc", "gcc:-DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 350ebfedea0SLionel Sambuc# It's believed that majority of ARM toolchains predefine appropriate -march. 351ebfedea0SLionel Sambuc# If you compiler does not, do complement config command line with one! 352*0a6a1f1dSLionel Sambuc"linux-armv4", "gcc:-O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 353ebfedea0SLionel Sambuc#### IA-32 targets... 354*0a6a1f1dSLionel Sambuc"linux-ia32-icc", "icc:-DL_ENDIAN -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 355*0a6a1f1dSLionel Sambuc"linux-elf", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 356*0a6a1f1dSLionel Sambuc"linux-aout", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out", 357ebfedea0SLionel Sambuc#### 358*0a6a1f1dSLionel Sambuc"linux-generic64","gcc:-O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 359*0a6a1f1dSLionel Sambuc"linux-ppc64", "gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", 360*0a6a1f1dSLionel Sambuc"linux-ia64", "gcc:-DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 361*0a6a1f1dSLionel Sambuc"linux-ia64-ecc","ecc:-DL_ENDIAN -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 362*0a6a1f1dSLionel Sambuc"linux-ia64-icc","icc:-DL_ENDIAN -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 363*0a6a1f1dSLionel Sambuc"linux-x86_64", "gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", 364*0a6a1f1dSLionel Sambuc"linux64-s390x", "gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", 365ebfedea0SLionel Sambuc#### So called "highgprs" target for z/Architecture CPUs 366ebfedea0SLionel Sambuc# "Highgprs" is kernel feature first implemented in Linux 2.6.32, see 367ebfedea0SLionel Sambuc# /proc/cpuinfo. The idea is to preserve most significant bits of 368ebfedea0SLionel Sambuc# general purpose registers not only upon 32-bit process context 369ebfedea0SLionel Sambuc# switch, but even on asynchronous signal delivery to such process. 370ebfedea0SLionel Sambuc# This makes it possible to deploy 64-bit instructions even in legacy 371ebfedea0SLionel Sambuc# application context and achieve better [or should we say adequate] 372ebfedea0SLionel Sambuc# performance. The build is binary compatible with linux-generic32, 373ebfedea0SLionel Sambuc# and the idea is to be able to install the resulting libcrypto.so 374ebfedea0SLionel Sambuc# alongside generic one, e.g. as /lib/highgprs/libcrypto.so.x.y, for 375ebfedea0SLionel Sambuc# ldconfig and run-time linker to autodiscover. Unfortunately it 376ebfedea0SLionel Sambuc# doesn't work just yet, because of couple of bugs in glibc 377ebfedea0SLionel Sambuc# sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1... 378*0a6a1f1dSLionel Sambuc"linux32-s390x", "gcc:-m31 -Wa,-mzarch -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$s390x_asm;$asm=~s/bn\-s390x\.o/bn_asm.o/;$asm}.":31:dlfcn:linux-shared:-fPIC:-m31:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/highgprs", 379ebfedea0SLionel Sambuc#### SPARC Linux setups 380ebfedea0SLionel Sambuc# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently 381ebfedea0SLionel Sambuc# assisted with debugging of following two configs. 382*0a6a1f1dSLionel Sambuc"linux-sparcv8","gcc:-mcpu=v8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 383ebfedea0SLionel Sambuc# it's a real mess with -mcpu=ultrasparc option under Linux, but 384ebfedea0SLionel Sambuc# -Wa,-Av8plus should do the trick no matter what. 385*0a6a1f1dSLionel Sambuc"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 386ebfedea0SLionel Sambuc# GCC 3.1 is a requirement 387*0a6a1f1dSLionel Sambuc"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", 388ebfedea0SLionel Sambuc#### Alpha Linux with GNU C and Compaq C setups 389ebfedea0SLionel Sambuc# Special notes: 390ebfedea0SLionel Sambuc# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you 391ebfedea0SLionel Sambuc# ought to run './Configure linux-alpha+bwx-gcc' manually, do 392ebfedea0SLionel Sambuc# complement the command line with -mcpu=ev56, -mcpu=ev6 or whatever 393ebfedea0SLionel Sambuc# which is appropriate. 394ebfedea0SLionel Sambuc# - If you use ccc keep in mind that -fast implies -arch host and the 395ebfedea0SLionel Sambuc# compiler is free to issue instructions which gonna make elder CPU 396ebfedea0SLionel Sambuc# choke. If you wish to build "blended" toolkit, add -arch generic 397ebfedea0SLionel Sambuc# *after* -fast and invoke './Configure linux-alpha-ccc' manually. 398ebfedea0SLionel Sambuc# 399ebfedea0SLionel Sambuc# <appro@fy.chalmers.se> 400ebfedea0SLionel Sambuc# 401*0a6a1f1dSLionel Sambuc"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 402*0a6a1f1dSLionel Sambuc"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN::-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)", 403*0a6a1f1dSLionel Sambuc"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}", 404*0a6a1f1dSLionel Sambuc"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}", 405ebfedea0SLionel Sambuc 406*0a6a1f1dSLionel Sambuc# Android: linux-* but without pointers to headers and libs. 407ebfedea0SLionel Sambuc"android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 408ebfedea0SLionel Sambuc"android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 409ebfedea0SLionel Sambuc"android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 410ebfedea0SLionel Sambuc 411ebfedea0SLionel Sambuc#### *BSD [do see comment about ${BSDthreads} above!] 412*0a6a1f1dSLionel Sambuc"BSD-generic32","gcc:-O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 413*0a6a1f1dSLionel Sambuc"BSD-x86", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 414*0a6a1f1dSLionel Sambuc"BSD-x86-elf", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 415*0a6a1f1dSLionel Sambuc"debug-BSD-x86-elf", "gcc:-DL_ENDIAN -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 416*0a6a1f1dSLionel Sambuc"BSD-sparcv8", "gcc:-DB_ENDIAN -O3 -mcpu=v8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${sparcv8_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 417ebfedea0SLionel Sambuc 418*0a6a1f1dSLionel Sambuc"BSD-generic64","gcc:-O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 419ebfedea0SLionel Sambuc# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it 420ebfedea0SLionel Sambuc# simply *happens* to work around a compiler bug in gcc 3.3.3, 421ebfedea0SLionel Sambuc# triggered by RIPEMD160 code. 422*0a6a1f1dSLionel Sambuc"BSD-sparc64", "gcc:-DB_ENDIAN -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:${sparcv9_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 423*0a6a1f1dSLionel Sambuc"BSD-ia64", "gcc:-DL_ENDIAN -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 424*0a6a1f1dSLionel Sambuc"BSD-x86_64", "gcc:-DL_ENDIAN -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 425ebfedea0SLionel Sambuc 426ebfedea0SLionel Sambuc"bsdi-elf-gcc", "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 427ebfedea0SLionel Sambuc 428ebfedea0SLionel Sambuc"nextstep", "cc:-O -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", 429ebfedea0SLionel Sambuc"nextstep3.3", "cc:-O3 -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::", 430ebfedea0SLionel Sambuc 431ebfedea0SLionel Sambuc# NCR MP-RAS UNIX ver 02.03.01 432ebfedea0SLionel Sambuc"ncr-scde","cc:-O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw::(unknown)::-lsocket -lnsl -lc89:${x86_gcc_des} ${x86_gcc_opts}:::", 433ebfedea0SLionel Sambuc 434ebfedea0SLionel Sambuc# QNX 435ebfedea0SLionel Sambuc"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:", 436*0a6a1f1dSLionel Sambuc"QNX6", "gcc:::::-lsocket::${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 437*0a6a1f1dSLionel Sambuc"QNX6-i386", "gcc:-DL_ENDIAN -O2 -Wall::::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 438ebfedea0SLionel Sambuc 439ebfedea0SLionel Sambuc# BeOS 440ebfedea0SLionel Sambuc"beos-x86-r5", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lnet:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC -DPIC:-shared:.so", 441ebfedea0SLionel Sambuc"beos-x86-bone", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lbind -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC:-shared:.so", 442ebfedea0SLionel Sambuc 443ebfedea0SLionel Sambuc#### SCO/Caldera targets. 444ebfedea0SLionel Sambuc# 445ebfedea0SLionel Sambuc# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc. 446ebfedea0SLionel Sambuc# Now we only have blended unixware-* as it's the only one used by ./config. 447ebfedea0SLionel Sambuc# If you want to optimize for particular microarchitecture, bypass ./config 448ebfedea0SLionel Sambuc# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate. 449ebfedea0SLionel Sambuc# Note that not all targets include assembler support. Mostly because of 450ebfedea0SLionel Sambuc# lack of motivation to support out-of-date platforms with out-of-date 451ebfedea0SLionel Sambuc# compiler drivers and assemblers. Tim Rice <tim@multitalents.net> has 452ebfedea0SLionel Sambuc# patiently assisted to debug most of it. 453ebfedea0SLionel Sambuc# 454ebfedea0SLionel Sambuc# UnixWare 2.0x fails destest with -O. 455ebfedea0SLionel Sambuc"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::", 456ebfedea0SLionel Sambuc"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::", 457ebfedea0SLionel Sambuc"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)", 458ebfedea0SLionel Sambuc"unixware-7-gcc","gcc:-DL_ENDIAN -DFILIO_H -O3 -fomit-frame-pointer -march=pentium -Wall::-D_REENTRANT::-lsocket -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:gnu-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 459ebfedea0SLionel Sambuc# SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the SCO cc. 460ebfedea0SLionel Sambuc"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)", 461ebfedea0SLionel Sambuc"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)", 462ebfedea0SLionel Sambuc 463ebfedea0SLionel Sambuc#### IBM's AIX. 464ebfedea0SLionel Sambuc"aix3-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::", 465ebfedea0SLionel Sambuc"aix-gcc", "gcc:-O -DB_ENDIAN::-pthread:AIX::BN_LLONG RC4_CHAR:${ppc32_asm}:aix32:dlfcn:aix-shared::-shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X32", 466ebfedea0SLionel Sambuc"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${ppc64_asm}:aix64:dlfcn:aix-shared::-maix64 -shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64", 467ebfedea0SLionel Sambuc# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE 468ebfedea0SLionel Sambuc# at build time. $OBJECT_MODE is respected at ./config stage! 469ebfedea0SLionel Sambuc"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR:${ppc32_asm}:aix32:dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32", 470ebfedea0SLionel Sambuc"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${ppc64_asm}:aix64:dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64", 471ebfedea0SLionel Sambuc 472ebfedea0SLionel Sambuc# 473ebfedea0SLionel Sambuc# Cray T90 and similar (SDSC) 474ebfedea0SLionel Sambuc# It's Big-endian, but the algorithms work properly when B_ENDIAN is NOT 475ebfedea0SLionel Sambuc# defined. The T90 ints and longs are 8 bytes long, and apparently the 476ebfedea0SLionel Sambuc# B_ENDIAN code assumes 4 byte ints. Fortunately, the non-B_ENDIAN and 477ebfedea0SLionel Sambuc# non L_ENDIAN code aligns the bytes in each word correctly. 478ebfedea0SLionel Sambuc# 479ebfedea0SLionel Sambuc# The BIT_FIELD_LIMITS define is to avoid two fatal compiler errors: 480ebfedea0SLionel Sambuc#'Taking the address of a bit field is not allowed. ' 481ebfedea0SLionel Sambuc#'An expression with bit field exists as the operand of "sizeof" ' 482ebfedea0SLionel Sambuc# (written by Wayne Schroeder <schroede@SDSC.EDU>) 483ebfedea0SLionel Sambuc# 484ebfedea0SLionel Sambuc# j90 is considered the base machine type for unicos machines, 485ebfedea0SLionel Sambuc# so this configuration is now called "cray-j90" ... 486ebfedea0SLionel Sambuc"cray-j90", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::", 487ebfedea0SLionel Sambuc 488ebfedea0SLionel Sambuc# 489ebfedea0SLionel Sambuc# Cray T3E (Research Center Juelich, beckman@acl.lanl.gov) 490ebfedea0SLionel Sambuc# 491ebfedea0SLionel Sambuc# The BIT_FIELD_LIMITS define was written for the C90 (it seems). I added 492ebfedea0SLionel Sambuc# another use. Basically, the problem is that the T3E uses some bit fields 493ebfedea0SLionel Sambuc# for some st_addr stuff, and then sizeof and address-of fails 494ebfedea0SLionel Sambuc# I could not use the ams/alpha.o option because the Cray assembler, 'cam' 495ebfedea0SLionel Sambuc# did not like it. 496ebfedea0SLionel Sambuc"cray-t3e", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:::", 497ebfedea0SLionel Sambuc 498ebfedea0SLionel Sambuc# DGUX, 88100. 499ebfedea0SLionel Sambuc"dgux-R3-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):::RC4_INDEX DES_UNROLL:::", 500ebfedea0SLionel Sambuc"dgux-R4-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown)::-lnsl -lsocket:RC4_INDEX DES_UNROLL:::", 501ebfedea0SLionel Sambuc"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}", 502ebfedea0SLionel Sambuc 503ebfedea0SLionel Sambuc# Sinix/ReliantUNIX RM400 504ebfedea0SLionel Sambuc# NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g */ 505ebfedea0SLionel Sambuc"ReliantUNIX","cc:-KPIC -g -DTERMIOS -DB_ENDIAN::-Kthread:SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:BN_LLONG DES_PTR DES_RISC2 DES_UNROLL BF_PTR:${no_asm}:dlfcn:reliantunix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 506ebfedea0SLionel Sambuc"SINIX","cc:-O::(unknown):SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:RC4_INDEX RC4_CHAR:::", 507ebfedea0SLionel Sambuc"SINIX-N","/usr/ucb/cc:-O2 -misaligned::(unknown)::-lucb:RC4_INDEX RC4_CHAR:::", 508ebfedea0SLionel Sambuc 509ebfedea0SLionel Sambuc# SIEMENS BS2000/OSD: an EBCDIC-based mainframe 510*0a6a1f1dSLionel Sambuc"BS2000-OSD","c89:-O -XLLML -XLLMK -XL -DB_ENDIAN -DCHARSET_EBCDIC::(unknown)::-lsocket -lnsl:THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::", 511ebfedea0SLionel Sambuc 512ebfedea0SLionel Sambuc# OS/390 Unix an EBCDIC-based Unix system on IBM mainframe 513ebfedea0SLionel Sambuc# You need to compile using the c89.sh wrapper in the tools directory, because the 514ebfedea0SLionel Sambuc# IBM compiler does not like the -L switch after any object modules. 515ebfedea0SLionel Sambuc# 516ebfedea0SLionel Sambuc"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:::", 517ebfedea0SLionel Sambuc 518ebfedea0SLionel Sambuc# Visual C targets 519ebfedea0SLionel Sambuc# 520ebfedea0SLionel Sambuc# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64 521ebfedea0SLionel Sambuc"VC-WIN64I","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o ia64-mont.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ghash-ia64.o::ias:win32", 522ebfedea0SLionel Sambuc"VC-WIN64A","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:".eval{my $asm=$x86_64_asm;$asm=~s/x86_64-gcc\.o/bn_asm.o/;$asm}.":auto:win32", 523ebfedea0SLionel Sambuc"debug-VC-WIN64I","cl:-W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ghash-ia64.o::ias:win32", 524ebfedea0SLionel Sambuc"debug-VC-WIN64A","cl:-W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:".eval{my $asm=$x86_64_asm;$asm=~s/x86_64-gcc\.o/bn_asm.o/;$asm}.":auto:win32", 525ebfedea0SLionel Sambuc# x86 Win32 target defaults to ANSI API, if you want UNICODE, complement 526ebfedea0SLionel Sambuc# 'perl Configure VC-WIN32' with '-DUNICODE -D_UNICODE' 527ebfedea0SLionel Sambuc"VC-WIN32","cl:-W3 -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32", 528ebfedea0SLionel Sambuc# Unified CE target 529*0a6a1f1dSLionel Sambuc"debug-VC-WIN32","cl:-W3 -Gs0 -GF -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32", 530ebfedea0SLionel Sambuc"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32", 531ebfedea0SLionel Sambuc 532ebfedea0SLionel Sambuc# Borland C++ 4.5 533ebfedea0SLionel Sambuc"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32", 534ebfedea0SLionel Sambuc 535ebfedea0SLionel Sambuc# MinGW 536ebfedea0SLionel Sambuc"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", 537ebfedea0SLionel Sambuc# As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll 538ebfedea0SLionel Sambuc# compiled with one compiler with application compiled with another 539ebfedea0SLionel Sambuc# compiler. It's possible to engage Applink support in mingw64 build, 540ebfedea0SLionel Sambuc# but it's not done, because till mingw64 supports structured exception 541ebfedea0SLionel Sambuc# handling, one can't seriously consider its binaries for using with 542ebfedea0SLionel Sambuc# non-mingw64 run-time environment. And as mingw64 is always consistent 543ebfedea0SLionel Sambuc# with itself, Applink is never engaged and can as well be omitted. 544ebfedea0SLionel Sambuc"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a", 545ebfedea0SLionel Sambuc 546ebfedea0SLionel Sambuc# UWIN 547ebfedea0SLionel Sambuc"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", 548ebfedea0SLionel Sambuc 549ebfedea0SLionel Sambuc# Cygwin 550ebfedea0SLionel Sambuc"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", 551ebfedea0SLionel Sambuc"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:coff:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", 552ebfedea0SLionel Sambuc"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", 553ebfedea0SLionel Sambuc 554ebfedea0SLionel Sambuc# NetWare from David Ward (dsward@novell.com) 555ebfedea0SLionel Sambuc# requires either MetroWerks NLM development tools, or gcc / nlmconv 556ebfedea0SLionel Sambuc# NetWare defaults socket bio to WinSock sockets. However, 557ebfedea0SLionel Sambuc# the builds can be configured to use BSD sockets instead. 558ebfedea0SLionel Sambuc# netware-clib => legacy CLib c-runtime support 559ebfedea0SLionel Sambuc"netware-clib", "mwccnlm::::::${x86_gcc_opts}::", 560ebfedea0SLionel Sambuc"netware-clib-bsdsock", "mwccnlm::::::${x86_gcc_opts}::", 561ebfedea0SLionel Sambuc"netware-clib-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -I/ndk/ws295sdk/include -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYSNAME_NETWARE -O2 -Wall:::::${x86_gcc_opts}::", 562ebfedea0SLionel Sambuc"netware-clib-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -DNETWARE_BSDSOCK -DNETDB_USE_INTERNET -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYSNAME_NETWARE -O2 -Wall:::::${x86_gcc_opts}::", 563ebfedea0SLionel Sambuc# netware-libc => LibC/NKS support 564ebfedea0SLionel Sambuc"netware-libc", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::", 565ebfedea0SLionel Sambuc"netware-libc-bsdsock", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::", 566ebfedea0SLionel Sambuc"netware-libc-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::", 567ebfedea0SLionel Sambuc"netware-libc-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::", 568ebfedea0SLionel Sambuc 569ebfedea0SLionel Sambuc# DJGPP 570*0a6a1f1dSLionel Sambuc"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIO -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:", 571ebfedea0SLionel Sambuc 572ebfedea0SLionel Sambuc# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at> 573ebfedea0SLionel Sambuc"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::", 574ebfedea0SLionel Sambuc"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::BN_LLONG::::", 575ebfedea0SLionel Sambuc# K&R C is no longer supported; you need gcc on old Ultrix installations 576ebfedea0SLionel Sambuc##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::", 577ebfedea0SLionel Sambuc 578ebfedea0SLionel Sambuc##### MacOS X (a.k.a. Rhapsody or Darwin) setup 579ebfedea0SLionel Sambuc"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::", 580ebfedea0SLionel Sambuc"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN -Wa,-force_cpusubtype_ALL::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 581ebfedea0SLionel Sambuc"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc64_asm}:osx64:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 582ebfedea0SLionel Sambuc"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR:".eval{my $asm=$x86_asm;$asm=~s/cast\-586\.o//;$asm}.":macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 583ebfedea0SLionel Sambuc"debug-darwin-i386-cc","cc:-arch i386 -g3 -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 584ebfedea0SLionel Sambuc"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -DL_ENDIAN -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$x86_64_asm;$asm=~s/rc4\-[^:]+//;$asm}.":macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 585ebfedea0SLionel Sambuc"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 586ebfedea0SLionel Sambuc# iPhoneOS/iOS 587ebfedea0SLionel Sambuc"iphoneos-cross","llvm-gcc:-O3 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fomit-frame-pointer -fno-common::-D_REENTRANT:iOS:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 588ebfedea0SLionel Sambuc 589ebfedea0SLionel Sambuc##### A/UX 590ebfedea0SLionel Sambuc"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", 591ebfedea0SLionel Sambuc 592ebfedea0SLionel Sambuc##### Sony NEWS-OS 4.x 593ebfedea0SLionel Sambuc"newsos4-gcc","gcc:-O -DB_ENDIAN::(unknown):NEWS4:-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::", 594ebfedea0SLionel Sambuc 595ebfedea0SLionel Sambuc##### GNU Hurd 596*0a6a1f1dSLionel Sambuc"hurd-x86", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC", 597ebfedea0SLionel Sambuc 598ebfedea0SLionel Sambuc##### OS/2 EMX 599ebfedea0SLionel Sambuc"OS2-EMX", "gcc::::::::", 600ebfedea0SLionel Sambuc 601ebfedea0SLionel Sambuc##### VxWorks for various targets 602ebfedea0SLionel Sambuc"vxworks-ppc60x","ccppc:-D_REENTRANT -mrtp -mhard-float -mstrict-align -fno-implicit-fp -DPPC32_fp60x -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/usr/h/wrn/coreip:::VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common:::::", 603ebfedea0SLionel Sambuc"vxworks-ppcgen","ccppc:-D_REENTRANT -mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/usr/h/wrn/coreip:::VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon:::::", 604ebfedea0SLionel Sambuc"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::", 605ebfedea0SLionel Sambuc"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:::::", 606ebfedea0SLionel Sambuc"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:::::", 607ebfedea0SLionel Sambuc"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::", 608ebfedea0SLionel Sambuc"vxworks-simlinux","ccpentium:-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DL_ENDIAN -DCPU=SIMLINUX -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/h -I\$(WIND_BASE)/target/h/wrn/coreip -DOPENSSL_NO_HW_PADLOCK:::VXWORKS:-r::${no_asm}::::::ranlibpentium:", 609ebfedea0SLionel Sambuc"vxworks-mips","ccmips:-mrtp -mips2 -O -G 0 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DCPU=MIPS32 -msoft-float -mno-branch-likely -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/h/wrn/coreip::-D_REENTRANT:VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon::${mips32_asm}:o32::::::ranlibmips:", 610ebfedea0SLionel Sambuc 611ebfedea0SLionel Sambuc##### Compaq Non-Stop Kernel (Tandem) 612ebfedea0SLionel Sambuc"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::", 613ebfedea0SLionel Sambuc 614ebfedea0SLionel Sambuc# uClinux 615ebfedea0SLionel Sambuc"uClinux-dist","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):BN_LLONG:${no_asm}:$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::", 616ebfedea0SLionel Sambuc"uClinux-dist64","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):SIXTY_FOUR_BIT_LONG:${no_asm}:$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::", 617ebfedea0SLionel Sambuc 618ebfedea0SLionel Sambuc); 619ebfedea0SLionel Sambuc 620ebfedea0SLionel Sambucmy @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A 621ebfedea0SLionel Sambuc debug-VC-WIN64I debug-VC-WIN64A 622ebfedea0SLionel Sambuc VC-NT VC-CE VC-WIN32 debug-VC-WIN32 623ebfedea0SLionel Sambuc BC-32 624ebfedea0SLionel Sambuc netware-clib netware-clib-bsdsock 625ebfedea0SLionel Sambuc netware-libc netware-libc-bsdsock); 626ebfedea0SLionel Sambuc 627ebfedea0SLionel Sambucmy $idx = 0; 628ebfedea0SLionel Sambucmy $idx_cc = $idx++; 629ebfedea0SLionel Sambucmy $idx_cflags = $idx++; 630ebfedea0SLionel Sambucmy $idx_unistd = $idx++; 631ebfedea0SLionel Sambucmy $idx_thread_cflag = $idx++; 632ebfedea0SLionel Sambucmy $idx_sys_id = $idx++; 633ebfedea0SLionel Sambucmy $idx_lflags = $idx++; 634ebfedea0SLionel Sambucmy $idx_bn_ops = $idx++; 635ebfedea0SLionel Sambucmy $idx_cpuid_obj = $idx++; 636ebfedea0SLionel Sambucmy $idx_bn_obj = $idx++; 637ebfedea0SLionel Sambucmy $idx_des_obj = $idx++; 638ebfedea0SLionel Sambucmy $idx_aes_obj = $idx++; 639ebfedea0SLionel Sambucmy $idx_bf_obj = $idx++; 640ebfedea0SLionel Sambucmy $idx_md5_obj = $idx++; 641ebfedea0SLionel Sambucmy $idx_sha1_obj = $idx++; 642ebfedea0SLionel Sambucmy $idx_cast_obj = $idx++; 643ebfedea0SLionel Sambucmy $idx_rc4_obj = $idx++; 644ebfedea0SLionel Sambucmy $idx_rmd160_obj = $idx++; 645ebfedea0SLionel Sambucmy $idx_rc5_obj = $idx++; 646ebfedea0SLionel Sambucmy $idx_wp_obj = $idx++; 647ebfedea0SLionel Sambucmy $idx_cmll_obj = $idx++; 648ebfedea0SLionel Sambucmy $idx_modes_obj = $idx++; 649ebfedea0SLionel Sambucmy $idx_engines_obj = $idx++; 650ebfedea0SLionel Sambucmy $idx_perlasm_scheme = $idx++; 651ebfedea0SLionel Sambucmy $idx_dso_scheme = $idx++; 652ebfedea0SLionel Sambucmy $idx_shared_target = $idx++; 653ebfedea0SLionel Sambucmy $idx_shared_cflag = $idx++; 654ebfedea0SLionel Sambucmy $idx_shared_ldflag = $idx++; 655ebfedea0SLionel Sambucmy $idx_shared_extension = $idx++; 656ebfedea0SLionel Sambucmy $idx_ranlib = $idx++; 657ebfedea0SLionel Sambucmy $idx_arflags = $idx++; 658ebfedea0SLionel Sambucmy $idx_multilib = $idx++; 659ebfedea0SLionel Sambuc 660ebfedea0SLionel Sambucmy $prefix=""; 661ebfedea0SLionel Sambucmy $libdir=""; 662ebfedea0SLionel Sambucmy $openssldir=""; 663ebfedea0SLionel Sambucmy $exe_ext=""; 664ebfedea0SLionel Sambucmy $install_prefix= "$ENV{'INSTALL_PREFIX'}"; 665ebfedea0SLionel Sambucmy $cross_compile_prefix=""; 666ebfedea0SLionel Sambucmy $fipsdir="/usr/local/ssl/fips-2.0"; 667ebfedea0SLionel Sambucmy $fipslibdir=""; 668ebfedea0SLionel Sambucmy $baseaddr="0xFB00000"; 669ebfedea0SLionel Sambucmy $no_threads=0; 670ebfedea0SLionel Sambucmy $threads=0; 671ebfedea0SLionel Sambucmy $no_shared=0; # but "no-shared" is default 672ebfedea0SLionel Sambucmy $zlib=1; # but "no-zlib" is default 673ebfedea0SLionel Sambucmy $no_krb5=0; # but "no-krb5" is implied unless "--with-krb5-..." is used 674ebfedea0SLionel Sambucmy $no_rfc3779=1; # but "no-rfc3779" is default 675ebfedea0SLionel Sambucmy $no_asm=0; 676ebfedea0SLionel Sambucmy $no_dso=0; 677ebfedea0SLionel Sambucmy $no_gmp=0; 678ebfedea0SLionel Sambucmy @skip=(); 679ebfedea0SLionel Sambucmy $Makefile="Makefile"; 680ebfedea0SLionel Sambucmy $des_locl="crypto/des/des_locl.h"; 681ebfedea0SLionel Sambucmy $des ="crypto/des/des.h"; 682ebfedea0SLionel Sambucmy $bn ="crypto/bn/bn.h"; 683ebfedea0SLionel Sambucmy $md2 ="crypto/md2/md2.h"; 684ebfedea0SLionel Sambucmy $rc4 ="crypto/rc4/rc4.h"; 685ebfedea0SLionel Sambucmy $rc4_locl="crypto/rc4/rc4_locl.h"; 686ebfedea0SLionel Sambucmy $idea ="crypto/idea/idea.h"; 687ebfedea0SLionel Sambucmy $rc2 ="crypto/rc2/rc2.h"; 688ebfedea0SLionel Sambucmy $bf ="crypto/bf/bf_locl.h"; 689ebfedea0SLionel Sambucmy $bn_asm ="bn_asm.o"; 690ebfedea0SLionel Sambucmy $des_enc="des_enc.o fcrypt_b.o"; 691ebfedea0SLionel Sambucmy $aes_enc="aes_core.o aes_cbc.o"; 692ebfedea0SLionel Sambucmy $bf_enc ="bf_enc.o"; 693ebfedea0SLionel Sambucmy $cast_enc="c_enc.o"; 694ebfedea0SLionel Sambucmy $rc4_enc="rc4_enc.o rc4_skey.o"; 695ebfedea0SLionel Sambucmy $rc5_enc="rc5_enc.o"; 696ebfedea0SLionel Sambucmy $md5_obj=""; 697ebfedea0SLionel Sambucmy $sha1_obj=""; 698ebfedea0SLionel Sambucmy $rmd160_obj=""; 699ebfedea0SLionel Sambucmy $cmll_enc="camellia.o cmll_misc.o cmll_cbc.o"; 700ebfedea0SLionel Sambucmy $processor=""; 701ebfedea0SLionel Sambucmy $default_ranlib; 702ebfedea0SLionel Sambucmy $perl; 703ebfedea0SLionel Sambucmy $fips=0; 704ebfedea0SLionel Sambuc 705ebfedea0SLionel Sambucif (exists $ENV{FIPSDIR}) 706ebfedea0SLionel Sambuc { 707ebfedea0SLionel Sambuc $fipsdir = $ENV{FIPSDIR}; 708ebfedea0SLionel Sambuc $fipsdir =~ s/\/$//; 709ebfedea0SLionel Sambuc } 710ebfedea0SLionel Sambuc 711ebfedea0SLionel Sambuc# All of the following is disabled by default (RC5 was enabled before 0.9.8): 712ebfedea0SLionel Sambuc 713ebfedea0SLionel Sambucmy %disabled = ( # "what" => "comment" [or special keyword "experimental"] 714ebfedea0SLionel Sambuc "ec_nistp_64_gcc_128" => "default", 715ebfedea0SLionel Sambuc "gmp" => "default", 716ebfedea0SLionel Sambuc "jpake" => "experimental", 717ebfedea0SLionel Sambuc "md2" => "default", 718ebfedea0SLionel Sambuc "rc5" => "default", 719ebfedea0SLionel Sambuc "rfc3779" => "default", 720ebfedea0SLionel Sambuc "sctp" => "default", 721ebfedea0SLionel Sambuc "shared" => "default", 722ebfedea0SLionel Sambuc "store" => "experimental", 723*0a6a1f1dSLionel Sambuc "unit-test" => "default", 724ebfedea0SLionel Sambuc "zlib" => "default", 725ebfedea0SLionel Sambuc "zlib-dynamic" => "default" 726ebfedea0SLionel Sambuc ); 727ebfedea0SLionel Sambucmy @experimental = (); 728ebfedea0SLionel Sambuc 729ebfedea0SLionel Sambuc# This is what $depflags will look like with the above defaults 730ebfedea0SLionel Sambuc# (we need this to see if we should advise the user to run "make depend"): 731*0a6a1f1dSLionel Sambucmy $default_depflags = " -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST"; 732ebfedea0SLionel Sambuc 733ebfedea0SLionel Sambuc# Explicit "no-..." options will be collected in %disabled along with the defaults. 734ebfedea0SLionel Sambuc# To remove something from %disabled, use "enable-foo" (unless it's experimental). 735ebfedea0SLionel Sambuc# For symmetry, "disable-foo" is a synonym for "no-foo". 736ebfedea0SLionel Sambuc 737ebfedea0SLionel Sambuc# For features called "experimental" here, a more explicit "experimental-foo" is needed to enable. 738ebfedea0SLionel Sambuc# We will collect such requests in @experimental. 739ebfedea0SLionel Sambuc# To avoid accidental use of experimental features, applications will have to use -DOPENSSL_EXPERIMENTAL_FOO. 740ebfedea0SLionel Sambuc 741ebfedea0SLionel Sambuc 742ebfedea0SLionel Sambucmy $no_sse2=0; 743ebfedea0SLionel Sambuc 744ebfedea0SLionel Sambuc&usage if ($#ARGV < 0); 745ebfedea0SLionel Sambuc 746ebfedea0SLionel Sambucmy $flags; 747ebfedea0SLionel Sambucmy $depflags; 748ebfedea0SLionel Sambucmy $openssl_experimental_defines; 749ebfedea0SLionel Sambucmy $openssl_algorithm_defines; 750ebfedea0SLionel Sambucmy $openssl_thread_defines; 751ebfedea0SLionel Sambucmy $openssl_sys_defines=""; 752ebfedea0SLionel Sambucmy $openssl_other_defines; 753ebfedea0SLionel Sambucmy $libs; 754ebfedea0SLionel Sambucmy $libkrb5=""; 755ebfedea0SLionel Sambucmy $target; 756ebfedea0SLionel Sambucmy $options; 757ebfedea0SLionel Sambucmy $symlink; 758ebfedea0SLionel Sambucmy $make_depend=0; 759ebfedea0SLionel Sambucmy %withargs=(); 760ebfedea0SLionel Sambuc 761ebfedea0SLionel Sambucmy @argvcopy=@ARGV; 762ebfedea0SLionel Sambucmy $argvstring=""; 763ebfedea0SLionel Sambucmy $argv_unprocessed=1; 764ebfedea0SLionel Sambuc 765ebfedea0SLionel Sambucwhile($argv_unprocessed) 766ebfedea0SLionel Sambuc { 767ebfedea0SLionel Sambuc $flags=""; 768ebfedea0SLionel Sambuc $depflags=""; 769ebfedea0SLionel Sambuc $openssl_experimental_defines=""; 770ebfedea0SLionel Sambuc $openssl_algorithm_defines=""; 771ebfedea0SLionel Sambuc $openssl_thread_defines=""; 772ebfedea0SLionel Sambuc $openssl_sys_defines=""; 773ebfedea0SLionel Sambuc $openssl_other_defines=""; 774ebfedea0SLionel Sambuc $libs=""; 775ebfedea0SLionel Sambuc $target=""; 776ebfedea0SLionel Sambuc $options=""; 777ebfedea0SLionel Sambuc $symlink=1; 778ebfedea0SLionel Sambuc 779ebfedea0SLionel Sambuc $argv_unprocessed=0; 780ebfedea0SLionel Sambuc $argvstring=join(' ',@argvcopy); 781ebfedea0SLionel Sambuc 782ebfedea0SLionel SambucPROCESS_ARGS: 783ebfedea0SLionel Sambuc foreach (@argvcopy) 784ebfedea0SLionel Sambuc { 785ebfedea0SLionel Sambuc s /^-no-/no-/; # some people just can't read the instructions 786ebfedea0SLionel Sambuc 787ebfedea0SLionel Sambuc # rewrite some options in "enable-..." form 788ebfedea0SLionel Sambuc s /^-?-?shared$/enable-shared/; 789ebfedea0SLionel Sambuc s /^sctp$/enable-sctp/; 790ebfedea0SLionel Sambuc s /^threads$/enable-threads/; 791ebfedea0SLionel Sambuc s /^zlib$/enable-zlib/; 792ebfedea0SLionel Sambuc s /^zlib-dynamic$/enable-zlib-dynamic/; 793ebfedea0SLionel Sambuc 794ebfedea0SLionel Sambuc if (/^no-(.+)$/ || /^disable-(.+)$/) 795ebfedea0SLionel Sambuc { 796ebfedea0SLionel Sambuc if (!($disabled{$1} eq "experimental")) 797ebfedea0SLionel Sambuc { 798ebfedea0SLionel Sambuc if ($1 eq "ssl") 799ebfedea0SLionel Sambuc { 800ebfedea0SLionel Sambuc $disabled{"ssl2"} = "option(ssl)"; 801ebfedea0SLionel Sambuc $disabled{"ssl3"} = "option(ssl)"; 802ebfedea0SLionel Sambuc } 803ebfedea0SLionel Sambuc elsif ($1 eq "tls") 804ebfedea0SLionel Sambuc { 805ebfedea0SLionel Sambuc $disabled{"tls1"} = "option(tls)" 806ebfedea0SLionel Sambuc } 807*0a6a1f1dSLionel Sambuc elsif ($1 eq "ssl3-method") 808*0a6a1f1dSLionel Sambuc { 809*0a6a1f1dSLionel Sambuc $disabled{"ssl3-method"} = "option(ssl)"; 810*0a6a1f1dSLionel Sambuc $disabled{"ssl3"} = "option(ssl)"; 811*0a6a1f1dSLionel Sambuc } 812ebfedea0SLionel Sambuc else 813ebfedea0SLionel Sambuc { 814ebfedea0SLionel Sambuc $disabled{$1} = "option"; 815ebfedea0SLionel Sambuc } 816ebfedea0SLionel Sambuc } 817ebfedea0SLionel Sambuc } 818ebfedea0SLionel Sambuc elsif (/^enable-(.+)$/ || /^experimental-(.+)$/) 819ebfedea0SLionel Sambuc { 820ebfedea0SLionel Sambuc my $algo = $1; 821ebfedea0SLionel Sambuc if ($disabled{$algo} eq "experimental") 822ebfedea0SLionel Sambuc { 823ebfedea0SLionel Sambuc die "You are requesting an experimental feature; please say 'experimental-$algo' if you are sure\n" 824ebfedea0SLionel Sambuc unless (/^experimental-/); 825ebfedea0SLionel Sambuc push @experimental, $algo; 826ebfedea0SLionel Sambuc } 827ebfedea0SLionel Sambuc delete $disabled{$algo}; 828ebfedea0SLionel Sambuc 829ebfedea0SLionel Sambuc $threads = 1 if ($algo eq "threads"); 830ebfedea0SLionel Sambuc } 831ebfedea0SLionel Sambuc elsif (/^--test-sanity$/) 832ebfedea0SLionel Sambuc { 833ebfedea0SLionel Sambuc exit(&test_sanity()); 834ebfedea0SLionel Sambuc } 835ebfedea0SLionel Sambuc elsif (/^--strict-warnings/) 836ebfedea0SLionel Sambuc { 837ebfedea0SLionel Sambuc $strict_warnings = 1; 838ebfedea0SLionel Sambuc } 839ebfedea0SLionel Sambuc elsif (/^reconfigure/ || /^reconf/) 840ebfedea0SLionel Sambuc { 841ebfedea0SLionel Sambuc if (open(IN,"<$Makefile")) 842ebfedea0SLionel Sambuc { 843ebfedea0SLionel Sambuc while (<IN>) 844ebfedea0SLionel Sambuc { 845ebfedea0SLionel Sambuc chomp; 846ebfedea0SLionel Sambuc if (/^CONFIGURE_ARGS=(.*)/) 847ebfedea0SLionel Sambuc { 848ebfedea0SLionel Sambuc $argvstring=$1; 849ebfedea0SLionel Sambuc @argvcopy=split(' ',$argvstring); 850ebfedea0SLionel Sambuc die "Incorrect data to reconfigure, please do a normal configuration\n" 851ebfedea0SLionel Sambuc if (grep(/^reconf/,@argvcopy)); 852ebfedea0SLionel Sambuc print "Reconfiguring with: $argvstring\n"; 853ebfedea0SLionel Sambuc $argv_unprocessed=1; 854ebfedea0SLionel Sambuc close(IN); 855ebfedea0SLionel Sambuc last PROCESS_ARGS; 856ebfedea0SLionel Sambuc } 857ebfedea0SLionel Sambuc } 858ebfedea0SLionel Sambuc close(IN); 859ebfedea0SLionel Sambuc } 860ebfedea0SLionel Sambuc die "Insufficient data to reconfigure, please do a normal configuration\n"; 861ebfedea0SLionel Sambuc } 862ebfedea0SLionel Sambuc elsif (/^386$/) 863ebfedea0SLionel Sambuc { $processor=386; } 864ebfedea0SLionel Sambuc elsif (/^fips$/) 865ebfedea0SLionel Sambuc { 866ebfedea0SLionel Sambuc $fips=1; 867ebfedea0SLionel Sambuc } 868ebfedea0SLionel Sambuc elsif (/^rsaref$/) 869ebfedea0SLionel Sambuc { 870ebfedea0SLionel Sambuc # No RSAref support any more since it's not needed. 871ebfedea0SLionel Sambuc # The check for the option is there so scripts aren't 872ebfedea0SLionel Sambuc # broken 873ebfedea0SLionel Sambuc } 874ebfedea0SLionel Sambuc elsif (/^[-+]/) 875ebfedea0SLionel Sambuc { 876ebfedea0SLionel Sambuc if (/^-[lL](.*)$/ or /^-Wl,/) 877ebfedea0SLionel Sambuc { 878ebfedea0SLionel Sambuc $libs.=$_." "; 879ebfedea0SLionel Sambuc } 880ebfedea0SLionel Sambuc elsif (/^-[^-]/ or /^\+/) 881ebfedea0SLionel Sambuc { 882ebfedea0SLionel Sambuc $_ =~ s/%([0-9a-f]{1,2})/chr(hex($1))/gei; 883ebfedea0SLionel Sambuc $flags.=$_." "; 884ebfedea0SLionel Sambuc } 885ebfedea0SLionel Sambuc elsif (/^--prefix=(.*)$/) 886ebfedea0SLionel Sambuc { 887ebfedea0SLionel Sambuc $prefix=$1; 888ebfedea0SLionel Sambuc } 889ebfedea0SLionel Sambuc elsif (/^--libdir=(.*)$/) 890ebfedea0SLionel Sambuc { 891ebfedea0SLionel Sambuc $libdir=$1; 892ebfedea0SLionel Sambuc } 893ebfedea0SLionel Sambuc elsif (/^--openssldir=(.*)$/) 894ebfedea0SLionel Sambuc { 895ebfedea0SLionel Sambuc $openssldir=$1; 896ebfedea0SLionel Sambuc } 897ebfedea0SLionel Sambuc elsif (/^--install.prefix=(.*)$/) 898ebfedea0SLionel Sambuc { 899ebfedea0SLionel Sambuc $install_prefix=$1; 900ebfedea0SLionel Sambuc } 901ebfedea0SLionel Sambuc elsif (/^--with-krb5-(dir|lib|include|flavor)=(.*)$/) 902ebfedea0SLionel Sambuc { 903ebfedea0SLionel Sambuc $withargs{"krb5-".$1}=$2; 904ebfedea0SLionel Sambuc } 905ebfedea0SLionel Sambuc elsif (/^--with-zlib-lib=(.*)$/) 906ebfedea0SLionel Sambuc { 907ebfedea0SLionel Sambuc $withargs{"zlib-lib"}=$1; 908ebfedea0SLionel Sambuc } 909ebfedea0SLionel Sambuc elsif (/^--with-zlib-include=(.*)$/) 910ebfedea0SLionel Sambuc { 911ebfedea0SLionel Sambuc $withargs{"zlib-include"}="-I$1"; 912ebfedea0SLionel Sambuc } 913ebfedea0SLionel Sambuc elsif (/^--with-fipsdir=(.*)$/) 914ebfedea0SLionel Sambuc { 915ebfedea0SLionel Sambuc $fipsdir="$1"; 916ebfedea0SLionel Sambuc } 917ebfedea0SLionel Sambuc elsif (/^--with-fipslibdir=(.*)$/) 918ebfedea0SLionel Sambuc { 919ebfedea0SLionel Sambuc $fipslibdir="$1"; 920ebfedea0SLionel Sambuc } 921ebfedea0SLionel Sambuc elsif (/^--with-baseaddr=(.*)$/) 922ebfedea0SLionel Sambuc { 923ebfedea0SLionel Sambuc $baseaddr="$1"; 924ebfedea0SLionel Sambuc } 925ebfedea0SLionel Sambuc elsif (/^--cross-compile-prefix=(.*)$/) 926ebfedea0SLionel Sambuc { 927ebfedea0SLionel Sambuc $cross_compile_prefix=$1; 928ebfedea0SLionel Sambuc } 929ebfedea0SLionel Sambuc else 930ebfedea0SLionel Sambuc { 931ebfedea0SLionel Sambuc print STDERR $usage; 932ebfedea0SLionel Sambuc exit(1); 933ebfedea0SLionel Sambuc } 934ebfedea0SLionel Sambuc } 935ebfedea0SLionel Sambuc elsif ($_ =~ /^([^:]+):(.+)$/) 936ebfedea0SLionel Sambuc { 937ebfedea0SLionel Sambuc eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string 938ebfedea0SLionel Sambuc $target=$1; 939ebfedea0SLionel Sambuc } 940ebfedea0SLionel Sambuc else 941ebfedea0SLionel Sambuc { 942ebfedea0SLionel Sambuc die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); 943ebfedea0SLionel Sambuc $target=$_; 944ebfedea0SLionel Sambuc } 945ebfedea0SLionel Sambuc 946ebfedea0SLionel Sambuc unless ($_ eq $target || /^no-/ || /^disable-/) 947ebfedea0SLionel Sambuc { 948ebfedea0SLionel Sambuc # "no-..." follows later after implied disactivations 949ebfedea0SLionel Sambuc # have been derived. (Don't take this too seroiusly, 950ebfedea0SLionel Sambuc # we really only write OPTIONS to the Makefile out of 951ebfedea0SLionel Sambuc # nostalgia.) 952ebfedea0SLionel Sambuc 953ebfedea0SLionel Sambuc if ($options eq "") 954ebfedea0SLionel Sambuc { $options = $_; } 955ebfedea0SLionel Sambuc else 956ebfedea0SLionel Sambuc { $options .= " ".$_; } 957ebfedea0SLionel Sambuc } 958ebfedea0SLionel Sambuc } 959ebfedea0SLionel Sambuc } 960ebfedea0SLionel Sambuc 961ebfedea0SLionel Sambuc 962ebfedea0SLionel Sambuc 963ebfedea0SLionel Sambucif ($processor eq "386") 964ebfedea0SLionel Sambuc { 965ebfedea0SLionel Sambuc $disabled{"sse2"} = "forced"; 966ebfedea0SLionel Sambuc } 967ebfedea0SLionel Sambuc 968ebfedea0SLionel Sambucif (!defined($withargs{"krb5-flavor"}) || $withargs{"krb5-flavor"} eq "") 969ebfedea0SLionel Sambuc { 970ebfedea0SLionel Sambuc $disabled{"krb5"} = "krb5-flavor not specified"; 971ebfedea0SLionel Sambuc } 972ebfedea0SLionel Sambuc 973ebfedea0SLionel Sambucif (!defined($disabled{"zlib-dynamic"})) 974ebfedea0SLionel Sambuc { 975ebfedea0SLionel Sambuc # "zlib-dynamic" was specifically enabled, so enable "zlib" 976ebfedea0SLionel Sambuc delete $disabled{"zlib"}; 977ebfedea0SLionel Sambuc } 978ebfedea0SLionel Sambuc 979ebfedea0SLionel Sambucif (defined($disabled{"rijndael"})) 980ebfedea0SLionel Sambuc { 981ebfedea0SLionel Sambuc $disabled{"aes"} = "forced"; 982ebfedea0SLionel Sambuc } 983ebfedea0SLionel Sambucif (defined($disabled{"des"})) 984ebfedea0SLionel Sambuc { 985ebfedea0SLionel Sambuc $disabled{"mdc2"} = "forced"; 986ebfedea0SLionel Sambuc } 987ebfedea0SLionel Sambucif (defined($disabled{"ec"})) 988ebfedea0SLionel Sambuc { 989ebfedea0SLionel Sambuc $disabled{"ecdsa"} = "forced"; 990ebfedea0SLionel Sambuc $disabled{"ecdh"} = "forced"; 991ebfedea0SLionel Sambuc } 992ebfedea0SLionel Sambuc 993ebfedea0SLionel Sambuc# SSL 2.0 requires MD5 and RSA 994ebfedea0SLionel Sambucif (defined($disabled{"md5"}) || defined($disabled{"rsa"})) 995ebfedea0SLionel Sambuc { 996ebfedea0SLionel Sambuc $disabled{"ssl2"} = "forced"; 997ebfedea0SLionel Sambuc } 998ebfedea0SLionel Sambuc 999ebfedea0SLionel Sambucif ($fips && $fipslibdir eq "") 1000ebfedea0SLionel Sambuc { 1001ebfedea0SLionel Sambuc $fipslibdir = $fipsdir . "/lib/"; 1002ebfedea0SLionel Sambuc } 1003ebfedea0SLionel Sambuc 1004ebfedea0SLionel Sambuc# RSAX ENGINE sets default non-FIPS RSA method. 1005ebfedea0SLionel Sambucif ($fips) 1006ebfedea0SLionel Sambuc { 1007ebfedea0SLionel Sambuc $disabled{"rsax"} = "forced"; 1008ebfedea0SLionel Sambuc } 1009ebfedea0SLionel Sambuc 1010ebfedea0SLionel Sambuc# SSL 3.0 and TLS requires MD5 and SHA and either RSA or DSA+DH 1011ebfedea0SLionel Sambucif (defined($disabled{"md5"}) || defined($disabled{"sha"}) 1012ebfedea0SLionel Sambuc || (defined($disabled{"rsa"}) 1013ebfedea0SLionel Sambuc && (defined($disabled{"dsa"}) || defined($disabled{"dh"})))) 1014ebfedea0SLionel Sambuc { 1015ebfedea0SLionel Sambuc $disabled{"ssl3"} = "forced"; 1016ebfedea0SLionel Sambuc $disabled{"tls1"} = "forced"; 1017ebfedea0SLionel Sambuc } 1018ebfedea0SLionel Sambuc 1019ebfedea0SLionel Sambucif (defined($disabled{"tls1"})) 1020ebfedea0SLionel Sambuc { 1021ebfedea0SLionel Sambuc $disabled{"tlsext"} = "forced"; 1022ebfedea0SLionel Sambuc } 1023ebfedea0SLionel Sambuc 1024ebfedea0SLionel Sambucif (defined($disabled{"ec"}) || defined($disabled{"dsa"}) 1025ebfedea0SLionel Sambuc || defined($disabled{"dh"})) 1026ebfedea0SLionel Sambuc { 1027ebfedea0SLionel Sambuc $disabled{"gost"} = "forced"; 1028ebfedea0SLionel Sambuc } 1029ebfedea0SLionel Sambuc 1030ebfedea0SLionel Sambuc# SRP and HEARTBEATS require TLSEXT 1031ebfedea0SLionel Sambucif (defined($disabled{"tlsext"})) 1032ebfedea0SLionel Sambuc { 1033ebfedea0SLionel Sambuc $disabled{"srp"} = "forced"; 1034ebfedea0SLionel Sambuc $disabled{"heartbeats"} = "forced"; 1035ebfedea0SLionel Sambuc } 1036ebfedea0SLionel Sambuc 1037ebfedea0SLionel Sambucif ($target eq "TABLE") { 1038ebfedea0SLionel Sambuc foreach $target (sort keys %table) { 1039ebfedea0SLionel Sambuc print_table_entry($target); 1040ebfedea0SLionel Sambuc } 1041ebfedea0SLionel Sambuc exit 0; 1042ebfedea0SLionel Sambuc} 1043ebfedea0SLionel Sambuc 1044ebfedea0SLionel Sambucif ($target eq "LIST") { 1045ebfedea0SLionel Sambuc foreach (sort keys %table) { 1046ebfedea0SLionel Sambuc print; 1047ebfedea0SLionel Sambuc print "\n"; 1048ebfedea0SLionel Sambuc } 1049ebfedea0SLionel Sambuc exit 0; 1050ebfedea0SLionel Sambuc} 1051ebfedea0SLionel Sambuc 1052ebfedea0SLionel Sambucif ($target =~ m/^CygWin32(-.*)$/) { 1053ebfedea0SLionel Sambuc $target = "Cygwin".$1; 1054ebfedea0SLionel Sambuc} 1055ebfedea0SLionel Sambuc 1056ebfedea0SLionel Sambucprint "Configuring for $target\n"; 1057ebfedea0SLionel Sambuc 1058ebfedea0SLionel Sambuc&usage if (!defined($table{$target})); 1059ebfedea0SLionel Sambuc 1060ebfedea0SLionel Sambuc 1061ebfedea0SLionel Sambucforeach (sort (keys %disabled)) 1062ebfedea0SLionel Sambuc { 1063ebfedea0SLionel Sambuc $options .= " no-$_"; 1064ebfedea0SLionel Sambuc 1065ebfedea0SLionel Sambuc printf " no-%-12s %-10s", $_, "[$disabled{$_}]"; 1066ebfedea0SLionel Sambuc 1067ebfedea0SLionel Sambuc if (/^dso$/) 1068ebfedea0SLionel Sambuc { $no_dso = 1; } 1069ebfedea0SLionel Sambuc elsif (/^threads$/) 1070ebfedea0SLionel Sambuc { $no_threads = 1; } 1071ebfedea0SLionel Sambuc elsif (/^shared$/) 1072ebfedea0SLionel Sambuc { $no_shared = 1; } 1073ebfedea0SLionel Sambuc elsif (/^zlib$/) 1074ebfedea0SLionel Sambuc { $zlib = 0; } 1075ebfedea0SLionel Sambuc elsif (/^static-engine$/) 1076ebfedea0SLionel Sambuc { } 1077ebfedea0SLionel Sambuc elsif (/^zlib-dynamic$/) 1078ebfedea0SLionel Sambuc { } 1079ebfedea0SLionel Sambuc elsif (/^symlinks$/) 1080ebfedea0SLionel Sambuc { $symlink = 0; } 1081ebfedea0SLionel Sambuc elsif (/^sse2$/) 1082ebfedea0SLionel Sambuc { $no_sse2 = 1; } 1083ebfedea0SLionel Sambuc else 1084ebfedea0SLionel Sambuc { 1085ebfedea0SLionel Sambuc my ($ALGO, $algo); 1086ebfedea0SLionel Sambuc ($ALGO = $algo = $_) =~ tr/[\-a-z]/[_A-Z]/; 1087ebfedea0SLionel Sambuc 1088ebfedea0SLionel Sambuc if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/) 1089ebfedea0SLionel Sambuc { 1090ebfedea0SLionel Sambuc $openssl_other_defines .= "#define OPENSSL_NO_$ALGO\n"; 1091ebfedea0SLionel Sambuc print " OPENSSL_NO_$ALGO"; 1092ebfedea0SLionel Sambuc 1093ebfedea0SLionel Sambuc if (/^err$/) { $flags .= "-DOPENSSL_NO_ERR "; } 1094ebfedea0SLionel Sambuc elsif (/^asm$/) { $no_asm = 1; } 1095ebfedea0SLionel Sambuc } 1096ebfedea0SLionel Sambuc else 1097ebfedea0SLionel Sambuc { 1098ebfedea0SLionel Sambuc $openssl_algorithm_defines .= "#define OPENSSL_NO_$ALGO\n"; 1099ebfedea0SLionel Sambuc print " OPENSSL_NO_$ALGO"; 1100ebfedea0SLionel Sambuc 1101ebfedea0SLionel Sambuc if (/^krb5$/) 1102ebfedea0SLionel Sambuc { $no_krb5 = 1; } 1103ebfedea0SLionel Sambuc else 1104ebfedea0SLionel Sambuc { 1105ebfedea0SLionel Sambuc push @skip, $algo; 1106ebfedea0SLionel Sambuc # fix-up crypto/directory name(s) 1107ebfedea0SLionel Sambuc @skip[$#skip]="whrlpool" if $algo eq "whirlpool"; 1108ebfedea0SLionel Sambuc print " (skip dir)"; 1109ebfedea0SLionel Sambuc 1110ebfedea0SLionel Sambuc $depflags .= " -DOPENSSL_NO_$ALGO"; 1111ebfedea0SLionel Sambuc } 1112ebfedea0SLionel Sambuc } 1113ebfedea0SLionel Sambuc } 1114ebfedea0SLionel Sambuc 1115ebfedea0SLionel Sambuc print "\n"; 1116ebfedea0SLionel Sambuc } 1117ebfedea0SLionel Sambuc 1118ebfedea0SLionel Sambucmy $exp_cflags = ""; 1119ebfedea0SLionel Sambucforeach (sort @experimental) 1120ebfedea0SLionel Sambuc { 1121ebfedea0SLionel Sambuc my $ALGO; 1122ebfedea0SLionel Sambuc ($ALGO = $_) =~ tr/[a-z]/[A-Z]/; 1123ebfedea0SLionel Sambuc 1124ebfedea0SLionel Sambuc # opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined 1125ebfedea0SLionel Sambuc $openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n"; 1126ebfedea0SLionel Sambuc $exp_cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO"; 1127ebfedea0SLionel Sambuc } 1128ebfedea0SLionel Sambuc 1129ebfedea0SLionel Sambucmy $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds; 1130ebfedea0SLionel Sambuc 1131ebfedea0SLionel Sambuc$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/); 1132ebfedea0SLionel Sambuc$exe_ext=".nlm" if ($target =~ /netware/); 1133ebfedea0SLionel Sambuc$exe_ext=".pm" if ($target =~ /vos/); 1134ebfedea0SLionel Sambuc$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq ""); 1135ebfedea0SLionel Sambuc$prefix=$openssldir if $prefix eq ""; 1136ebfedea0SLionel Sambuc 1137ebfedea0SLionel Sambuc$default_ranlib= &which("ranlib") or $default_ranlib="true"; 1138ebfedea0SLionel Sambuc$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl") 1139ebfedea0SLionel Sambuc or $perl="perl"; 1140ebfedea0SLionel Sambucmy $make = $ENV{'MAKE'} || "make"; 1141ebfedea0SLionel Sambuc 1142ebfedea0SLionel Sambuc$cross_compile_prefix=$ENV{'CROSS_COMPILE'} if $cross_compile_prefix eq ""; 1143ebfedea0SLionel Sambuc 1144ebfedea0SLionel Sambucchop $openssldir if $openssldir =~ /\/$/; 1145ebfedea0SLionel Sambucchop $prefix if $prefix =~ /.\/$/; 1146ebfedea0SLionel Sambuc 1147ebfedea0SLionel Sambuc$openssldir=$prefix . "/ssl" if $openssldir eq ""; 1148ebfedea0SLionel Sambuc$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/; 1149ebfedea0SLionel Sambuc 1150ebfedea0SLionel Sambuc 1151ebfedea0SLionel Sambucprint "IsMK1MF=$IsMK1MF\n"; 1152ebfedea0SLionel Sambuc 1153ebfedea0SLionel Sambucmy @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 1154ebfedea0SLionel Sambucmy $cc = $fields[$idx_cc]; 1155ebfedea0SLionel Sambuc# Allow environment CC to override compiler... 1156ebfedea0SLionel Sambucif($ENV{CC}) { 1157ebfedea0SLionel Sambuc $cc = $ENV{CC}; 1158ebfedea0SLionel Sambuc} 1159ebfedea0SLionel Sambucmy $cflags = $fields[$idx_cflags]; 1160ebfedea0SLionel Sambucmy $unistd = $fields[$idx_unistd]; 1161ebfedea0SLionel Sambucmy $thread_cflag = $fields[$idx_thread_cflag]; 1162ebfedea0SLionel Sambucmy $sys_id = $fields[$idx_sys_id]; 1163ebfedea0SLionel Sambucmy $lflags = $fields[$idx_lflags]; 1164ebfedea0SLionel Sambucmy $bn_ops = $fields[$idx_bn_ops]; 1165ebfedea0SLionel Sambucmy $cpuid_obj = $fields[$idx_cpuid_obj]; 1166ebfedea0SLionel Sambucmy $bn_obj = $fields[$idx_bn_obj]; 1167ebfedea0SLionel Sambucmy $des_obj = $fields[$idx_des_obj]; 1168ebfedea0SLionel Sambucmy $aes_obj = $fields[$idx_aes_obj]; 1169ebfedea0SLionel Sambucmy $bf_obj = $fields[$idx_bf_obj]; 1170ebfedea0SLionel Sambucmy $md5_obj = $fields[$idx_md5_obj]; 1171ebfedea0SLionel Sambucmy $sha1_obj = $fields[$idx_sha1_obj]; 1172ebfedea0SLionel Sambucmy $cast_obj = $fields[$idx_cast_obj]; 1173ebfedea0SLionel Sambucmy $rc4_obj = $fields[$idx_rc4_obj]; 1174ebfedea0SLionel Sambucmy $rmd160_obj = $fields[$idx_rmd160_obj]; 1175ebfedea0SLionel Sambucmy $rc5_obj = $fields[$idx_rc5_obj]; 1176ebfedea0SLionel Sambucmy $wp_obj = $fields[$idx_wp_obj]; 1177ebfedea0SLionel Sambucmy $cmll_obj = $fields[$idx_cmll_obj]; 1178ebfedea0SLionel Sambucmy $modes_obj = $fields[$idx_modes_obj]; 1179ebfedea0SLionel Sambucmy $engines_obj = $fields[$idx_engines_obj]; 1180ebfedea0SLionel Sambucmy $perlasm_scheme = $fields[$idx_perlasm_scheme]; 1181ebfedea0SLionel Sambucmy $dso_scheme = $fields[$idx_dso_scheme]; 1182ebfedea0SLionel Sambucmy $shared_target = $fields[$idx_shared_target]; 1183ebfedea0SLionel Sambucmy $shared_cflag = $fields[$idx_shared_cflag]; 1184ebfedea0SLionel Sambucmy $shared_ldflag = $fields[$idx_shared_ldflag]; 1185ebfedea0SLionel Sambucmy $shared_extension = $fields[$idx_shared_extension]; 1186ebfedea0SLionel Sambucmy $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib]; 1187ebfedea0SLionel Sambucmy $ar = $ENV{'AR'} || "ar"; 1188ebfedea0SLionel Sambucmy $arflags = $fields[$idx_arflags]; 1189ebfedea0SLionel Sambucmy $multilib = $fields[$idx_multilib]; 1190ebfedea0SLionel Sambuc 1191ebfedea0SLionel Sambuc# if $prefix/lib$multilib is not an existing directory, then 1192ebfedea0SLionel Sambuc# assume that it's not searched by linker automatically, in 1193ebfedea0SLionel Sambuc# which case adding $multilib suffix causes more grief than 1194ebfedea0SLionel Sambuc# we're ready to tolerate, so don't... 1195ebfedea0SLionel Sambuc$multilib="" if !-d "$prefix/lib$multilib"; 1196ebfedea0SLionel Sambuc 1197ebfedea0SLionel Sambuc$libdir="lib$multilib" if $libdir eq ""; 1198ebfedea0SLionel Sambuc 1199ebfedea0SLionel Sambuc$cflags = "$cflags$exp_cflags"; 1200ebfedea0SLionel Sambuc 1201ebfedea0SLionel Sambuc# '%' in $lflags is used to split flags to "pre-" and post-flags 1202ebfedea0SLionel Sambucmy ($prelflags,$postlflags)=split('%',$lflags); 1203ebfedea0SLionel Sambucif (defined($postlflags)) { $lflags=$postlflags; } 1204ebfedea0SLionel Sambucelse { $lflags=$prelflags; undef $prelflags; } 1205ebfedea0SLionel Sambuc 1206ebfedea0SLionel Sambucif ($target =~ /^mingw/ && `$cc --target-help 2>&1` !~ m/\-mno\-cygwin/m) 1207ebfedea0SLionel Sambuc { 1208ebfedea0SLionel Sambuc $cflags =~ s/\-mno\-cygwin\s*//; 1209ebfedea0SLionel Sambuc $shared_ldflag =~ s/\-mno\-cygwin\s*//; 1210ebfedea0SLionel Sambuc } 1211ebfedea0SLionel Sambuc 1212ebfedea0SLionel Sambucmy $no_shared_warn=0; 1213ebfedea0SLionel Sambucmy $no_user_cflags=0; 1214ebfedea0SLionel Sambuc 1215ebfedea0SLionel Sambucif ($flags ne "") { $cflags="$flags$cflags"; } 1216ebfedea0SLionel Sambucelse { $no_user_cflags=1; } 1217ebfedea0SLionel Sambuc 1218ebfedea0SLionel Sambuc# Kerberos settings. The flavor must be provided from outside, either through 1219ebfedea0SLionel Sambuc# the script "config" or manually. 1220ebfedea0SLionel Sambucif (!$no_krb5) 1221ebfedea0SLionel Sambuc { 1222ebfedea0SLionel Sambuc my ($lresolv, $lpath, $lext); 1223ebfedea0SLionel Sambuc if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/) 1224ebfedea0SLionel Sambuc { 1225ebfedea0SLionel Sambuc die "Sorry, Heimdal is currently not supported\n"; 1226ebfedea0SLionel Sambuc } 1227ebfedea0SLionel Sambuc ##### HACK to force use of Heimdal. 1228ebfedea0SLionel Sambuc ##### WARNING: Since we don't really have adequate support for Heimdal, 1229ebfedea0SLionel Sambuc ##### using this will break the build. You'll have to make 1230ebfedea0SLionel Sambuc ##### changes to the source, and if you do, please send 1231ebfedea0SLionel Sambuc ##### patches to openssl-dev@openssl.org 1232ebfedea0SLionel Sambuc if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/) 1233ebfedea0SLionel Sambuc { 1234ebfedea0SLionel Sambuc warn "Heimdal isn't really supported. Your build WILL break\n"; 1235ebfedea0SLionel Sambuc warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n"; 1236ebfedea0SLionel Sambuc $withargs{"krb5-dir"} = "/usr/heimdal" 1237ebfedea0SLionel Sambuc if $withargs{"krb5-dir"} eq ""; 1238ebfedea0SLionel Sambuc $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}. 1239ebfedea0SLionel Sambuc "/lib -lgssapi -lkrb5 -lcom_err" 1240ebfedea0SLionel Sambuc if $withargs{"krb5-lib"} eq "" && !$IsMK1MF; 1241ebfedea0SLionel Sambuc $cflags="-DKRB5_HEIMDAL $cflags"; 1242ebfedea0SLionel Sambuc } 1243ebfedea0SLionel Sambuc if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/) 1244ebfedea0SLionel Sambuc { 1245ebfedea0SLionel Sambuc $withargs{"krb5-dir"} = "/usr/kerberos" 1246ebfedea0SLionel Sambuc if $withargs{"krb5-dir"} eq ""; 1247ebfedea0SLionel Sambuc $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}. 1248ebfedea0SLionel Sambuc "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto" 1249ebfedea0SLionel Sambuc if $withargs{"krb5-lib"} eq "" && !$IsMK1MF; 1250ebfedea0SLionel Sambuc $cflags="-DKRB5_MIT $cflags"; 1251ebfedea0SLionel Sambuc $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//; 1252ebfedea0SLionel Sambuc if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/) 1253ebfedea0SLionel Sambuc { 1254ebfedea0SLionel Sambuc $cflags="-DKRB5_MIT_OLD11 $cflags"; 1255ebfedea0SLionel Sambuc } 1256ebfedea0SLionel Sambuc } 1257ebfedea0SLionel Sambuc LRESOLV: 1258ebfedea0SLionel Sambuc foreach $lpath ("/lib", "/usr/lib") 1259ebfedea0SLionel Sambuc { 1260ebfedea0SLionel Sambuc foreach $lext ("a", "so") 1261ebfedea0SLionel Sambuc { 1262ebfedea0SLionel Sambuc $lresolv = "$lpath/libresolv.$lext"; 1263ebfedea0SLionel Sambuc last LRESOLV if (-r "$lresolv"); 1264ebfedea0SLionel Sambuc $lresolv = ""; 1265ebfedea0SLionel Sambuc } 1266ebfedea0SLionel Sambuc } 1267ebfedea0SLionel Sambuc $withargs{"krb5-lib"} .= " -lresolv" 1268ebfedea0SLionel Sambuc if ("$lresolv" ne ""); 1269ebfedea0SLionel Sambuc $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include" 1270ebfedea0SLionel Sambuc if $withargs{"krb5-include"} eq "" && 1271ebfedea0SLionel Sambuc $withargs{"krb5-dir"} ne ""; 1272ebfedea0SLionel Sambuc } 1273ebfedea0SLionel Sambuc 1274ebfedea0SLionel Sambuc# The DSO code currently always implements all functions so that no 1275ebfedea0SLionel Sambuc# applications will have to worry about that from a compilation point 1276ebfedea0SLionel Sambuc# of view. However, the "method"s may return zero unless that platform 1277ebfedea0SLionel Sambuc# has support compiled in for them. Currently each method is enabled 1278ebfedea0SLionel Sambuc# by a define "DSO_<name>" ... we translate the "dso_scheme" config 1279ebfedea0SLionel Sambuc# string entry into using the following logic; 1280ebfedea0SLionel Sambucmy $dso_cflags; 1281ebfedea0SLionel Sambucif (!$no_dso && $dso_scheme ne "") 1282ebfedea0SLionel Sambuc { 1283ebfedea0SLionel Sambuc $dso_scheme =~ tr/[a-z]/[A-Z]/; 1284ebfedea0SLionel Sambuc if ($dso_scheme eq "DLFCN") 1285ebfedea0SLionel Sambuc { 1286ebfedea0SLionel Sambuc $dso_cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H"; 1287ebfedea0SLionel Sambuc } 1288ebfedea0SLionel Sambuc elsif ($dso_scheme eq "DLFCN_NO_H") 1289ebfedea0SLionel Sambuc { 1290ebfedea0SLionel Sambuc $dso_cflags = "-DDSO_DLFCN"; 1291ebfedea0SLionel Sambuc } 1292ebfedea0SLionel Sambuc else 1293ebfedea0SLionel Sambuc { 1294ebfedea0SLionel Sambuc $dso_cflags = "-DDSO_$dso_scheme"; 1295ebfedea0SLionel Sambuc } 1296ebfedea0SLionel Sambuc $cflags = "$dso_cflags $cflags"; 1297ebfedea0SLionel Sambuc } 1298ebfedea0SLionel Sambuc 1299ebfedea0SLionel Sambucmy $thread_cflags; 1300ebfedea0SLionel Sambucmy $thread_defines; 1301ebfedea0SLionel Sambucif ($thread_cflag ne "(unknown)" && !$no_threads) 1302ebfedea0SLionel Sambuc { 1303ebfedea0SLionel Sambuc # If we know how to do it, support threads by default. 1304ebfedea0SLionel Sambuc $threads = 1; 1305ebfedea0SLionel Sambuc } 1306ebfedea0SLionel Sambucif ($thread_cflag eq "(unknown)" && $threads) 1307ebfedea0SLionel Sambuc { 1308ebfedea0SLionel Sambuc # If the user asked for "threads", [s]he is also expected to 1309ebfedea0SLionel Sambuc # provide any system-dependent compiler options that are 1310ebfedea0SLionel Sambuc # necessary. 1311ebfedea0SLionel Sambuc if ($no_user_cflags) 1312ebfedea0SLionel Sambuc { 1313ebfedea0SLionel Sambuc print "You asked for multi-threading support, but didn't\n"; 1314ebfedea0SLionel Sambuc print "provide any system-specific compiler options\n"; 1315ebfedea0SLionel Sambuc exit(1); 1316ebfedea0SLionel Sambuc } 1317ebfedea0SLionel Sambuc $thread_cflags="-DOPENSSL_THREADS $cflags" ; 1318ebfedea0SLionel Sambuc $thread_defines .= "#define OPENSSL_THREADS\n"; 1319ebfedea0SLionel Sambuc } 1320ebfedea0SLionel Sambucelse 1321ebfedea0SLionel Sambuc { 1322ebfedea0SLionel Sambuc $thread_cflags="-DOPENSSL_THREADS $thread_cflag $cflags"; 1323ebfedea0SLionel Sambuc $thread_defines .= "#define OPENSSL_THREADS\n"; 1324ebfedea0SLionel Sambuc# my $def; 1325ebfedea0SLionel Sambuc# foreach $def (split ' ',$thread_cflag) 1326ebfedea0SLionel Sambuc# { 1327ebfedea0SLionel Sambuc# if ($def =~ s/^-D// && $def !~ /^_/) 1328ebfedea0SLionel Sambuc# { 1329ebfedea0SLionel Sambuc# $thread_defines .= "#define $def\n"; 1330ebfedea0SLionel Sambuc# } 1331ebfedea0SLionel Sambuc# } 1332ebfedea0SLionel Sambuc } 1333ebfedea0SLionel Sambuc 1334ebfedea0SLionel Sambuc$lflags="$libs$lflags" if ($libs ne ""); 1335ebfedea0SLionel Sambuc 1336ebfedea0SLionel Sambucif ($no_asm) 1337ebfedea0SLionel Sambuc { 1338ebfedea0SLionel Sambuc $cpuid_obj=$bn_obj= 1339ebfedea0SLionel Sambuc $des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj=$cmll_obj= 1340ebfedea0SLionel Sambuc $modes_obj=$sha1_obj=$md5_obj=$rmd160_obj=$wp_obj=$engines_obj=""; 1341ebfedea0SLionel Sambuc } 1342ebfedea0SLionel Sambuc 1343ebfedea0SLionel Sambucif (!$no_shared) 1344ebfedea0SLionel Sambuc { 1345ebfedea0SLionel Sambuc $cast_obj=""; # CAST assembler is not PIC 1346ebfedea0SLionel Sambuc } 1347ebfedea0SLionel Sambuc 1348ebfedea0SLionel Sambucif ($threads) 1349ebfedea0SLionel Sambuc { 1350ebfedea0SLionel Sambuc $cflags=$thread_cflags; 1351ebfedea0SLionel Sambuc $openssl_thread_defines .= $thread_defines; 1352ebfedea0SLionel Sambuc } 1353ebfedea0SLionel Sambuc 1354ebfedea0SLionel Sambucif ($zlib) 1355ebfedea0SLionel Sambuc { 1356ebfedea0SLionel Sambuc $cflags = "-DZLIB $cflags"; 1357ebfedea0SLionel Sambuc if (defined($disabled{"zlib-dynamic"})) 1358ebfedea0SLionel Sambuc { 1359ebfedea0SLionel Sambuc if (defined($withargs{"zlib-lib"})) 1360ebfedea0SLionel Sambuc { 1361ebfedea0SLionel Sambuc $lflags = "$lflags -L" . $withargs{"zlib-lib"} . " -lz"; 1362ebfedea0SLionel Sambuc } 1363ebfedea0SLionel Sambuc else 1364ebfedea0SLionel Sambuc { 1365ebfedea0SLionel Sambuc $lflags = "$lflags -lz"; 1366ebfedea0SLionel Sambuc } 1367ebfedea0SLionel Sambuc } 1368ebfedea0SLionel Sambuc else 1369ebfedea0SLionel Sambuc { 1370ebfedea0SLionel Sambuc $cflags = "-DZLIB_SHARED $cflags"; 1371ebfedea0SLionel Sambuc } 1372ebfedea0SLionel Sambuc } 1373ebfedea0SLionel Sambuc 1374ebfedea0SLionel Sambuc# You will find shlib_mark1 and shlib_mark2 explained in Makefile.org 1375ebfedea0SLionel Sambucmy $shared_mark = ""; 1376ebfedea0SLionel Sambucif ($shared_target eq "") 1377ebfedea0SLionel Sambuc { 1378ebfedea0SLionel Sambuc $no_shared_warn = 1 if !$no_shared; 1379ebfedea0SLionel Sambuc $no_shared = 1; 1380ebfedea0SLionel Sambuc } 1381ebfedea0SLionel Sambucif (!$no_shared) 1382ebfedea0SLionel Sambuc { 1383ebfedea0SLionel Sambuc if ($shared_cflag ne "") 1384ebfedea0SLionel Sambuc { 1385ebfedea0SLionel Sambuc $cflags = "$shared_cflag -DOPENSSL_PIC $cflags"; 1386ebfedea0SLionel Sambuc } 1387ebfedea0SLionel Sambuc } 1388ebfedea0SLionel Sambuc 1389ebfedea0SLionel Sambucif (!$IsMK1MF) 1390ebfedea0SLionel Sambuc { 1391ebfedea0SLionel Sambuc # add {no-}static-engine to options to allow mkdef.pl to work without extra arguments 1392ebfedea0SLionel Sambuc if ($no_shared) 1393ebfedea0SLionel Sambuc { 1394ebfedea0SLionel Sambuc $openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n"; 1395ebfedea0SLionel Sambuc $options.=" static-engine"; 1396ebfedea0SLionel Sambuc } 1397ebfedea0SLionel Sambuc else 1398ebfedea0SLionel Sambuc { 1399ebfedea0SLionel Sambuc $openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n"; 1400ebfedea0SLionel Sambuc $options.=" no-static-engine"; 1401ebfedea0SLionel Sambuc } 1402ebfedea0SLionel Sambuc } 1403ebfedea0SLionel Sambuc 1404ebfedea0SLionel Sambuc$cpuid_obj.=" uplink.o uplink-x86.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/); 1405ebfedea0SLionel Sambuc 1406ebfedea0SLionel Sambuc# 1407ebfedea0SLionel Sambuc# Platform fix-ups 1408ebfedea0SLionel Sambuc# 1409ebfedea0SLionel Sambucif ($target =~ /\-icc$/) # Intel C compiler 1410ebfedea0SLionel Sambuc { 1411ebfedea0SLionel Sambuc my $iccver=0; 1412ebfedea0SLionel Sambuc if (open(FD,"$cc -V 2>&1 |")) 1413ebfedea0SLionel Sambuc { 1414ebfedea0SLionel Sambuc while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); } 1415ebfedea0SLionel Sambuc close(FD); 1416ebfedea0SLionel Sambuc } 1417ebfedea0SLionel Sambuc if ($iccver>=8) 1418ebfedea0SLionel Sambuc { 1419ebfedea0SLionel Sambuc # Eliminate unnecessary dependency from libirc.a. This is 1420ebfedea0SLionel Sambuc # essential for shared library support, as otherwise 1421ebfedea0SLionel Sambuc # apps/openssl can end up in endless loop upon startup... 1422ebfedea0SLionel Sambuc $cflags.=" -Dmemcpy=__builtin_memcpy -Dmemset=__builtin_memset"; 1423ebfedea0SLionel Sambuc } 1424ebfedea0SLionel Sambuc if ($iccver>=9) 1425ebfedea0SLionel Sambuc { 1426ebfedea0SLionel Sambuc $cflags.=" -i-static"; 1427ebfedea0SLionel Sambuc $cflags=~s/\-no_cpprt/-no-cpprt/; 1428ebfedea0SLionel Sambuc } 1429ebfedea0SLionel Sambuc if ($iccver>=10) 1430ebfedea0SLionel Sambuc { 1431ebfedea0SLionel Sambuc $cflags=~s/\-i\-static/-static-intel/; 1432ebfedea0SLionel Sambuc } 1433ebfedea0SLionel Sambuc } 1434ebfedea0SLionel Sambuc 1435ebfedea0SLionel Sambuc# Unlike other OSes (like Solaris, Linux, Tru64, IRIX) BSD run-time 1436ebfedea0SLionel Sambuc# linkers (tested OpenBSD, NetBSD and FreeBSD) "demand" RPATH set on 1437ebfedea0SLionel Sambuc# .so objects. Apparently application RPATH is not global and does 1438ebfedea0SLionel Sambuc# not apply to .so linked with other .so. Problem manifests itself 1439ebfedea0SLionel Sambuc# when libssl.so fails to load libcrypto.so. One can argue that we 1440ebfedea0SLionel Sambuc# should engrave this into Makefile.shared rules or into BSD-* config 1441ebfedea0SLionel Sambuc# lines above. Meanwhile let's try to be cautious and pass -rpath to 1442ebfedea0SLionel Sambuc# linker only when --prefix is not /usr. 1443ebfedea0SLionel Sambucif ($target =~ /^BSD\-/) 1444ebfedea0SLionel Sambuc { 1445ebfedea0SLionel Sambuc $shared_ldflag.=" -Wl,-rpath,\$(LIBRPATH)" if ($prefix !~ m|^/usr[/]*$|); 1446ebfedea0SLionel Sambuc } 1447ebfedea0SLionel Sambuc 1448ebfedea0SLionel Sambucif ($sys_id ne "") 1449ebfedea0SLionel Sambuc { 1450ebfedea0SLionel Sambuc #$cflags="-DOPENSSL_SYSNAME_$sys_id $cflags"; 1451ebfedea0SLionel Sambuc $openssl_sys_defines="#define OPENSSL_SYSNAME_$sys_id\n"; 1452ebfedea0SLionel Sambuc } 1453ebfedea0SLionel Sambuc 1454ebfedea0SLionel Sambucif ($ranlib eq "") 1455ebfedea0SLionel Sambuc { 1456ebfedea0SLionel Sambuc $ranlib = $default_ranlib; 1457ebfedea0SLionel Sambuc } 1458ebfedea0SLionel Sambuc 1459ebfedea0SLionel Sambuc#my ($bn1)=split(/\s+/,$bn_obj); 1460ebfedea0SLionel Sambuc#$bn1 = "" unless defined $bn1; 1461ebfedea0SLionel Sambuc#$bn1=$bn_asm unless ($bn1 =~ /\.o$/); 1462ebfedea0SLionel Sambuc#$bn_obj="$bn1"; 1463ebfedea0SLionel Sambuc 1464ebfedea0SLionel Sambuc$cpuid_obj="" if ($processor eq "386"); 1465ebfedea0SLionel Sambuc 1466ebfedea0SLionel Sambuc$bn_obj = $bn_asm unless $bn_obj ne ""; 1467ebfedea0SLionel Sambuc# bn-586 is the only one implementing bn_*_part_words 1468ebfedea0SLionel Sambuc$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn-586/); 1469ebfedea0SLionel Sambuc$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /86/); 1470ebfedea0SLionel Sambuc 1471ebfedea0SLionel Sambuc$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /-mont/); 1472ebfedea0SLionel Sambuc$cflags.=" -DOPENSSL_BN_ASM_MONT5" if ($bn_obj =~ /-mont5/); 1473ebfedea0SLionel Sambuc$cflags.=" -DOPENSSL_BN_ASM_GF2m" if ($bn_obj =~ /-gf2m/); 1474ebfedea0SLionel Sambuc 1475ebfedea0SLionel Sambucif ($fips) 1476ebfedea0SLionel Sambuc { 1477ebfedea0SLionel Sambuc $openssl_other_defines.="#define OPENSSL_FIPS\n"; 1478ebfedea0SLionel Sambuc $cflags .= " -I\$(FIPSDIR)/include"; 1479ebfedea0SLionel Sambuc } 1480ebfedea0SLionel Sambuc 1481ebfedea0SLionel Sambuc$cpuid_obj="mem_clr.o" unless ($cpuid_obj =~ /\.o$/); 1482ebfedea0SLionel Sambuc$des_obj=$des_enc unless ($des_obj =~ /\.o$/); 1483ebfedea0SLionel Sambuc$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/); 1484ebfedea0SLionel Sambuc$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/); 1485ebfedea0SLionel Sambuc$rc4_obj=$rc4_enc unless ($rc4_obj =~ /\.o$/); 1486ebfedea0SLionel Sambuc$rc5_obj=$rc5_enc unless ($rc5_obj =~ /\.o$/); 1487ebfedea0SLionel Sambucif ($sha1_obj =~ /\.o$/) 1488ebfedea0SLionel Sambuc { 1489ebfedea0SLionel Sambuc# $sha1_obj=$sha1_enc; 1490ebfedea0SLionel Sambuc $cflags.=" -DSHA1_ASM" if ($sha1_obj =~ /sx86/ || $sha1_obj =~ /sha1/); 1491ebfedea0SLionel Sambuc $cflags.=" -DSHA256_ASM" if ($sha1_obj =~ /sha256/); 1492ebfedea0SLionel Sambuc $cflags.=" -DSHA512_ASM" if ($sha1_obj =~ /sha512/); 1493ebfedea0SLionel Sambuc if ($sha1_obj =~ /sse2/) 1494ebfedea0SLionel Sambuc { if ($no_sse2) 1495ebfedea0SLionel Sambuc { $sha1_obj =~ s/\S*sse2\S+//; } 1496ebfedea0SLionel Sambuc elsif ($cflags !~ /OPENSSL_IA32_SSE2/) 1497ebfedea0SLionel Sambuc { $cflags.=" -DOPENSSL_IA32_SSE2"; } 1498ebfedea0SLionel Sambuc } 1499ebfedea0SLionel Sambuc } 1500ebfedea0SLionel Sambucif ($md5_obj =~ /\.o$/) 1501ebfedea0SLionel Sambuc { 1502ebfedea0SLionel Sambuc# $md5_obj=$md5_enc; 1503ebfedea0SLionel Sambuc $cflags.=" -DMD5_ASM"; 1504ebfedea0SLionel Sambuc } 1505ebfedea0SLionel Sambucif ($rmd160_obj =~ /\.o$/) 1506ebfedea0SLionel Sambuc { 1507ebfedea0SLionel Sambuc# $rmd160_obj=$rmd160_enc; 1508ebfedea0SLionel Sambuc $cflags.=" -DRMD160_ASM"; 1509ebfedea0SLionel Sambuc } 1510ebfedea0SLionel Sambucif ($aes_obj =~ /\.o$/) 1511ebfedea0SLionel Sambuc { 1512ebfedea0SLionel Sambuc $cflags.=" -DAES_ASM"; 1513ebfedea0SLionel Sambuc # aes-ctr.o is not a real file, only indication that assembler 1514ebfedea0SLionel Sambuc # module implements AES_ctr32_encrypt... 1515ebfedea0SLionel Sambuc $cflags.=" -DAES_CTR_ASM" if ($aes_obj =~ s/\s*aes\-ctr\.o//); 1516ebfedea0SLionel Sambuc # aes-xts.o indicates presense of AES_xts_[en|de]crypt... 1517ebfedea0SLionel Sambuc $cflags.=" -DAES_XTS_ASM" if ($aes_obj =~ s/\s*aes\-xts\.o//); 1518ebfedea0SLionel Sambuc $aes_obj =~ s/\s*(vpaes|aesni)\-x86\.o//g if ($no_sse2); 1519ebfedea0SLionel Sambuc $cflags.=" -DVPAES_ASM" if ($aes_obj =~ m/vpaes/); 1520ebfedea0SLionel Sambuc $cflags.=" -DBSAES_ASM" if ($aes_obj =~ m/bsaes/); 1521ebfedea0SLionel Sambuc } 1522ebfedea0SLionel Sambucelse { 1523ebfedea0SLionel Sambuc $aes_obj=$aes_enc; 1524ebfedea0SLionel Sambuc } 1525ebfedea0SLionel Sambuc$wp_obj="" if ($wp_obj =~ /mmx/ && $processor eq "386"); 1526ebfedea0SLionel Sambucif ($wp_obj =~ /\.o$/ && !$disabled{"whirlpool"}) 1527ebfedea0SLionel Sambuc { 1528ebfedea0SLionel Sambuc $cflags.=" -DWHIRLPOOL_ASM"; 1529ebfedea0SLionel Sambuc } 1530ebfedea0SLionel Sambucelse { 1531ebfedea0SLionel Sambuc $wp_obj="wp_block.o"; 1532ebfedea0SLionel Sambuc } 1533ebfedea0SLionel Sambuc$cmll_obj=$cmll_enc unless ($cmll_obj =~ /.o$/); 1534ebfedea0SLionel Sambucif ($modes_obj =~ /ghash/) 1535ebfedea0SLionel Sambuc { 1536ebfedea0SLionel Sambuc $cflags.=" -DGHASH_ASM"; 1537ebfedea0SLionel Sambuc } 1538ebfedea0SLionel Sambuc 1539ebfedea0SLionel Sambuc# "Stringify" the C flags string. This permits it to be made part of a string 1540ebfedea0SLionel Sambuc# and works as well on command lines. 1541ebfedea0SLionel Sambuc$cflags =~ s/([\\\"])/\\\1/g; 1542ebfedea0SLionel Sambuc 1543ebfedea0SLionel Sambucmy $version = "unknown"; 1544ebfedea0SLionel Sambucmy $version_num = "unknown"; 1545ebfedea0SLionel Sambucmy $major = "unknown"; 1546ebfedea0SLionel Sambucmy $minor = "unknown"; 1547ebfedea0SLionel Sambucmy $shlib_version_number = "unknown"; 1548ebfedea0SLionel Sambucmy $shlib_version_history = "unknown"; 1549ebfedea0SLionel Sambucmy $shlib_major = "unknown"; 1550ebfedea0SLionel Sambucmy $shlib_minor = "unknown"; 1551ebfedea0SLionel Sambuc 1552ebfedea0SLionel Sambucopen(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n"; 1553ebfedea0SLionel Sambucwhile (<IN>) 1554ebfedea0SLionel Sambuc { 1555ebfedea0SLionel Sambuc $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /; 1556ebfedea0SLionel Sambuc $version_num=$1 if /OPENSSL.VERSION.NUMBER.*0x(\S+)/; 1557ebfedea0SLionel Sambuc $shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/; 1558ebfedea0SLionel Sambuc $shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/; 1559ebfedea0SLionel Sambuc } 1560ebfedea0SLionel Sambucclose(IN); 1561ebfedea0SLionel Sambucif ($shlib_version_history ne "") { $shlib_version_history .= ":"; } 1562ebfedea0SLionel Sambuc 1563ebfedea0SLionel Sambucif ($version =~ /(^[0-9]*)\.([0-9\.]*)/) 1564ebfedea0SLionel Sambuc { 1565ebfedea0SLionel Sambuc $major=$1; 1566ebfedea0SLionel Sambuc $minor=$2; 1567ebfedea0SLionel Sambuc } 1568ebfedea0SLionel Sambuc 1569ebfedea0SLionel Sambucif ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/) 1570ebfedea0SLionel Sambuc { 1571ebfedea0SLionel Sambuc $shlib_major=$1; 1572ebfedea0SLionel Sambuc $shlib_minor=$2; 1573ebfedea0SLionel Sambuc } 1574ebfedea0SLionel Sambuc 1575ebfedea0SLionel Sambucif ($strict_warnings) 1576ebfedea0SLionel Sambuc { 1577ebfedea0SLionel Sambuc my $wopt; 1578ebfedea0SLionel Sambuc die "ERROR --strict-warnings requires gcc" unless ($cc =~ /gcc$/); 1579ebfedea0SLionel Sambuc foreach $wopt (split /\s+/, $gcc_devteam_warn) 1580ebfedea0SLionel Sambuc { 1581ebfedea0SLionel Sambuc $cflags .= " $wopt" unless ($cflags =~ /$wopt/) 1582ebfedea0SLionel Sambuc } 1583ebfedea0SLionel Sambuc } 1584ebfedea0SLionel Sambuc 1585ebfedea0SLionel Sambucopen(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n"; 1586ebfedea0SLionel Sambucunlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new"; 1587ebfedea0SLionel Sambucopen(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n"; 1588ebfedea0SLionel Sambucprint OUT "### Generated automatically from Makefile.org by Configure.\n\n"; 1589ebfedea0SLionel Sambucmy $sdirs=0; 1590ebfedea0SLionel Sambucwhile (<IN>) 1591ebfedea0SLionel Sambuc { 1592ebfedea0SLionel Sambuc chomp; 1593ebfedea0SLionel Sambuc $sdirs = 1 if /^SDIRS=/; 1594ebfedea0SLionel Sambuc if ($sdirs) { 1595ebfedea0SLionel Sambuc my $dir; 1596ebfedea0SLionel Sambuc foreach $dir (@skip) { 1597ebfedea0SLionel Sambuc s/(\s)$dir /$1/; 1598ebfedea0SLionel Sambuc s/\s$dir$//; 1599ebfedea0SLionel Sambuc } 1600ebfedea0SLionel Sambuc } 1601ebfedea0SLionel Sambuc $sdirs = 0 unless /\\$/; 1602ebfedea0SLionel Sambuc s/engines // if (/^DIRS=/ && $disabled{"engine"}); 1603ebfedea0SLionel Sambuc s/ccgost// if (/^ENGDIRS=/ && $disabled{"gost"}); 1604ebfedea0SLionel Sambuc s/^VERSION=.*/VERSION=$version/; 1605ebfedea0SLionel Sambuc s/^MAJOR=.*/MAJOR=$major/; 1606ebfedea0SLionel Sambuc s/^MINOR=.*/MINOR=$minor/; 1607ebfedea0SLionel Sambuc s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=$shlib_version_number/; 1608ebfedea0SLionel Sambuc s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/; 1609ebfedea0SLionel Sambuc s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/; 1610ebfedea0SLionel Sambuc s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/; 1611ebfedea0SLionel Sambuc s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/; 1612ebfedea0SLionel Sambuc s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/; 1613ebfedea0SLionel Sambuc s/^MULTILIB=.*$/MULTILIB=$multilib/; 1614ebfedea0SLionel Sambuc s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/; 1615ebfedea0SLionel Sambuc s/^LIBDIR=.*$/LIBDIR=$libdir/; 1616ebfedea0SLionel Sambuc s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/; 1617ebfedea0SLionel Sambuc s/^PLATFORM=.*$/PLATFORM=$target/; 1618ebfedea0SLionel Sambuc s/^OPTIONS=.*$/OPTIONS=$options/; 1619ebfedea0SLionel Sambuc s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/; 1620ebfedea0SLionel Sambuc if ($cross_compile_prefix) 1621ebfedea0SLionel Sambuc { 1622ebfedea0SLionel Sambuc s/^CC=.*$/CROSS_COMPILE= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE\)$cc/; 1623ebfedea0SLionel Sambuc s/^AR=\s*/AR= \$\(CROSS_COMPILE\)/; 1624ebfedea0SLionel Sambuc s/^NM=\s*/NM= \$\(CROSS_COMPILE\)/; 1625ebfedea0SLionel Sambuc s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE\)/; 1626ebfedea0SLionel Sambuc s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE\)$cc/ if $cc eq "gcc"; 1627ebfedea0SLionel Sambuc } 1628ebfedea0SLionel Sambuc else { 1629ebfedea0SLionel Sambuc s/^CC=.*$/CC= $cc/; 1630ebfedea0SLionel Sambuc s/^AR=\s*ar/AR= $ar/; 1631ebfedea0SLionel Sambuc s/^RANLIB=.*/RANLIB= $ranlib/; 1632ebfedea0SLionel Sambuc s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc"; 1633ebfedea0SLionel Sambuc } 1634ebfedea0SLionel Sambuc s/^CFLAG=.*$/CFLAG= $cflags/; 1635ebfedea0SLionel Sambuc s/^DEPFLAG=.*$/DEPFLAG=$depflags/; 1636ebfedea0SLionel Sambuc s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/; 1637ebfedea0SLionel Sambuc s/^EX_LIBS=.*$/EX_LIBS= $lflags/; 1638ebfedea0SLionel Sambuc s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/; 1639ebfedea0SLionel Sambuc s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/; 1640ebfedea0SLionel Sambuc s/^BN_ASM=.*$/BN_ASM= $bn_obj/; 1641ebfedea0SLionel Sambuc s/^DES_ENC=.*$/DES_ENC= $des_obj/; 1642ebfedea0SLionel Sambuc s/^AES_ENC=.*$/AES_ENC= $aes_obj/; 1643ebfedea0SLionel Sambuc s/^BF_ENC=.*$/BF_ENC= $bf_obj/; 1644ebfedea0SLionel Sambuc s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/; 1645ebfedea0SLionel Sambuc s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/; 1646ebfedea0SLionel Sambuc s/^RC5_ENC=.*$/RC5_ENC= $rc5_obj/; 1647ebfedea0SLionel Sambuc s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/; 1648ebfedea0SLionel Sambuc s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/; 1649ebfedea0SLionel Sambuc s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/; 1650ebfedea0SLionel Sambuc s/^WP_ASM_OBJ=.*$/WP_ASM_OBJ= $wp_obj/; 1651ebfedea0SLionel Sambuc s/^CMLL_ENC=.*$/CMLL_ENC= $cmll_obj/; 1652ebfedea0SLionel Sambuc s/^MODES_ASM_OBJ.=*$/MODES_ASM_OBJ= $modes_obj/; 1653ebfedea0SLionel Sambuc s/^ENGINES_ASM_OBJ.=*$/ENGINES_ASM_OBJ= $engines_obj/; 1654ebfedea0SLionel Sambuc s/^PERLASM_SCHEME=.*$/PERLASM_SCHEME= $perlasm_scheme/; 1655ebfedea0SLionel Sambuc s/^PROCESSOR=.*/PROCESSOR= $processor/; 1656ebfedea0SLionel Sambuc s/^ARFLAGS=.*/ARFLAGS= $arflags/; 1657ebfedea0SLionel Sambuc s/^PERL=.*/PERL= $perl/; 1658ebfedea0SLionel Sambuc s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/; 1659ebfedea0SLionel Sambuc s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/; 1660ebfedea0SLionel Sambuc s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/; 1661ebfedea0SLionel Sambuc s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/; 1662ebfedea0SLionel Sambuc 1663ebfedea0SLionel Sambuc s/^FIPSDIR=.*/FIPSDIR=$fipsdir/; 1664ebfedea0SLionel Sambuc s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/; 1665ebfedea0SLionel Sambuc s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips; 1666ebfedea0SLionel Sambuc s/^BASEADDR=.*/BASEADDR=$baseaddr/; 1667ebfedea0SLionel Sambuc 1668ebfedea0SLionel Sambuc s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/; 1669ebfedea0SLionel Sambuc s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/; 1670ebfedea0SLionel Sambuc s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared); 1671ebfedea0SLionel Sambuc if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/) 1672ebfedea0SLionel Sambuc { 1673ebfedea0SLionel Sambuc my $sotmp = $1; 1674ebfedea0SLionel Sambuc s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/; 1675ebfedea0SLionel Sambuc } 1676ebfedea0SLionel Sambuc elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.dylib$/) 1677ebfedea0SLionel Sambuc { 1678ebfedea0SLionel Sambuc s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.dylib/; 1679ebfedea0SLionel Sambuc } 1680ebfedea0SLionel Sambuc elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/) 1681ebfedea0SLionel Sambuc { 1682ebfedea0SLionel Sambuc my $sotmp = $1; 1683ebfedea0SLionel Sambuc s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/; 1684ebfedea0SLionel Sambuc } 1685ebfedea0SLionel Sambuc elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/) 1686ebfedea0SLionel Sambuc { 1687ebfedea0SLionel Sambuc s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/; 1688ebfedea0SLionel Sambuc } 1689ebfedea0SLionel Sambuc s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/; 1690ebfedea0SLionel Sambuc print OUT $_."\n"; 1691ebfedea0SLionel Sambuc } 1692ebfedea0SLionel Sambucclose(IN); 1693ebfedea0SLionel Sambucclose(OUT); 1694ebfedea0SLionel Sambucrename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e $Makefile; 1695ebfedea0SLionel Sambucrename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n"; 1696ebfedea0SLionel Sambuc 1697ebfedea0SLionel Sambucprint "CC =$cc\n"; 1698ebfedea0SLionel Sambucprint "CFLAG =$cflags\n"; 1699ebfedea0SLionel Sambucprint "EX_LIBS =$lflags\n"; 1700ebfedea0SLionel Sambucprint "CPUID_OBJ =$cpuid_obj\n"; 1701ebfedea0SLionel Sambucprint "BN_ASM =$bn_obj\n"; 1702ebfedea0SLionel Sambucprint "DES_ENC =$des_obj\n"; 1703ebfedea0SLionel Sambucprint "AES_ENC =$aes_obj\n"; 1704ebfedea0SLionel Sambucprint "BF_ENC =$bf_obj\n"; 1705ebfedea0SLionel Sambucprint "CAST_ENC =$cast_obj\n"; 1706ebfedea0SLionel Sambucprint "RC4_ENC =$rc4_obj\n"; 1707ebfedea0SLionel Sambucprint "RC5_ENC =$rc5_obj\n"; 1708ebfedea0SLionel Sambucprint "MD5_OBJ_ASM =$md5_obj\n"; 1709ebfedea0SLionel Sambucprint "SHA1_OBJ_ASM =$sha1_obj\n"; 1710ebfedea0SLionel Sambucprint "RMD160_OBJ_ASM=$rmd160_obj\n"; 1711ebfedea0SLionel Sambucprint "CMLL_ENC =$cmll_obj\n"; 1712ebfedea0SLionel Sambucprint "MODES_OBJ =$modes_obj\n"; 1713ebfedea0SLionel Sambucprint "ENGINES_OBJ =$engines_obj\n"; 1714ebfedea0SLionel Sambucprint "PROCESSOR =$processor\n"; 1715ebfedea0SLionel Sambucprint "RANLIB =$ranlib\n"; 1716ebfedea0SLionel Sambucprint "ARFLAGS =$arflags\n"; 1717ebfedea0SLionel Sambucprint "PERL =$perl\n"; 1718ebfedea0SLionel Sambucprint "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n" 1719ebfedea0SLionel Sambuc if $withargs{"krb5-include"} ne ""; 1720ebfedea0SLionel Sambuc 1721ebfedea0SLionel Sambucmy $des_ptr=0; 1722ebfedea0SLionel Sambucmy $des_risc1=0; 1723ebfedea0SLionel Sambucmy $des_risc2=0; 1724ebfedea0SLionel Sambucmy $des_unroll=0; 1725ebfedea0SLionel Sambucmy $bn_ll=0; 1726ebfedea0SLionel Sambucmy $def_int=2; 1727ebfedea0SLionel Sambucmy $rc4_int=$def_int; 1728ebfedea0SLionel Sambucmy $md2_int=$def_int; 1729ebfedea0SLionel Sambucmy $idea_int=$def_int; 1730ebfedea0SLionel Sambucmy $rc2_int=$def_int; 1731ebfedea0SLionel Sambucmy $rc4_idx=0; 1732ebfedea0SLionel Sambucmy $rc4_chunk=0; 1733ebfedea0SLionel Sambucmy $bf_ptr=0; 1734ebfedea0SLionel Sambucmy @type=("char","short","int","long"); 1735ebfedea0SLionel Sambucmy ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0); 1736ebfedea0SLionel Sambucmy $export_var_as_fn=0; 1737ebfedea0SLionel Sambuc 1738ebfedea0SLionel Sambucmy $des_int; 1739ebfedea0SLionel Sambuc 1740ebfedea0SLionel Sambucforeach (sort split(/\s+/,$bn_ops)) 1741ebfedea0SLionel Sambuc { 1742ebfedea0SLionel Sambuc $des_ptr=1 if /DES_PTR/; 1743ebfedea0SLionel Sambuc $des_risc1=1 if /DES_RISC1/; 1744ebfedea0SLionel Sambuc $des_risc2=1 if /DES_RISC2/; 1745ebfedea0SLionel Sambuc $des_unroll=1 if /DES_UNROLL/; 1746ebfedea0SLionel Sambuc $des_int=1 if /DES_INT/; 1747ebfedea0SLionel Sambuc $bn_ll=1 if /BN_LLONG/; 1748ebfedea0SLionel Sambuc $rc4_int=0 if /RC4_CHAR/; 1749ebfedea0SLionel Sambuc $rc4_int=3 if /RC4_LONG/; 1750ebfedea0SLionel Sambuc $rc4_idx=1 if /RC4_INDEX/; 1751ebfedea0SLionel Sambuc $rc4_chunk=1 if /RC4_CHUNK/; 1752ebfedea0SLionel Sambuc $rc4_chunk=2 if /RC4_CHUNK_LL/; 1753ebfedea0SLionel Sambuc $md2_int=0 if /MD2_CHAR/; 1754ebfedea0SLionel Sambuc $md2_int=3 if /MD2_LONG/; 1755ebfedea0SLionel Sambuc $idea_int=1 if /IDEA_SHORT/; 1756ebfedea0SLionel Sambuc $idea_int=3 if /IDEA_LONG/; 1757ebfedea0SLionel Sambuc $rc2_int=1 if /RC2_SHORT/; 1758ebfedea0SLionel Sambuc $rc2_int=3 if /RC2_LONG/; 1759ebfedea0SLionel Sambuc $bf_ptr=1 if $_ eq "BF_PTR"; 1760ebfedea0SLionel Sambuc $bf_ptr=2 if $_ eq "BF_PTR2"; 1761ebfedea0SLionel Sambuc ($b64l,$b64,$b32,$b16,$b8)=(0,1,0,0,0) if /SIXTY_FOUR_BIT/; 1762ebfedea0SLionel Sambuc ($b64l,$b64,$b32,$b16,$b8)=(1,0,0,0,0) if /SIXTY_FOUR_BIT_LONG/; 1763ebfedea0SLionel Sambuc ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0) if /THIRTY_TWO_BIT/; 1764ebfedea0SLionel Sambuc ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,1,0) if /SIXTEEN_BIT/; 1765ebfedea0SLionel Sambuc ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/; 1766ebfedea0SLionel Sambuc $export_var_as_fn=1 if /EXPORT_VAR_AS_FN/; 1767ebfedea0SLionel Sambuc } 1768ebfedea0SLionel Sambuc 1769ebfedea0SLionel Sambucopen(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n"; 1770ebfedea0SLionel Sambucunlink("crypto/opensslconf.h.new") || die "unable to remove old crypto/opensslconf.h.new:$!\n" if -e "crypto/opensslconf.h.new"; 1771ebfedea0SLionel Sambucopen(OUT,'>crypto/opensslconf.h.new') || die "unable to create crypto/opensslconf.h.new:$!\n"; 1772ebfedea0SLionel Sambucprint OUT "/* opensslconf.h */\n"; 1773ebfedea0SLionel Sambucprint OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n"; 1774ebfedea0SLionel Sambuc 1775*0a6a1f1dSLionel Sambucprint OUT "#ifdef __cplusplus\n"; 1776*0a6a1f1dSLionel Sambucprint OUT "extern \"C\" {\n"; 1777*0a6a1f1dSLionel Sambucprint OUT "#endif\n"; 1778ebfedea0SLionel Sambucprint OUT "/* OpenSSL was configured with the following options: */\n"; 1779ebfedea0SLionel Sambucmy $openssl_algorithm_defines_trans = $openssl_algorithm_defines; 1780ebfedea0SLionel Sambuc$openssl_experimental_defines =~ s/^\s*#\s*define\s+OPENSSL_NO_(.*)/#ifndef OPENSSL_EXPERIMENTAL_$1\n# ifndef OPENSSL_NO_$1\n# define OPENSSL_NO_$1\n# endif\n#endif/mg; 1781ebfedea0SLionel Sambuc$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n# define $1\n# endif/mg; 1782ebfedea0SLionel Sambuc$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 1783ebfedea0SLionel Sambuc$openssl_algorithm_defines = " /* no ciphers excluded */\n" if $openssl_algorithm_defines eq ""; 1784ebfedea0SLionel Sambuc$openssl_thread_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 1785ebfedea0SLionel Sambuc$openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 1786ebfedea0SLionel Sambuc$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg; 1787ebfedea0SLionel Sambucprint OUT $openssl_sys_defines; 1788ebfedea0SLionel Sambucprint OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n"; 1789ebfedea0SLionel Sambucprint OUT $openssl_experimental_defines; 1790ebfedea0SLionel Sambucprint OUT "\n"; 1791ebfedea0SLionel Sambucprint OUT $openssl_algorithm_defines; 1792ebfedea0SLionel Sambucprint OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n\n"; 1793ebfedea0SLionel Sambucprint OUT $openssl_thread_defines; 1794ebfedea0SLionel Sambucprint OUT $openssl_other_defines,"\n"; 1795ebfedea0SLionel Sambuc 1796ebfedea0SLionel Sambucprint OUT "/* The OPENSSL_NO_* macros are also defined as NO_* if the application\n"; 1797ebfedea0SLionel Sambucprint OUT " asks for it. This is a transient feature that is provided for those\n"; 1798ebfedea0SLionel Sambucprint OUT " who haven't had the time to do the appropriate changes in their\n"; 1799ebfedea0SLionel Sambucprint OUT " applications. */\n"; 1800ebfedea0SLionel Sambucprint OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n"; 1801ebfedea0SLionel Sambucprint OUT $openssl_algorithm_defines_trans; 1802ebfedea0SLionel Sambucprint OUT "#endif\n\n"; 1803ebfedea0SLionel Sambuc 1804ebfedea0SLionel Sambucprint OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj ne "mem_clr.o"); 1805ebfedea0SLionel Sambuc 1806ebfedea0SLionel Sambucwhile (<IN>) 1807ebfedea0SLionel Sambuc { 1808ebfedea0SLionel Sambuc if (/^#define\s+OPENSSLDIR/) 1809ebfedea0SLionel Sambuc { 1810ebfedea0SLionel Sambuc my $foo = $openssldir; 1811ebfedea0SLionel Sambuc $foo =~ s/\\/\\\\/g; 1812ebfedea0SLionel Sambuc print OUT "#define OPENSSLDIR \"$foo\"\n"; 1813ebfedea0SLionel Sambuc } 1814ebfedea0SLionel Sambuc elsif (/^#define\s+ENGINESDIR/) 1815ebfedea0SLionel Sambuc { 1816ebfedea0SLionel Sambuc my $foo = "$prefix/$libdir/engines"; 1817ebfedea0SLionel Sambuc $foo =~ s/\\/\\\\/g; 1818ebfedea0SLionel Sambuc print OUT "#define ENGINESDIR \"$foo\"\n"; 1819ebfedea0SLionel Sambuc } 1820ebfedea0SLionel Sambuc elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/) 1821ebfedea0SLionel Sambuc { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n" 1822ebfedea0SLionel Sambuc if $export_var_as_fn; 1823ebfedea0SLionel Sambuc printf OUT "#%s OPENSSL_EXPORT_VAR_AS_FUNCTION\n", 1824ebfedea0SLionel Sambuc ($export_var_as_fn)?"define":"undef"; } 1825ebfedea0SLionel Sambuc elsif (/^#define\s+OPENSSL_UNISTD/) 1826ebfedea0SLionel Sambuc { 1827ebfedea0SLionel Sambuc $unistd = "<unistd.h>" if $unistd eq ""; 1828ebfedea0SLionel Sambuc print OUT "#define OPENSSL_UNISTD $unistd\n"; 1829ebfedea0SLionel Sambuc } 1830ebfedea0SLionel Sambuc elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/) 1831ebfedea0SLionel Sambuc { printf OUT "#%s SIXTY_FOUR_BIT_LONG\n",($b64l)?"define":"undef"; } 1832ebfedea0SLionel Sambuc elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT/) 1833ebfedea0SLionel Sambuc { printf OUT "#%s SIXTY_FOUR_BIT\n",($b64)?"define":"undef"; } 1834ebfedea0SLionel Sambuc elsif (/^#((define)|(undef))\s+THIRTY_TWO_BIT/) 1835ebfedea0SLionel Sambuc { printf OUT "#%s THIRTY_TWO_BIT\n",($b32)?"define":"undef"; } 1836ebfedea0SLionel Sambuc elsif (/^#((define)|(undef))\s+SIXTEEN_BIT/) 1837ebfedea0SLionel Sambuc { printf OUT "#%s SIXTEEN_BIT\n",($b16)?"define":"undef"; } 1838ebfedea0SLionel Sambuc elsif (/^#((define)|(undef))\s+EIGHT_BIT/) 1839ebfedea0SLionel Sambuc { printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; } 1840ebfedea0SLionel Sambuc elsif (/^#((define)|(undef))\s+BN_LLONG\s*$/) 1841ebfedea0SLionel Sambuc { printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; } 1842ebfedea0SLionel Sambuc elsif (/^\#define\s+DES_LONG\s+.*/) 1843ebfedea0SLionel Sambuc { printf OUT "#define DES_LONG unsigned %s\n", 1844ebfedea0SLionel Sambuc ($des_int)?'int':'long'; } 1845ebfedea0SLionel Sambuc elsif (/^\#(define|undef)\s+DES_PTR/) 1846ebfedea0SLionel Sambuc { printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; } 1847ebfedea0SLionel Sambuc elsif (/^\#(define|undef)\s+DES_RISC1/) 1848ebfedea0SLionel Sambuc { printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; } 1849ebfedea0SLionel Sambuc elsif (/^\#(define|undef)\s+DES_RISC2/) 1850ebfedea0SLionel Sambuc { printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; } 1851ebfedea0SLionel Sambuc elsif (/^\#(define|undef)\s+DES_UNROLL/) 1852ebfedea0SLionel Sambuc { printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; } 1853ebfedea0SLionel Sambuc elsif (/^#define\s+RC4_INT\s/) 1854ebfedea0SLionel Sambuc { printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; } 1855ebfedea0SLionel Sambuc elsif (/^#undef\s+RC4_CHUNK/) 1856ebfedea0SLionel Sambuc { 1857ebfedea0SLionel Sambuc printf OUT "#undef RC4_CHUNK\n" if $rc4_chunk==0; 1858ebfedea0SLionel Sambuc printf OUT "#define RC4_CHUNK unsigned long\n" if $rc4_chunk==1; 1859ebfedea0SLionel Sambuc printf OUT "#define RC4_CHUNK unsigned long long\n" if $rc4_chunk==2; 1860ebfedea0SLionel Sambuc } 1861ebfedea0SLionel Sambuc elsif (/^#((define)|(undef))\s+RC4_INDEX/) 1862ebfedea0SLionel Sambuc { printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; } 1863ebfedea0SLionel Sambuc elsif (/^#(define|undef)\s+I386_ONLY/) 1864ebfedea0SLionel Sambuc { printf OUT "#%s I386_ONLY\n", ($processor eq "386")? 1865ebfedea0SLionel Sambuc "define":"undef"; } 1866ebfedea0SLionel Sambuc elsif (/^#define\s+MD2_INT\s/) 1867ebfedea0SLionel Sambuc { printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; } 1868ebfedea0SLionel Sambuc elsif (/^#define\s+IDEA_INT\s/) 1869ebfedea0SLionel Sambuc {printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];} 1870ebfedea0SLionel Sambuc elsif (/^#define\s+RC2_INT\s/) 1871ebfedea0SLionel Sambuc {printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];} 1872ebfedea0SLionel Sambuc elsif (/^#(define|undef)\s+BF_PTR/) 1873ebfedea0SLionel Sambuc { 1874ebfedea0SLionel Sambuc printf OUT "#undef BF_PTR\n" if $bf_ptr == 0; 1875ebfedea0SLionel Sambuc printf OUT "#define BF_PTR\n" if $bf_ptr == 1; 1876ebfedea0SLionel Sambuc printf OUT "#define BF_PTR2\n" if $bf_ptr == 2; 1877ebfedea0SLionel Sambuc } 1878ebfedea0SLionel Sambuc else 1879ebfedea0SLionel Sambuc { print OUT $_; } 1880ebfedea0SLionel Sambuc } 1881ebfedea0SLionel Sambucclose(IN); 1882*0a6a1f1dSLionel Sambucprint OUT "#ifdef __cplusplus\n"; 1883*0a6a1f1dSLionel Sambucprint OUT "}\n"; 1884*0a6a1f1dSLionel Sambucprint OUT "#endif\n"; 1885ebfedea0SLionel Sambucclose(OUT); 1886ebfedea0SLionel Sambucrename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h"; 1887ebfedea0SLionel Sambucrename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to rename crypto/opensslconf.h.new\n"; 1888ebfedea0SLionel Sambuc 1889ebfedea0SLionel Sambuc 1890ebfedea0SLionel Sambuc# Fix the date 1891ebfedea0SLionel Sambuc 1892ebfedea0SLionel Sambucprint "SIXTY_FOUR_BIT_LONG mode\n" if $b64l; 1893ebfedea0SLionel Sambucprint "SIXTY_FOUR_BIT mode\n" if $b64; 1894ebfedea0SLionel Sambucprint "THIRTY_TWO_BIT mode\n" if $b32; 1895ebfedea0SLionel Sambucprint "SIXTEEN_BIT mode\n" if $b16; 1896ebfedea0SLionel Sambucprint "EIGHT_BIT mode\n" if $b8; 1897ebfedea0SLionel Sambucprint "DES_PTR used\n" if $des_ptr; 1898ebfedea0SLionel Sambucprint "DES_RISC1 used\n" if $des_risc1; 1899ebfedea0SLionel Sambucprint "DES_RISC2 used\n" if $des_risc2; 1900ebfedea0SLionel Sambucprint "DES_UNROLL used\n" if $des_unroll; 1901ebfedea0SLionel Sambucprint "DES_INT used\n" if $des_int; 1902ebfedea0SLionel Sambucprint "BN_LLONG mode\n" if $bn_ll; 1903ebfedea0SLionel Sambucprint "RC4 uses u$type[$rc4_int]\n" if $rc4_int != $def_int; 1904ebfedea0SLionel Sambucprint "RC4_INDEX mode\n" if $rc4_idx; 1905ebfedea0SLionel Sambucprint "RC4_CHUNK is undefined\n" if $rc4_chunk==0; 1906ebfedea0SLionel Sambucprint "RC4_CHUNK is unsigned long\n" if $rc4_chunk==1; 1907ebfedea0SLionel Sambucprint "RC4_CHUNK is unsigned long long\n" if $rc4_chunk==2; 1908ebfedea0SLionel Sambucprint "MD2 uses u$type[$md2_int]\n" if $md2_int != $def_int; 1909ebfedea0SLionel Sambucprint "IDEA uses u$type[$idea_int]\n" if $idea_int != $def_int; 1910ebfedea0SLionel Sambucprint "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int; 1911ebfedea0SLionel Sambucprint "BF_PTR used\n" if $bf_ptr == 1; 1912ebfedea0SLionel Sambucprint "BF_PTR2 used\n" if $bf_ptr == 2; 1913ebfedea0SLionel Sambuc 1914ebfedea0SLionel Sambucif($IsMK1MF) { 1915ebfedea0SLionel Sambuc open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h"; 1916ebfedea0SLionel Sambuc printf OUT <<EOF; 1917ebfedea0SLionel Sambuc#ifndef MK1MF_BUILD 1918ebfedea0SLionel Sambuc /* auto-generated by Configure for crypto/cversion.c: 1919ebfedea0SLionel Sambuc * for Unix builds, crypto/Makefile.ssl generates functional definitions; 1920ebfedea0SLionel Sambuc * Windows builds (and other mk1mf builds) compile cversion.c with 1921ebfedea0SLionel Sambuc * -DMK1MF_BUILD and use definitions added to this file by util/mk1mf.pl. */ 1922ebfedea0SLionel Sambuc #error "Windows builds (PLATFORM=$target) use mk1mf.pl-created Makefiles" 1923ebfedea0SLionel Sambuc#endif 1924ebfedea0SLionel SambucEOF 1925ebfedea0SLionel Sambuc close(OUT); 1926ebfedea0SLionel Sambuc} else { 1927ebfedea0SLionel Sambuc my $make_command = "$make PERL=\'$perl\'"; 1928ebfedea0SLionel Sambuc my $make_targets = ""; 1929ebfedea0SLionel Sambuc $make_targets .= " links" if $symlink; 1930ebfedea0SLionel Sambuc $make_targets .= " depend" if $depflags ne $default_depflags && $make_depend; 1931ebfedea0SLionel Sambuc $make_targets .= " gentests" if $symlink; 1932ebfedea0SLionel Sambuc (system $make_command.$make_targets) == 0 or exit $? 1933ebfedea0SLionel Sambuc if $make_targets ne ""; 1934ebfedea0SLionel Sambuc if ( $perl =~ m@^/@) { 1935ebfedea0SLionel Sambuc &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";'); 1936ebfedea0SLionel Sambuc &dofile("apps/CA.pl",$perl,'^#!/', '#!%s'); 1937ebfedea0SLionel Sambuc } else { 1938ebfedea0SLionel Sambuc # No path for Perl known ... 1939ebfedea0SLionel Sambuc &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";'); 1940ebfedea0SLionel Sambuc &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s'); 1941ebfedea0SLionel Sambuc } 1942ebfedea0SLionel Sambuc if ($depflags ne $default_depflags && !$make_depend) { 1943ebfedea0SLionel Sambuc print <<EOF; 1944ebfedea0SLionel Sambuc 1945ebfedea0SLionel SambucSince you've disabled or enabled at least one algorithm, you need to do 1946ebfedea0SLionel Sambucthe following before building: 1947ebfedea0SLionel Sambuc 1948ebfedea0SLionel Sambuc make depend 1949ebfedea0SLionel SambucEOF 1950ebfedea0SLionel Sambuc } 1951ebfedea0SLionel Sambuc} 1952ebfedea0SLionel Sambuc 1953ebfedea0SLionel Sambuc# create the ms/version32.rc file if needed 1954ebfedea0SLionel Sambucif ($IsMK1MF && ($target !~ /^netware/)) { 1955ebfedea0SLionel Sambuc my ($v1, $v2, $v3, $v4); 1956ebfedea0SLionel Sambuc if ($version_num =~ /(^[0-9a-f]{1})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i) { 1957ebfedea0SLionel Sambuc $v1=hex $1; 1958ebfedea0SLionel Sambuc $v2=hex $2; 1959ebfedea0SLionel Sambuc $v3=hex $3; 1960ebfedea0SLionel Sambuc $v4=hex $4; 1961ebfedea0SLionel Sambuc } 1962ebfedea0SLionel Sambuc open (OUT,">ms/version32.rc") || die "Can't open ms/version32.rc"; 1963ebfedea0SLionel Sambuc print OUT <<EOF; 1964ebfedea0SLionel Sambuc#include <winver.h> 1965ebfedea0SLionel Sambuc 1966ebfedea0SLionel SambucLANGUAGE 0x09,0x01 1967ebfedea0SLionel Sambuc 1968ebfedea0SLionel Sambuc1 VERSIONINFO 1969ebfedea0SLionel Sambuc FILEVERSION $v1,$v2,$v3,$v4 1970ebfedea0SLionel Sambuc PRODUCTVERSION $v1,$v2,$v3,$v4 1971ebfedea0SLionel Sambuc FILEFLAGSMASK 0x3fL 1972ebfedea0SLionel Sambuc#ifdef _DEBUG 1973ebfedea0SLionel Sambuc FILEFLAGS 0x01L 1974ebfedea0SLionel Sambuc#else 1975ebfedea0SLionel Sambuc FILEFLAGS 0x00L 1976ebfedea0SLionel Sambuc#endif 1977ebfedea0SLionel Sambuc FILEOS VOS__WINDOWS32 1978ebfedea0SLionel Sambuc FILETYPE VFT_DLL 1979ebfedea0SLionel Sambuc FILESUBTYPE 0x0L 1980ebfedea0SLionel SambucBEGIN 1981ebfedea0SLionel Sambuc BLOCK "StringFileInfo" 1982ebfedea0SLionel Sambuc BEGIN 1983ebfedea0SLionel Sambuc BLOCK "040904b0" 1984ebfedea0SLionel Sambuc BEGIN 1985ebfedea0SLionel Sambuc // Required: 1986ebfedea0SLionel Sambuc VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0" 1987ebfedea0SLionel Sambuc VALUE "FileDescription", "OpenSSL Shared Library\\0" 1988ebfedea0SLionel Sambuc VALUE "FileVersion", "$version\\0" 1989ebfedea0SLionel Sambuc#if defined(CRYPTO) 1990ebfedea0SLionel Sambuc VALUE "InternalName", "libeay32\\0" 1991ebfedea0SLionel Sambuc VALUE "OriginalFilename", "libeay32.dll\\0" 1992ebfedea0SLionel Sambuc#elif defined(SSL) 1993ebfedea0SLionel Sambuc VALUE "InternalName", "ssleay32\\0" 1994ebfedea0SLionel Sambuc VALUE "OriginalFilename", "ssleay32.dll\\0" 1995ebfedea0SLionel Sambuc#endif 1996ebfedea0SLionel Sambuc VALUE "ProductName", "The OpenSSL Toolkit\\0" 1997ebfedea0SLionel Sambuc VALUE "ProductVersion", "$version\\0" 1998ebfedea0SLionel Sambuc // Optional: 1999ebfedea0SLionel Sambuc //VALUE "Comments", "\\0" 2000ebfedea0SLionel Sambuc VALUE "LegalCopyright", "Copyright � 1998-2005 The OpenSSL Project. Copyright � 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0" 2001ebfedea0SLionel Sambuc //VALUE "LegalTrademarks", "\\0" 2002ebfedea0SLionel Sambuc //VALUE "PrivateBuild", "\\0" 2003ebfedea0SLionel Sambuc //VALUE "SpecialBuild", "\\0" 2004ebfedea0SLionel Sambuc END 2005ebfedea0SLionel Sambuc END 2006ebfedea0SLionel Sambuc BLOCK "VarFileInfo" 2007ebfedea0SLionel Sambuc BEGIN 2008ebfedea0SLionel Sambuc VALUE "Translation", 0x409, 0x4b0 2009ebfedea0SLionel Sambuc END 2010ebfedea0SLionel SambucEND 2011ebfedea0SLionel SambucEOF 2012ebfedea0SLionel Sambuc close(OUT); 2013ebfedea0SLionel Sambuc } 2014ebfedea0SLionel Sambuc 2015ebfedea0SLionel Sambucprint <<EOF; 2016ebfedea0SLionel Sambuc 2017ebfedea0SLionel SambucConfigured for $target. 2018ebfedea0SLionel SambucEOF 2019ebfedea0SLionel Sambuc 2020ebfedea0SLionel Sambucprint <<\EOF if (!$no_threads && !$threads); 2021ebfedea0SLionel Sambuc 2022ebfedea0SLionel SambucThe library could not be configured for supporting multi-threaded 2023ebfedea0SLionel Sambucapplications as the compiler options required on this system are not known. 2024ebfedea0SLionel SambucSee file INSTALL for details if you need multi-threading. 2025ebfedea0SLionel SambucEOF 2026ebfedea0SLionel Sambuc 2027ebfedea0SLionel Sambucprint <<\EOF if ($no_shared_warn); 2028ebfedea0SLionel Sambuc 2029ebfedea0SLionel SambucYou gave the option 'shared'. Normally, that would give you shared libraries. 2030ebfedea0SLionel SambucUnfortunately, the OpenSSL configuration doesn't include shared library support 2031ebfedea0SLionel Sambucfor this platform yet, so it will pretend you gave the option 'no-shared'. If 2032ebfedea0SLionel Sambucyou can inform the developpers (openssl-dev\@openssl.org) how to support shared 2033ebfedea0SLionel Sambuclibraries on this platform, they will at least look at it and try their best 2034ebfedea0SLionel Sambuc(but please first make sure you have tried with a current version of OpenSSL). 2035ebfedea0SLionel SambucEOF 2036ebfedea0SLionel Sambuc 2037ebfedea0SLionel Sambucexit(0); 2038ebfedea0SLionel Sambuc 2039ebfedea0SLionel Sambucsub usage 2040ebfedea0SLionel Sambuc { 2041ebfedea0SLionel Sambuc print STDERR $usage; 2042ebfedea0SLionel Sambuc print STDERR "\npick os/compiler from:\n"; 2043ebfedea0SLionel Sambuc my $j=0; 2044ebfedea0SLionel Sambuc my $i; 2045ebfedea0SLionel Sambuc my $k=0; 2046ebfedea0SLionel Sambuc foreach $i (sort keys %table) 2047ebfedea0SLionel Sambuc { 2048ebfedea0SLionel Sambuc next if $i =~ /^debug/; 2049ebfedea0SLionel Sambuc $k += length($i) + 1; 2050ebfedea0SLionel Sambuc if ($k > 78) 2051ebfedea0SLionel Sambuc { 2052ebfedea0SLionel Sambuc print STDERR "\n"; 2053ebfedea0SLionel Sambuc $k=length($i); 2054ebfedea0SLionel Sambuc } 2055ebfedea0SLionel Sambuc print STDERR $i . " "; 2056ebfedea0SLionel Sambuc } 2057ebfedea0SLionel Sambuc foreach $i (sort keys %table) 2058ebfedea0SLionel Sambuc { 2059ebfedea0SLionel Sambuc next if $i !~ /^debug/; 2060ebfedea0SLionel Sambuc $k += length($i) + 1; 2061ebfedea0SLionel Sambuc if ($k > 78) 2062ebfedea0SLionel Sambuc { 2063ebfedea0SLionel Sambuc print STDERR "\n"; 2064ebfedea0SLionel Sambuc $k=length($i); 2065ebfedea0SLionel Sambuc } 2066ebfedea0SLionel Sambuc print STDERR $i . " "; 2067ebfedea0SLionel Sambuc } 2068ebfedea0SLionel Sambuc print STDERR "\n\nNOTE: If in doubt, on Unix-ish systems use './config'.\n"; 2069ebfedea0SLionel Sambuc exit(1); 2070ebfedea0SLionel Sambuc } 2071ebfedea0SLionel Sambuc 2072ebfedea0SLionel Sambucsub which 2073ebfedea0SLionel Sambuc { 2074ebfedea0SLionel Sambuc my($name)=@_; 2075ebfedea0SLionel Sambuc my $path; 2076ebfedea0SLionel Sambuc foreach $path (split /:/, $ENV{PATH}) 2077ebfedea0SLionel Sambuc { 2078ebfedea0SLionel Sambuc if (-f "$path/$name$exe_ext" and -x _) 2079ebfedea0SLionel Sambuc { 2080ebfedea0SLionel Sambuc return "$path/$name$exe_ext" unless ($name eq "perl" and 2081ebfedea0SLionel Sambuc system("$path/$name$exe_ext -e " . '\'exit($]<5.0);\'')); 2082ebfedea0SLionel Sambuc } 2083ebfedea0SLionel Sambuc } 2084ebfedea0SLionel Sambuc } 2085ebfedea0SLionel Sambuc 2086ebfedea0SLionel Sambucsub dofile 2087ebfedea0SLionel Sambuc { 2088ebfedea0SLionel Sambuc my $f; my $p; my %m; my @a; my $k; my $ff; 2089ebfedea0SLionel Sambuc ($f,$p,%m)=@_; 2090ebfedea0SLionel Sambuc 2091ebfedea0SLionel Sambuc open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n"; 2092ebfedea0SLionel Sambuc @a=<IN>; 2093ebfedea0SLionel Sambuc close(IN); 2094ebfedea0SLionel Sambuc foreach $k (keys %m) 2095ebfedea0SLionel Sambuc { 2096ebfedea0SLionel Sambuc grep(/$k/ && ($_=sprintf($m{$k}."\n",$p)),@a); 2097ebfedea0SLionel Sambuc } 2098ebfedea0SLionel Sambuc open(OUT,">$f.new") || die "unable to open $f.new:$!\n"; 2099ebfedea0SLionel Sambuc print OUT @a; 2100ebfedea0SLionel Sambuc close(OUT); 2101ebfedea0SLionel Sambuc rename($f,"$f.bak") || die "unable to rename $f\n" if -e $f; 2102ebfedea0SLionel Sambuc rename("$f.new",$f) || die "unable to rename $f.new\n"; 2103ebfedea0SLionel Sambuc } 2104ebfedea0SLionel Sambuc 2105ebfedea0SLionel Sambucsub print_table_entry 2106ebfedea0SLionel Sambuc { 2107ebfedea0SLionel Sambuc my $target = shift; 2108ebfedea0SLionel Sambuc 2109ebfedea0SLionel Sambuc (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags, 2110ebfedea0SLionel Sambuc my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj, 2111ebfedea0SLionel Sambuc my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj, 2112ebfedea0SLionel Sambuc my $rc5_obj,my $wp_obj,my $cmll_obj,my $modes_obj, my $engines_obj, 2113ebfedea0SLionel Sambuc my $perlasm_scheme,my $dso_scheme,my $shared_target,my $shared_cflag, 2114ebfedea0SLionel Sambuc my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags,my $multilib)= 2115ebfedea0SLionel Sambuc split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 2116ebfedea0SLionel Sambuc 2117ebfedea0SLionel Sambuc print <<EOF 2118ebfedea0SLionel Sambuc 2119ebfedea0SLionel Sambuc*** $target 2120ebfedea0SLionel Sambuc\$cc = $cc 2121ebfedea0SLionel Sambuc\$cflags = $cflags 2122ebfedea0SLionel Sambuc\$unistd = $unistd 2123ebfedea0SLionel Sambuc\$thread_cflag = $thread_cflag 2124ebfedea0SLionel Sambuc\$sys_id = $sys_id 2125ebfedea0SLionel Sambuc\$lflags = $lflags 2126ebfedea0SLionel Sambuc\$bn_ops = $bn_ops 2127ebfedea0SLionel Sambuc\$cpuid_obj = $cpuid_obj 2128ebfedea0SLionel Sambuc\$bn_obj = $bn_obj 2129ebfedea0SLionel Sambuc\$des_obj = $des_obj 2130ebfedea0SLionel Sambuc\$aes_obj = $aes_obj 2131ebfedea0SLionel Sambuc\$bf_obj = $bf_obj 2132ebfedea0SLionel Sambuc\$md5_obj = $md5_obj 2133ebfedea0SLionel Sambuc\$sha1_obj = $sha1_obj 2134ebfedea0SLionel Sambuc\$cast_obj = $cast_obj 2135ebfedea0SLionel Sambuc\$rc4_obj = $rc4_obj 2136ebfedea0SLionel Sambuc\$rmd160_obj = $rmd160_obj 2137ebfedea0SLionel Sambuc\$rc5_obj = $rc5_obj 2138ebfedea0SLionel Sambuc\$wp_obj = $wp_obj 2139ebfedea0SLionel Sambuc\$cmll_obj = $cmll_obj 2140ebfedea0SLionel Sambuc\$modes_obj = $modes_obj 2141ebfedea0SLionel Sambuc\$engines_obj = $engines_obj 2142ebfedea0SLionel Sambuc\$perlasm_scheme = $perlasm_scheme 2143ebfedea0SLionel Sambuc\$dso_scheme = $dso_scheme 2144ebfedea0SLionel Sambuc\$shared_target= $shared_target 2145ebfedea0SLionel Sambuc\$shared_cflag = $shared_cflag 2146ebfedea0SLionel Sambuc\$shared_ldflag = $shared_ldflag 2147ebfedea0SLionel Sambuc\$shared_extension = $shared_extension 2148ebfedea0SLionel Sambuc\$ranlib = $ranlib 2149ebfedea0SLionel Sambuc\$arflags = $arflags 2150ebfedea0SLionel Sambuc\$multilib = $multilib 2151ebfedea0SLionel SambucEOF 2152ebfedea0SLionel Sambuc } 2153ebfedea0SLionel Sambuc 2154ebfedea0SLionel Sambucsub test_sanity 2155ebfedea0SLionel Sambuc { 2156ebfedea0SLionel Sambuc my $errorcnt = 0; 2157ebfedea0SLionel Sambuc 2158ebfedea0SLionel Sambuc print STDERR "=" x 70, "\n"; 2159ebfedea0SLionel Sambuc print STDERR "=== SANITY TESTING!\n"; 2160ebfedea0SLionel Sambuc print STDERR "=== No configuration will be done, all other arguments will be ignored!\n"; 2161ebfedea0SLionel Sambuc print STDERR "=" x 70, "\n"; 2162ebfedea0SLionel Sambuc 2163ebfedea0SLionel Sambuc foreach $target (sort keys %table) 2164ebfedea0SLionel Sambuc { 2165ebfedea0SLionel Sambuc @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 2166ebfedea0SLionel Sambuc 2167ebfedea0SLionel Sambuc if ($fields[$idx_dso_scheme-1] =~ /^(beos|dl|dlfcn|win32|vms)$/) 2168ebfedea0SLionel Sambuc { 2169ebfedea0SLionel Sambuc $errorcnt++; 2170ebfedea0SLionel Sambuc print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n"; 2171ebfedea0SLionel Sambuc print STDERR " in the previous field\n"; 2172ebfedea0SLionel Sambuc } 2173ebfedea0SLionel Sambuc elsif ($fields[$idx_dso_scheme+1] =~ /^(beos|dl|dlfcn|win32|vms)$/) 2174ebfedea0SLionel Sambuc { 2175ebfedea0SLionel Sambuc $errorcnt++; 2176ebfedea0SLionel Sambuc print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n"; 2177ebfedea0SLionel Sambuc print STDERR " in the following field\n"; 2178ebfedea0SLionel Sambuc } 2179ebfedea0SLionel Sambuc elsif ($fields[$idx_dso_scheme] !~ /^(beos|dl|dlfcn|win32|vms|)$/) 2180ebfedea0SLionel Sambuc { 2181ebfedea0SLionel Sambuc $errorcnt++; 2182ebfedea0SLionel Sambuc print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n"; 2183ebfedea0SLionel Sambuc print STDERR " valid values are 'beos', 'dl', 'dlfcn', 'win32' and 'vms'\n"; 2184ebfedea0SLionel Sambuc } 2185ebfedea0SLionel Sambuc } 2186ebfedea0SLionel Sambuc print STDERR "No sanity errors detected!\n" if $errorcnt == 0; 2187ebfedea0SLionel Sambuc return $errorcnt; 2188ebfedea0SLionel Sambuc } 2189