blob: 7c9403f0bfcce83a28736b6de150c84d7f1f213a [file] [log] [blame]
Ralf S. Engelschalla4ed5531999-02-25 08:48:52 +00001:
Ben Laurie4f9b3061999-02-25 09:43:26 +00002eval 'exec perl -S $0 ${1+"$@"}'
Ralf S. Engelschalla4ed5531999-02-25 08:48:52 +00003 if $running_under_some_shell;
4##
5## Configure -- OpenSSL source tree configuration script
6##
Ben Laurie1641cb61998-12-28 17:08:48 +00007
Ben Laurie448cb8b1998-12-28 17:37:17 +00008require 5.000;
Ben Laurie1641cb61998-12-28 17:08:48 +00009use strict;
10
Ulf Möller22a4f961999-04-19 13:54:11 +000011# see INSTALL for instructions.
Ulf Möller462ba4f1999-04-24 22:59:36 +000012
Dr. Stephen Henson7e159e02011-12-25 14:45:15 +000013my $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";
Ulf Möller462ba4f1999-04-24 22:59:36 +000014
Ulf Möller434c5dd1999-04-19 15:19:58 +000015# Options:
Bodo Möllere5f30451999-04-29 21:52:08 +000016#
Ulf Möller462ba4f1999-04-24 22:59:36 +000017# --openssldir install OpenSSL in OPENSSLDIR (Default: DIR/ssl if the
18# --prefix option is given; /usr/local/ssl otherwise)
19# --prefix prefix for the OpenSSL include, lib and bin directories
20# (Default: the OPENSSLDIR directory)
Bodo Möllere5f30451999-04-29 21:52:08 +000021#
22# --install_prefix Additional prefix for package builders (empty by
23# default). This needn't be set in advance, you can
24# just as well use "make INSTALL_PREFIX=/whatever install".
25#
Richard Levittef9b3bff2000-11-30 22:53:34 +000026# --with-krb5-dir Declare where Kerberos 5 lives. The libraries are expected
27# to live in the subdirectory lib/ and the header files in
Richard Levittee452de92001-07-12 09:11:14 +000028# include/. A value is required.
29# --with-krb5-lib Declare where the Kerberos 5 libraries live. A value is
30# required.
Richard Levittef9b3bff2000-11-30 22:53:34 +000031# (Default: KRB5_DIR/lib)
Richard Levittee452de92001-07-12 09:11:14 +000032# --with-krb5-include Declare where the Kerberos 5 header files live. A
33# value is required.
Richard Levittef9b3bff2000-11-30 22:53:34 +000034# (Default: KRB5_DIR/include)
35# --with-krb5-flavor Declare what flavor of Kerberos 5 is used. Currently
Richard Levittee452de92001-07-12 09:11:14 +000036# supported values are "MIT" and "Heimdal". A value is required.
Richard Levittef9b3bff2000-11-30 22:53:34 +000037#
Richard Levitted0d046e2002-01-27 15:52:37 +000038# --test-sanity Make a number of sanity checks on the data in this file.
39# This is a debugging tool for OpenSSL developers.
40#
Andy Polyakovcbfb39d2006-10-21 13:38:16 +000041# --cross-compile-prefix Add specified prefix to binutils components.
42#
Richard Levitte5270e702000-10-26 21:07:28 +000043# no-hw-xxx do not compile support for specific crypto hardware.
44# Generic OpenSSL-style methods relating to this support
45# are always compiled but return NULL if the hardware
46# support isn't compiled.
47# no-hw do not compile support for any crypto hardware.
Bodo Möller5f8d5c91999-04-29 16:10:09 +000048# [no-]threads [don't] try to create a library that is suitable for
49# multithreaded applications (default is "threads" if we
50# know how to do it)
Richard Levittefcc6a1c2000-08-02 04:19:50 +000051# [no-]shared [don't] try to create shared libraries when supported.
Ulf Möllera7239791999-04-19 14:55:56 +000052# no-asm do not use assembler
Geoff Thorpebc2aada2000-04-06 07:09:45 +000053# no-dso do not compile in any native shared-library methods. This
54# will ensure that all methods just return NULL.
Richard Levittef9b3bff2000-11-30 22:53:34 +000055# no-krb5 do not compile in any KRB5 library or code.
Richard Levittee452de92001-07-12 09:11:14 +000056# [no-]zlib [don't] compile support for zlib compression.
57# zlib-dynamic Like "zlib", but the zlib library is expected to be a shared
58# library and will be loaded in run-time by the OpenSSL library.
Dr. Stephen Henson7e159e02011-12-25 14:45:15 +000059# sctp include SCTP support
Ulf Möller22a4f961999-04-19 13:54:11 +000060# 386 generate 80386 code
Andy Polyakovd0590fe2004-07-18 16:19:34 +000061# no-sse2 disables IA-32 SSE2 code, above option implies no-sse2
Ulf Möller79df9d61999-04-27 03:19:12 +000062# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...)
Ulf Möllerafd1f9e1999-05-04 11:52:26 +000063# -<xxx> +<xxx> compiler options are passed through
Geoff Thorpee41c8d62000-06-01 05:13:52 +000064#
65# DEBUG_SAFESTACK use type-safe stacks to enforce type-safety on stack items
66# provided to stack calls. Generates unique stack functions for
67# each possible stack type.
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000068# DES_PTR use pointer lookup vs arrays in the DES in crypto/des/des_locl.h
69# DES_RISC1 use different DES_ENCRYPT macro that helps reduce register
70# dependancies but needs to more registers, good for RISC CPU's
71# DES_RISC2 A different RISC variant.
72# DES_UNROLL unroll the inner DES loop, sometimes helps, somtimes hinders.
73# DES_INT use 'int' instead of 'long' for DES_LONG in crypto/des/des.h
74# This is used on the DEC Alpha where long is 8 bytes
75# and int is 4
76# BN_LLONG use the type 'long long' in crypto/bn/bn.h
Ralf S. Engelschall58964a41998-12-21 10:56:39 +000077# MD2_CHAR use 'char' instead of 'int' for MD2_INT in crypto/md2/md2.h
78# MD2_LONG use 'long' instead of 'int' for MD2_INT in crypto/md2/md2.h
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000079# IDEA_SHORT use 'short' instead of 'int' for IDEA_INT in crypto/idea/idea.h
80# IDEA_LONG use 'long' instead of 'int' for IDEA_INT in crypto/idea/idea.h
81# RC2_SHORT use 'short' instead of 'int' for RC2_INT in crypto/rc2/rc2.h
82# RC2_LONG use 'long' instead of 'int' for RC2_INT in crypto/rc2/rc2.h
83# RC4_CHAR use 'char' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
84# RC4_LONG use 'long' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
Ralf S. Engelschall58964a41998-12-21 10:56:39 +000085# RC4_INDEX define RC4_INDEX in crypto/rc4/rc4_locl.h. This turns on
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000086# array lookups instead of pointer use.
Andy Polyakov2dae04d1999-10-07 12:03:59 +000087# RC4_CHUNK enables code that handles data aligned at long (natural CPU
88# word) boundary.
89# RC4_CHUNK_LL enables code that handles data aligned at long long boundary
90# (intended for 64-bit CPUs running 32-bit OS).
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000091# BF_PTR use 'pointer arithmatic' for Blowfish (unsafe on Alpha).
Ulf Möller995e79e1999-04-23 21:29:45 +000092# BF_PTR2 intel specific version (generic version is more efficient).
Andy Polyakovd0590fe2004-07-18 16:19:34 +000093#
94# Following are set automatically by this script
95#
Ralf S. Engelschall58964a41998-12-21 10:56:39 +000096# MD5_ASM use some extra md5 assember,
97# SHA1_ASM use some extra sha1 assember, must define L_ENDIAN for x86
98# RMD160_ASM use some extra ripemd160 assember,
Andy Polyakovd0590fe2004-07-18 16:19:34 +000099# SHA256_ASM sha256_block is implemented in assembler
100# SHA512_ASM sha512_block is implemented in assembler
101# AES_ASM ASE_[en|de]crypt is implemented in assembler
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000102
Dr. Stephen Henson363bd0b2009-01-11 15:56:32 +0000103# Minimum warning options... any contributions to OpenSSL should at least get
104# past these.
105
Dr. Stephen Henson8e6925b2009-01-11 20:36:50 +0000106my $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";
Dr. Stephen Henson363bd0b2009-01-11 15:56:32 +0000107
Dr. Stephen Henson0c28f272009-09-09 16:31:32 +0000108my $strict_warnings = 0;
109
Ben Laurie1641cb61998-12-28 17:08:48 +0000110my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000111
112# MD2_CHAR slags pentium pros
Ulf Möller995e79e1999-04-23 21:29:45 +0000113my $x86_gcc_opts="RC4_INDEX MD2_INT";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000114
115# MODIFY THESE PARAMETERS IF YOU ARE GOING TO USE THE 'util/speed.sh SCRIPT
116# Don't worry about these normally
117
Ben Laurie1641cb61998-12-28 17:08:48 +0000118my $tcc="cc";
119my $tflags="-fast -Xa";
120my $tbn_mul="";
121my $tlib="-lnsl -lsocket";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000122#$bits1="SIXTEEN_BIT ";
123#$bits2="THIRTY_TWO_BIT ";
Ben Laurie1641cb61998-12-28 17:08:48 +0000124my $bits1="THIRTY_TWO_BIT ";
125my $bits2="SIXTY_FOUR_BIT ";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000126
Andy Polyakov8ca28da2011-09-15 20:22:59 +0000127my $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:e_padlock-x86.o";
Andy Polyakovbc3e7fa2004-11-26 15:12:17 +0000128
Andy Polyakovfa8e9212008-01-11 13:15:11 +0000129my $x86_elf_asm="$x86_asm:elf";
Dr. Stephen Henson73980532008-01-06 00:36:22 +0000130
Andy Polyakov993adc02011-10-17 17:10:54 +0000131my $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:e_padlock-x86_64.o";
Andy Polyakoved28aef2011-09-06 20:45:36 +0000132my $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";
133my $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";
134my $sparcv8_asm=":sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::::::void";
135my $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o:::::sha1-alpha.o:::::::ghash-alpha.o::void";
136my $mips32_asm=":bn-mips.o::aes_cbc.o aes-mips.o:::sha1-mips.o sha256-mips.o::::::::";
137my $mips64_asm=":bn-mips.o mips-mont.o::aes_cbc.o aes-mips.o:::sha1-mips.o sha256-mips.o sha512-mips.o::::::::";
Andy Polyakov77aae962011-11-15 12:18:40 +0000138my $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:";
Andy Polyakoved28aef2011-09-06 20:45:36 +0000139my $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";
140my $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";
141my $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";
142my $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::::::::";
143my $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::::::::";
144my $no_asm=":::::::::::::::void";
Richard Levittea77e0232001-03-26 16:16:12 +0000145
Andy Polyakovb7efa562005-01-24 14:38:14 +0000146# As for $BSDthreads. Idea is to maintain "collective" set of flags,
147# which would cover all BSD flavors. -pthread applies to them all,
148# but is treated differently. OpenBSD expands is as -D_POSIX_THREAD
149# -lc_r, which is sufficient. FreeBSD 4.x expands it as -lc_r,
150# which has to be accompanied by explicit -D_THREAD_SAFE and
151# sometimes -D_REENTRANT. FreeBSD 5.x expands it as -lc_r, which
152# seems to be sufficient?
153my $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000154
Andy Polyakoved28aef2011-09-06 20:45:36 +0000155#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
Ulf Möller99e812c2000-01-22 21:26:01 +0000156
Ben Laurie1641cb61998-12-28 17:08:48 +0000157my %table=(
Bodo Möller36124b12000-09-06 12:25:58 +0000158# File 'TABLE' (created by 'make TABLE') contains the data from this list,
159# formatted for better readability.
160
161
Richard Levitteb7e16362000-03-07 23:17:48 +0000162#"b", "${tcc}:${tflags}::${tlib}:${bits1}:${tbn_mul}::",
163#"bl-4c-2c", "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR MD2_CHAR:${tbn_mul}::",
164#"bl-4c-ri", "${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR RC4_INDEX:${tbn_mul}::",
165#"b2-is-ri-dp", "${tcc}:${tflags}::${tlib}:${bits2}IDEA_SHORT RC4_INDEX DES_PTR:${tbn_mul}::",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000166
Ulf Möller22a4f961999-04-19 13:54:11 +0000167# Our development configs
Richard Levittecf1b7d92001-02-19 16:06:34 +0000168"purify", "purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
Richard Levitte34ab17b2002-06-27 09:13:44 +0000169"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::::",
Ben Laurie0c4e6712011-03-12 13:55:24 +0000170"debug-ben", "gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DDEBUG_SAFESTACK -O2 -pipe::(unknown):::::",
Ben Lauriec518ade2001-07-21 10:24:07 +0000171"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)::::",
Ben Laurie9dd5ae62002-01-18 16:51:05 +0000172"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)::::",
Ben Laurie7a412de2012-05-10 20:28:02 +0000173"debug-ben-debug", "gcc:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DOPENSSL_NO_HW_PADLOCK -g3 -O2 -pipe::(unknown)::::::",
Andy Polyakovdce7f142011-11-15 12:32:18 +0000174"debug-ben-macos", "cc:$gcc_devteam_warn -DOPENSSL_NO_ASM -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch i386 -O3 -DL_ENDIAN -g3 -pipe::(unknown)::::::",
Ben Lauriebabb3792008-10-12 14:32:47 +0000175"debug-ben-no-opt", "gcc: -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -DTERMIOS -Wall -g3::(unknown)::::::",
Richard Levittecf1b7d92001-02-19 16:06:34 +0000176"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)::::::",
177"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
Bodo Möllere0d61322011-10-19 08:59:53 +0000178"debug-bodo", "gcc:$gcc_devteam_warn -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",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000179"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",
Andy Polyakovc504f0a2010-09-10 15:37:50 +0000180"debug-steve64", "gcc:$gcc_devteam_warn -m64 -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)",
Dr. Stephen Henson89408582009-12-09 15:56:24 +0000181"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)",
Andy Polyakovc504f0a2010-09-10 15:37:50 +0000182"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)",
Richard Levitte1dc2d652004-04-20 11:53:33 +0000183"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -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)",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000184"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -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)",
Richard Levitte1dc2d652004-04-20 11:53:33 +0000185"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -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)",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000186"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 -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -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)",
Andy Polyakovc504f0a2010-09-10 15:37:50 +0000187"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)",
188"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)",
Andy Polyakovb7efa562005-01-24 14:38:14 +0000189"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
190"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
Nils Larscha1368622005-06-12 10:34:42 +0000191"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -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)",
192"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -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)",
Andy Polyakoved28aef2011-09-06 20:45:36 +0000193"debug-linux-ia32-aes", "gcc:-DAES_EXPERIMENTAL -DL_ENDIAN -DTERMIO -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:e_padlock-x86.o:elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Dr. Stephen Henson3ca16bf2009-07-24 13:37:18 +0000194"debug-linux-generic32","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO -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)",
195"debug-linux-generic64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO -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)",
Andy Polyakovc504f0a2010-09-10 15:37:50 +0000196"debug-linux-x86_64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -DTERMIO -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",
Richard Levittecf1b7d92001-02-19 16:06:34 +0000197"dist", "cc:-O::(unknown)::::::",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000198
Andy Polyakovf8bbcf32000-02-15 17:31:12 +0000199# Basic configs that should work on any (32 and less bit) box
Richard Levittecf1b7d92001-02-19 16:06:34 +0000200"gcc", "gcc:-O3::(unknown):::BN_LLONG:::",
201"cc", "cc:-O::(unknown)::::::",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000202
Richard Levitte28a80032004-06-28 22:01:37 +0000203####VOS Configurations
Dr. Stephen Hensonad89bf72011-12-19 17:01:37 +0000204"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:",
205"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:",
Richard Levitte28a80032004-06-28 22:01:37 +0000206
Richard Levittecf2d9e02001-05-03 06:14:47 +0000207#### Solaris x86 with GNU C setups
Richard Levittecf1b7d92001-02-19 16:06:34 +0000208# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
Andy Polyakovf8bbcf32000-02-15 17:31:12 +0000209# here because whenever GNU C instantiates an assembler template it
210# surrounds it with #APP #NO_APP comment pair which (at least Solaris
211# 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic"
212# error message.
Andy Polyakovc5de8b22005-06-26 17:17:11 +0000213"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)",
Andy Polyakov0abfd602005-04-04 17:10:53 +0000214# -shared -static-libgcc might appear controversial, but modules taken
215# from static libgcc do not have relocations and linking them into our
216# shared objects doesn't have any negative side-effects. On the contrary,
217# doing so makes it possible to use gcc shared build with Sun C. Given
218# that gcc generates faster code [thanks to inline assembler], I would
219# actually recommend to consider using gcc shared build even with vendor
220# compiler:-)
221# <appro@fy.chalmers.se>
Andy Polyakovc504f0a2010-09-10 15:37:50 +0000222"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",
Andy Polyakov0abfd602005-04-04 17:10:53 +0000223
Richard Levittecf2d9e02001-05-03 06:14:47 +0000224#### Solaris x86 with Sun C setups
Andy Polyakov8861ba32005-04-13 07:22:41 +0000225"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)",
Dr. Stephen Henson9acc6502009-11-09 14:13:23 +0000226"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",
Richard Levittecf2d9e02001-05-03 06:14:47 +0000227
Andy Polyakov1656ef21999-07-25 22:25:12 +0000228#### SPARC Solaris with GNU C setups
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000229"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)",
Andy Polyakov6a8517f2007-08-28 20:45:25 +0000230"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Andy Polyakovac7b4262001-07-25 15:58:57 +0000231# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
Andy Polyakova00e4142005-12-16 17:39:57 +0000232"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)",
Andy Polyakovc23632d2009-02-09 15:11:22 +0000233"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",
Andy Polyakov1656ef21999-07-25 22:25:12 +0000234####
Andy Polyakov6a8517f2007-08-28 20:45:25 +0000235"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Andy Polyakova00e4142005-12-16 17:39:57 +0000236"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)",
Andy Polyakov1656ef21999-07-25 22:25:12 +0000237
238#### SPARC Solaris with Sun C setups
Andy Polyakov1656ef21999-07-25 22:25:12 +0000239# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
240# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
Ulf Möller5a2e24b1999-06-09 23:29:23 +0000241# SC5.0 note: Compiler common patch 107357-01 or later is required!
Andy Polyakov8861ba32005-04-13 07:22:41 +0000242"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)",
Andy Polyakov6a8517f2007-08-28 20:45:25 +0000243"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)",
Andy Polyakov3b4a0222005-12-19 09:10:06 +0000244"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)",
Andy Polyakovc23632d2009-02-09 15:11:22 +0000245"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):/usr/ccs/bin/ar rs::/64",
Bodo Möllerd0f28761999-09-14 15:05:45 +0000246####
Andy Polyakov6a8517f2007-08-28 20:45:25 +0000247"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)",
Andy Polyakova00e4142005-12-16 17:39:57 +0000248"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)",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000249
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000250#### SunOS configs, assuming sparc for the gcc one.
251#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
252"sunos-gcc","gcc:-O3 -mv8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:${no_asm}::",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000253
Andy Polyakovda8fa721999-07-25 20:40:58 +0000254#### IRIX 5.x configs
255# -mips2 flag is added by ./config when appropriate.
Andy Polyakovd4665882010-10-02 11:47:17 +0000256"irix-gcc","gcc:-O3 -DTERMIOS -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK DES_UNROLL DES_RISC2 DES_PTR BF_PTR:${mips32_asm}:o32:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
257"irix-cc", "cc:-O2 -use_readonly_const -DTERMIOS -DB_ENDIAN::(unknown):::BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC2 DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Andy Polyakovda8fa721999-07-25 20:40:58 +0000258#### IRIX 6.x configs
259# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
Andy Polyakov30fbcaa2004-03-12 21:52:54 +0000260# './Configure irix-cc -o32' manually.
Andy Polyakovd4665882010-10-02 11:47:17 +0000261"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:${mips64_asm}:n32:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
262"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:${mips64_asm}:n32:dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
Andy Polyakovda8fa721999-07-25 20:40:58 +0000263# N64 ABI builds.
Andy Polyakovd4665882010-10-02 11:47:17 +0000264"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -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",
265"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -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",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000266
Andy Polyakovbcba6cc2000-02-12 23:33:01 +0000267#### Unified HP-UX ANSI C configs.
268# Special notes:
269# - Originally we were optimizing at +O4 level. It should be noted
270# that the only difference between +O3 and +O4 is global inter-
271# procedural analysis. As it has to be performed during the link
272# stage the compiler leaves behind certain pseudo-code in lib*.a
273# which might be release or even patch level specific. Generating
Andy Polyakovf8bbcf32000-02-15 17:31:12 +0000274# the machine code for and analyzing the *whole* program appears
275# to be *extremely* memory demanding while the performance gain is
Andy Polyakovbcba6cc2000-02-12 23:33:01 +0000276# actually questionable. The situation is intensified by the default
277# HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
278# which is way too low for +O4. In other words, doesn't +O3 make
279# more sense?
Andy Polyakovf8bbcf32000-02-15 17:31:12 +0000280# - Keep in mind that the HP compiler by default generates code
281# suitable for execution on the host you're currently compiling at.
282# If the toolkit is ment to be used on various PA-RISC processors
Andy Polyakov6d03b732001-07-30 16:42:15 +0000283# consider './config +DAportable'.
Andy Polyakovad5f0ed2003-11-20 19:10:36 +0000284# - +DD64 is chosen in favour of +DA2.0W because it's meant to be
Andy Polyakovbcba6cc2000-02-12 23:33:01 +0000285# compatible with *future* releases.
286# - If you run ./Configure hpux-parisc-[g]cc manually don't forget to
287# pass -D_REENTRANT on HP-UX 10 and later.
288# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
289# 32-bit message digests. (For the moment of this writing) HP C
290# doesn't seem to "digest" too many local variables (they make "him"
291# chew forever:-). For more details look-up MD32_XARRAY comment in
292# crypto/sha/sha_lcl.h.
293# <appro@fy.chalmers.se>
294#
Richard Levitte3bead952000-03-24 16:06:22 +0000295# Since there is mention of this in shlib/hpux10-cc.sh
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000296"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)",
297"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)",
Andy Polyakovfaed7982012-02-02 07:41:29 +0000298"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",
299"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",
Andy Polyakoved28aef2011-09-06 20:45:36 +0000300"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",
Andy Polyakovbcba6cc2000-02-12 23:33:01 +0000301
Richard Levitted0c2ebf2000-09-17 20:04:42 +0000302# More attempts at unified 10.X and 11.X targets for HP C compiler.
303#
304# Chris Ruemmler <ruemmler@cup.hp.com>
305# Kevin Steves <ks@hp.se>
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000306"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)",
Andy Polyakov46c42e72010-01-19 17:10:24 +0000307"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",
Andy Polyakovfaed7982012-02-02 07:41:29 +0000308"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",
Andy Polyakov46c42e72010-01-19 17:10:24 +0000309"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",
Richard Levitted0c2ebf2000-09-17 20:04:42 +0000310
Andy Polyakov12470922004-01-29 22:16:08 +0000311# HP/UX IA-64 targets
Andy Polyakovc23632d2009-02-09 15:11:22 +0000312"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",
Andy Polyakov12470922004-01-29 22:16:08 +0000313# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with
314# with debugging of the following config.
Andy Polyakovc23632d2009-02-09 15:11:22 +0000315"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",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000316# GCC builds...
Andy Polyakovc23632d2009-02-09 15:11:22 +0000317"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",
318"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",
Andy Polyakov12470922004-01-29 22:16:08 +0000319
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000320# Legacy HPUX 9.X configs...
321"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)",
322"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)",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000323
Richard Levittec5f8bbb2000-09-21 05:42:01 +0000324#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000325"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:::",
Richard Levittec5f8bbb2000-09-21 05:42:01 +0000326
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000327# DEC Alpha OSF/1/Tru64 targets.
Richard Levitte6bc847e2001-08-10 15:26:21 +0000328#
329# "What's in a name? That which we call a rose
330# By any other word would smell as sweet."
331#
332# - William Shakespeare, "Romeo & Juliet", Act II, scene II.
333#
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +0000334# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
Richard Levitte6bc847e2001-08-10 15:26:21 +0000335#
Andy Polyakov98c15092006-12-08 14:42:19 +0000336"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
337"osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
338"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",
Ulf Möllera2b21731999-05-18 16:04:03 +0000339
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000340####
341#### Variety of LINUX:-)
342####
Andy Polyakovb7efa562005-01-24 14:38:14 +0000343# *-generic* is endian-neutral target, but ./config is free to
344# throw in -D[BL]_ENDIAN, whichever appropriate...
345"linux-generic32","gcc:-DTERMIO -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)",
Andy Polyakovaddd6412008-01-13 22:01:30 +0000346"linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -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)",
Andy Polyakov7722e532007-09-27 16:27:03 +0000347# It's believed that majority of ARM toolchains predefine appropriate -march.
348# If you compiler does not, do complement config command line with one!
Andy Polyakov2c3ee162007-09-27 07:43:58 +0000349"linux-armv4", "gcc:-DTERMIO -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)",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000350#### IA-32 targets...
351"linux-ia32-icc", "icc:-DL_ENDIAN -DTERMIO -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)",
Andy Polyakovb7efa562005-01-24 14:38:14 +0000352"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -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)",
Andy Polyakovdab62932008-11-12 08:21:20 +0000353"linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out",
Andy Polyakovb7efa562005-01-24 14:38:14 +0000354####
355"linux-generic64","gcc:-DTERMIO -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)",
Andy Polyakovc23632d2009-02-09 15:11:22 +0000356"linux-ppc64", "gcc:-m64 -DB_ENDIAN -DTERMIO -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",
Andy Polyakova7ad2af2005-07-19 22:37:57 +0000357"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -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)",
358"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -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)",
359"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -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)",
Andy Polyakovc504f0a2010-09-10 15:37:50 +0000360"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -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",
Andy Polyakove822c752010-11-29 20:52:43 +0000361"linux64-s390x", "gcc:-m64 -DB_ENDIAN -DTERMIO -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",
362#### So called "highgprs" target for z/Architecture CPUs
363# "Highgprs" is kernel feature first implemented in Linux 2.6.32, see
364# /proc/cpuinfo. The idea is to preserve most significant bits of
365# general purpose registers not only upon 32-bit process context
366# switch, but even on asynchronous signal delivery to such process.
367# This makes it possible to deploy 64-bit instructions even in legacy
368# application context and achieve better [or should we say adequate]
369# performance. The build is binary compatible with linux-generic32,
370# and the idea is to be able to install the resulting libcrypto.so
371# alongside generic one, e.g. as /lib/highgprs/libcrypto.so.x.y, for
372# ldconfig and run-time linker to autodiscover. Unfortunately it
373# doesn't work just yet, because of couple of bugs in glibc
Andy Polyakov8ca28da2011-09-15 20:22:59 +0000374# sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
375"linux32-s390x", "gcc:-m31 -Wa,-mzarch -DB_ENDIAN -DTERMIO -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",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000376#### SPARC Linux setups
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000377# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
378# assisted with debugging of following two configs.
Andy Polyakov6a8517f2007-08-28 20:45:25 +0000379"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000380# it's a real mess with -mcpu=ultrasparc option under Linux, but
381# -Wa,-Av8plus should do the trick no matter what.
Andy Polyakov3b4a0222005-12-19 09:10:06 +0000382"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000383# GCC 3.1 is a requirement
Andy Polyakovc23632d2009-02-09 15:11:22 +0000384"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -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",
Andy Polyakovbdf5e182000-01-02 20:46:58 +0000385#### Alpha Linux with GNU C and Compaq C setups
Andy Polyakovf8bbcf32000-02-15 17:31:12 +0000386# Special notes:
387# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
388# ought to run './Configure linux-alpha+bwx-gcc' manually, do
389# complement the command line with -mcpu=ev56, -mcpu=ev6 or whatever
390# which is appropriate.
391# - If you use ccc keep in mind that -fast implies -arch host and the
392# compiler is free to issue instructions which gonna make elder CPU
393# choke. If you wish to build "blended" toolkit, add -arch generic
394# *after* -fast and invoke './Configure linux-alpha-ccc' manually.
395#
396# <appro@fy.chalmers.se>
397#
Andy Polyakov98c15092006-12-08 14:42:19 +0000398"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
399"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
400"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
401"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
Andy Polyakov3e181362012-04-18 13:01:36 +0000402#
403# TI_CGT_C6000_7.3.x is a requirement
404"linux-c64xplus","cl6x:--linux --strip_coff_underscore -ea=.s -eo=.o -mv6400+ -o2 -ox -ms -pden -DOPENSSL_SMALL_FOOTPRINT::-D_REENTRANT:::BN_LLONG:c64xpluscpuid.o:bn-c64xplus.o c64xplus-gf2m.o::aes-c64xplus.o aes_cbc.o aes_ctr.o:::sha1-c64xplus.o sha256-c64xplus.o sha512-c64xplus.o:::::::ghash-c64xplus.o::void:dlfcn:linux-shared:--pic:-z --sysv --shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):true",
Andy Polyakovbdf5e182000-01-02 20:46:58 +0000405
Andy Polyakov1e863182011-04-01 20:58:34 +0000406# Android: linux-* but without -DTERMIO and pointers to headers and libs.
407"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)",
Andy Polyakov8fcdb1e2011-10-15 08:32:16 +0000408"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)",
Andy Polyakov1e863182011-04-01 20:58:34 +0000409"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)",
Dr. Stephen Henson7a4ec192011-02-02 15:07:13 +0000410
Andy Polyakovb7efa562005-01-24 14:38:14 +0000411#### *BSD [do see comment about ${BSDthreads} above!]
412"BSD-generic32","gcc:-DTERMIOS -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)",
Andy Polyakovdab62932008-11-12 08:21:20 +0000413"BSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -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)",
Andy Polyakovb7efa562005-01-24 14:38:14 +0000414"BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -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)",
Ben Lauriee9ad6662005-04-23 06:05:24 +0000415"debug-BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Andy Polyakov6a8517f2007-08-28 20:45:25 +0000416"BSD-sparcv8", "gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${sparcv8_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000417
Andy Polyakovb7efa562005-01-24 14:38:14 +0000418"BSD-generic64","gcc:-DTERMIOS -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)",
419# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
420# simply *happens* to work around a compiler bug in gcc 3.3.3,
421# triggered by RIPEMD160 code.
Andy Polyakova00e4142005-12-16 17:39:57 +0000422"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -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)",
Andy Polyakov63999e52005-07-20 12:10:41 +0000423"BSD-ia64", "gcc:-DL_ENDIAN -DTERMIOS -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)",
Andy Polyakovc504f0a2010-09-10 15:37:50 +0000424"BSD-x86_64", "gcc:-DL_ENDIAN -DTERMIOS -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)",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000425
Nils Larscha1368622005-06-12 10:34:42 +0000426"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)",
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000427
Richard Levittecf1b7d92001-02-19 16:06:34 +0000428"nextstep", "cc:-O -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
429"nextstep3.3", "cc:-O3 -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
430
Ralf S. Engelschall58964a41998-12-21 10:56:39 +0000431# NCR MP-RAS UNIX ver 02.03.01
Lutz Jänickeacad5752003-01-16 07:54:52 +0000432"ncr-scde","cc:-O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw::(unknown)::-lsocket -lnsl -lc89:${x86_gcc_des} ${x86_gcc_opts}:::",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000433
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000434# QNX
Richard Levittecf1b7d92001-02-19 16:06:34 +0000435"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
Dr. Stephen Henson4f335342009-06-17 11:37:44 +0000436"QNX6", "gcc:-DTERMIOS::::-lsocket::${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
437"QNX6-i386", "gcc:-DL_ENDIAN -DTERMIOS -O2 -Wall::::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Lutz Jänicke6a9af682001-11-30 09:38:57 +0000438
Ulf Möller4700aea2006-04-11 21:34:21 +0000439# BeOS
440"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",
441"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",
442
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000443#### SCO/Caldera targets.
Andy Polyakovfda20f02003-01-12 15:50:59 +0000444#
Andy Polyakov699543e2003-01-09 08:42:04 +0000445# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
446# Now we only have blended unixware-* as it's the only one used by ./config.
Andy Polyakovfda20f02003-01-12 15:50:59 +0000447# If you want to optimize for particular microarchitecture, bypass ./config
Andy Polyakov699543e2003-01-09 08:42:04 +0000448# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
Andy Polyakovfda20f02003-01-12 15:50:59 +0000449# Note that not all targets include assembler support. Mostly because of
450# lack of motivation to support out-of-date platforms with out-of-date
451# compiler drivers and assemblers. Tim Rice <tim@multitalents.net> has
452# patiently assisted to debug most of it.
Andy Polyakov699543e2003-01-09 08:42:04 +0000453#
454# UnixWare 2.0x fails destest with -O.
Richard Levitte9335a5f2002-07-18 07:47:30 +0000455"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
Richard Levitte9335a5f2002-07-18 07:47:30 +0000456"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
Andy Polyakov699543e2003-01-09 08:42:04 +0000457"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)",
Andy Polyakov14cc0aa2005-06-26 18:06:38 +0000458"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)",
Andy Polyakovfda20f02003-01-12 15:50:59 +0000459# SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the SCO cc.
Andy Polyakov42bf2a52003-01-18 21:57:30 +0000460"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)",
461"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)",
Andy Polyakovfda20f02003-01-12 15:50:59 +0000462
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000463#### IBM's AIX.
Andy Polyakov76ef6ac2004-12-20 13:44:34 +0000464"aix3-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
Andy Polyakov492279f2008-09-12 14:45:54 +0000465"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",
466"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",
Andy Polyakovdd558802004-04-27 22:05:50 +0000467# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
468# at build time. $OBJECT_MODE is respected at ./config stage!
Andy Polyakov492279f2008-09-12 14:45:54 +0000469"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR:${ppc32_asm}:aix32:dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
470"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${ppc64_asm}:aix64:dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000471
Ralf S. Engelschall58964a41998-12-21 10:56:39 +0000472#
Bodo Möllerc46acba2002-03-15 16:46:41 +0000473# Cray T90 and similar (SDSC)
Ralf S. Engelschall58964a41998-12-21 10:56:39 +0000474# It's Big-endian, but the algorithms work properly when B_ENDIAN is NOT
475# defined. The T90 ints and longs are 8 bytes long, and apparently the
476# B_ENDIAN code assumes 4 byte ints. Fortunately, the non-B_ENDIAN and
477# non L_ENDIAN code aligns the bytes in each word correctly.
478#
479# The BIT_FIELD_LIMITS define is to avoid two fatal compiler errors:
480#'Taking the address of a bit field is not allowed. '
481#'An expression with bit field exists as the operand of "sizeof" '
482# (written by Wayne Schroeder <schroede@SDSC.EDU>)
Bodo Möllerc46acba2002-03-15 16:46:41 +0000483#
484# j90 is considered the base machine type for unicos machines,
485# so this configuration is now called "cray-j90" ...
486"cray-j90", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::",
Ralf S. Engelschall58964a41998-12-21 10:56:39 +0000487
Ralf S. Engelschall13e91dd1998-12-22 15:59:57 +0000488#
489# Cray T3E (Research Center Juelich, beckman@acl.lanl.gov)
490#
491# The BIT_FIELD_LIMITS define was written for the C90 (it seems). I added
492# another use. Basically, the problem is that the T3E uses some bit fields
493# for some st_addr stuff, and then sizeof and address-of fails
494# I could not use the ams/alpha.o option because the Cray assembler, 'cam'
495# did not like it.
Richard Levittecf1b7d92001-02-19 16:06:34 +0000496"cray-t3e", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:::",
Ralf S. Engelschall13e91dd1998-12-22 15:59:57 +0000497
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000498# DGUX, 88100.
Richard Levittecf1b7d92001-02-19 16:06:34 +0000499"dgux-R3-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):::RC4_INDEX DES_UNROLL:::",
Richard Levitte0da945b2001-04-03 08:05:03 +0000500"dgux-R4-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown)::-lnsl -lsocket:RC4_INDEX DES_UNROLL:::",
Richard Levittecf1b7d92001-02-19 16:06:34 +0000501"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}",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000502
Ulf Möller1fac96e1999-05-20 17:28:19 +0000503# Sinix/ReliantUNIX RM400
504# NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g */
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000505"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)",
Richard Levittecf1b7d92001-02-19 16:06:34 +0000506"SINIX","cc:-O::(unknown):SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:RC4_INDEX RC4_CHAR:::",
507"SINIX-N","/usr/ucb/cc:-O2 -misaligned::(unknown)::-lucb:RC4_INDEX RC4_CHAR:::",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000508
Ulf Möllera53955d1999-06-04 21:35:58 +0000509# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
Richard Levittecf1b7d92001-02-19 16:06:34 +0000510"BS2000-OSD","c89:-O -XLLML -XLLMK -XL -DB_ENDIAN -DTERMIOS -DCHARSET_EBCDIC::(unknown)::-lsocket -lnsl:THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
Ulf Möllera53955d1999-06-04 21:35:58 +0000511
Bodo Möller1d4581c2001-11-22 11:09:42 +0000512# OS/390 Unix an EBCDIC-based Unix system on IBM mainframe
513# You need to compile using the c89.sh wrapper in the tools directory, because the
514# IBM compiler does not like the -L switch after any object modules.
515#
516"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:::",
517
Andy Polyakovbafcc7e2004-07-23 19:18:20 +0000518# Visual C targets
Andy Polyakovf63e4be2008-01-13 17:56:02 +0000519#
520# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
Andy Polyakoved28aef2011-09-06 20:45:36 +0000521"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",
Andy Polyakov361512d2011-08-12 16:44:32 +0000522"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",
Andy Polyakoved28aef2011-09-06 20:45:36 +0000523"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",
Andy Polyakov361512d2011-08-12 16:44:32 +0000524"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",
Andy Polyakovf63e4be2008-01-13 17:56:02 +0000525# x86 Win32 target defaults to ANSI API, if you want UNICODE, complement
526# 'perl Configure VC-WIN32' with '-DUNICODE -D_UNICODE'
Dr. Stephen Henson2677d852011-05-06 17:55:59 +0000527"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",
Andy Polyakovf63e4be2008-01-13 17:56:02 +0000528# Unified CE target
Dr. Stephen Henson71b7858b2009-05-06 16:55:55 +0000529"debug-VC-WIN32","cl:-W3 -WX -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",
Andy Polyakovf63e4be2008-01-13 17:56:02 +0000530"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000531
532# Borland C++ 4.5
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000533"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +0000534
Ulf Möller66ecdf32003-02-22 18:00:14 +0000535# MinGW
Andy Polyakovaf9fafd2010-06-01 05:52:39 +0000536"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",
Andy Polyakov93c4ba02008-11-14 16:40:37 +0000537# As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll
538# compiled with one compiler with application compiled with another
539# compiler. It's possible to engage Applink support in mingw64 build,
540# but it's not done, because till mingw64 supports structured exception
541# handling, one can't seriously consider its binaries for using with
542# non-mingw64 run-time environment. And as mingw64 is always consistent
543# with itself, Applink is never engaged and can as well be omitted.
Andy Polyakovaf9fafd2010-06-01 05:52:39 +0000544"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",
Ralf S. Engelschalle04a6c21999-01-30 11:50:48 +0000545
Richard Levittec69d1032002-06-13 21:44:23 +0000546# UWIN
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000547"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
Richard Levittec69d1032002-06-13 21:44:23 +0000548
Richard Levitte49e04542002-02-14 12:28:24 +0000549# Cygwin
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000550"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",
Andy Polyakovdab62932008-11-12 08:21:20 +0000551"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",
Andy Polyakov13344622005-04-13 21:08:39 +0000552"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",
Bodo Möller349b2932002-05-24 20:39:31 +0000553
Dr. Stephen Hensoneef0c1f2008-01-03 22:43:04 +0000554# NetWare from David Ward (dsward@novell.com)
555# requires either MetroWerks NLM development tools, or gcc / nlmconv
556# NetWare defaults socket bio to WinSock sockets. However,
557# the builds can be configured to use BSD sockets instead.
Richard Levitte4d8743f2003-11-28 13:10:58 +0000558# netware-clib => legacy CLib c-runtime support
Dr. Stephen Hensoneef0c1f2008-01-03 22:43:04 +0000559"netware-clib", "mwccnlm::::::${x86_gcc_opts}::",
560"netware-clib-bsdsock", "mwccnlm::::::${x86_gcc_opts}::",
561"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}::",
562"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}::",
Richard Levitte4d8743f2003-11-28 13:10:58 +0000563# netware-libc => LibC/NKS support
Richard Levitte9e5b3782005-06-05 21:47:19 +0000564"netware-libc", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
Richard Levitteb764ab92005-06-13 03:23:50 +0000565"netware-libc-bsdsock", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
Richard Levitte9e5b3782005-06-05 21:47:19 +0000566"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}::",
Dr. Stephen Hensoneef0c1f2008-01-03 22:43:04 +0000567"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}::",
Richard Levitte4d8743f2003-11-28 13:10:58 +0000568
Richard Levitte451dc182002-06-13 20:42:35 +0000569# DJGPP
Andy Polyakovdab62932008-11-12 08:21:20 +0000570"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:",
Richard Levitte451dc182002-06-13 20:42:35 +0000571
Ulf Möller22a4f961999-04-19 13:54:11 +0000572# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
Lutz Jänicke9314e362002-12-10 18:48:14 +0000573"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
Richard Levittee774a322005-06-05 22:19:24 +0000574"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::BN_LLONG::::",
Ulf Möller22a4f961999-04-19 13:54:11 +0000575# K&R C is no longer supported; you need gcc on old Ultrix installations
Richard Levittecf1b7d92001-02-19 16:06:34 +0000576##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::",
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +0000577
Richard Levitte9b7a5522000-12-01 01:11:54 +0000578##### MacOS X (a.k.a. Rhapsody or Darwin) setup
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000579"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::",
Andy Polyakovb4b48a12009-12-26 21:30:13 +0000580"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",
Andy Polyakovaddd6412008-01-13 22:01:30 +0000581"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",
Andy Polyakov4a5397f2011-11-12 12:16:11 +0000582"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",
Andy Polyakovdab62932008-11-12 08:21:20 +0000583"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",
Andy Polyakov3f54a742011-11-08 18:32:07 +0000584"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -DL_ENDIAN -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
Andy Polyakovaddd6412008-01-13 22:01:30 +0000585"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",
Andy Polyakova2570242011-11-08 13:02:57 +0000586# iPhoneOS/iOS
587"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",
Andy Polyakov0fad6cb2000-02-06 11:15:20 +0000588
Richard Levitte729f0a22002-10-11 14:39:03 +0000589##### A/UX
590"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
591
Richard Levitte72660f52000-09-14 12:48:48 +0000592##### Sony NEWS-OS 4.x
Richard Levittecf1b7d92001-02-19 16:06:34 +0000593"newsos4-gcc","gcc:-O -DB_ENDIAN::(unknown):NEWS4:-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::",
Richard Levitte72660f52000-09-14 12:48:48 +0000594
Richard Levitte10a29752001-01-11 12:58:37 +0000595##### GNU Hurd
Nils Larscha1368622005-06-12 10:34:42 +0000596"hurd-x86", "gcc:-DL_ENDIAN -DTERMIOS -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",
Richard Levitte10a29752001-01-11 12:58:37 +0000597
Richard Levittedc01b6b2001-07-01 22:39:46 +0000598##### OS/2 EMX
599"OS2-EMX", "gcc::::::::",
600
Richard Levitte3e83e682002-02-14 15:37:38 +0000601##### VxWorks for various targets
Dr. Stephen Henson2f6efd62011-05-01 15:36:54 +0000602"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:::::",
603"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:::::",
Richard Levitte3e83e682002-02-14 15:37:38 +0000604"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
Richard Levitte6a89a252002-10-09 13:40:48 +0000605"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:::::",
606"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:::::",
Richard Levittec7988682003-09-28 14:06:57 +0000607"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
Dr. Stephen Henson1fb2e0f2011-10-14 17:28:10 +0000608"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:",
Andy Polyakov227a8222011-10-19 21:49:20 +0000609"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:",
Richard Levitte3e83e682002-02-14 15:37:38 +0000610
Richard Levitteb9c23cc2002-11-14 16:30:11 +0000611##### Compaq Non-Stop Kernel (Tandem)
612"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
613
Dr. Stephen Henson15c7adb2009-07-01 11:46:03 +0000614# uClinux
Andy Polyakov8a1c92c2010-04-22 21:36:26 +0000615"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'}::",
616"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'}::",
Dr. Stephen Henson15c7adb2009-07-01 11:46:03 +0000617
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000618);
619
Andy Polyakov33c3ecf2004-07-23 23:27:10 +0000620my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
Dr. Stephen Hensoneba2b512010-11-11 15:21:45 +0000621 debug-VC-WIN64I debug-VC-WIN64A
Dr. Stephen Henson71b7858b2009-05-06 16:55:55 +0000622 VC-NT VC-CE VC-WIN32 debug-VC-WIN32
Dr. Stephen Hensonef236ec2009-04-23 16:32:42 +0000623 BC-32
Dr. Stephen Hensoneef0c1f2008-01-03 22:43:04 +0000624 netware-clib netware-clib-bsdsock
625 netware-libc netware-libc-bsdsock);
Ben Laurieefadf601999-03-07 15:21:08 +0000626
Richard Levitted0d046e2002-01-27 15:52:37 +0000627my $idx = 0;
628my $idx_cc = $idx++;
629my $idx_cflags = $idx++;
630my $idx_unistd = $idx++;
631my $idx_thread_cflag = $idx++;
632my $idx_sys_id = $idx++;
633my $idx_lflags = $idx++;
634my $idx_bn_ops = $idx++;
Andy Polyakov14e21f82004-07-26 20:18:55 +0000635my $idx_cpuid_obj = $idx++;
Richard Levitted0d046e2002-01-27 15:52:37 +0000636my $idx_bn_obj = $idx++;
637my $idx_des_obj = $idx++;
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000638my $idx_aes_obj = $idx++;
Richard Levitted0d046e2002-01-27 15:52:37 +0000639my $idx_bf_obj = $idx++;
640my $idx_md5_obj = $idx++;
641my $idx_sha1_obj = $idx++;
642my $idx_cast_obj = $idx++;
643my $idx_rc4_obj = $idx++;
644my $idx_rmd160_obj = $idx++;
645my $idx_rc5_obj = $idx++;
Andy Polyakov0fbd4bf2005-12-16 11:53:31 +0000646my $idx_wp_obj = $idx++;
Andy Polyakov6a8517f2007-08-28 20:45:25 +0000647my $idx_cmll_obj = $idx++;
Andy Polyakov8a1c92c2010-04-22 21:36:26 +0000648my $idx_modes_obj = $idx++;
Andy Polyakoved28aef2011-09-06 20:45:36 +0000649my $idx_engines_obj = $idx++;
Andy Polyakovfa8e9212008-01-11 13:15:11 +0000650my $idx_perlasm_scheme = $idx++;
Richard Levitted0d046e2002-01-27 15:52:37 +0000651my $idx_dso_scheme = $idx++;
652my $idx_shared_target = $idx++;
653my $idx_shared_cflag = $idx++;
654my $idx_shared_ldflag = $idx++;
655my $idx_shared_extension = $idx++;
656my $idx_ranlib = $idx++;
Richard Levitte179add22002-08-01 20:28:16 +0000657my $idx_arflags = $idx++;
Andy Polyakovc23632d2009-02-09 15:11:22 +0000658my $idx_multilib = $idx++;
Richard Levitted0d046e2002-01-27 15:52:37 +0000659
Bodo Möllere5f30451999-04-29 21:52:08 +0000660my $prefix="";
Dr. Stephen Henson67275652009-08-10 14:48:40 +0000661my $libdir="";
Ulf Möller462ba4f1999-04-24 22:59:36 +0000662my $openssldir="";
Richard Levitte967d95f2001-04-04 15:50:30 +0000663my $exe_ext="";
Dr. Stephen Henson122276a2009-10-18 14:27:01 +0000664my $install_prefix= "$ENV{'INSTALL_PREFIX'}";
Andy Polyakovcbfb39d2006-10-21 13:38:16 +0000665my $cross_compile_prefix="";
Dr. Stephen Henson166c9cb2011-01-29 21:51:59 +0000666my $fipslibdir="/usr/local/ssl/fips-2.0/lib/";
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +0000667my $nofipscanistercheck=0;
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +0000668my $fipscanisterinternal="n";
Dr. Stephen Henson30b56222011-02-11 19:02:34 +0000669my $fipscanisteronly = 0;
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +0000670my $baseaddr="0xFB00000";
Bodo Möller5f8d5c91999-04-29 16:10:09 +0000671my $no_threads=0;
672my $threads=0;
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000673my $no_shared=0; # but "no-shared" is default
674my $zlib=1; # but "no-zlib" is default
675my $no_krb5=0; # but "no-krb5" is implied unless "--with-krb5-..." is used
Dr. Stephen Hensond137b562006-11-30 13:39:34 +0000676my $no_rfc3779=1; # but "no-rfc3779" is default
Ben Laurie1641cb61998-12-28 17:08:48 +0000677my $no_asm=0;
Geoff Thorpebc2aada2000-04-06 07:09:45 +0000678my $no_dso=0;
Dr. Stephen Henson987beba2005-04-19 13:24:44 +0000679my $no_gmp=0;
Ulf Möllerf5d7a031999-04-27 01:14:46 +0000680my @skip=();
Ben Laurie42ba5d22005-03-30 13:05:57 +0000681my $Makefile="Makefile";
Ben Laurie1641cb61998-12-28 17:08:48 +0000682my $des_locl="crypto/des/des_locl.h";
683my $des ="crypto/des/des.h";
684my $bn ="crypto/bn/bn.h";
685my $md2 ="crypto/md2/md2.h";
686my $rc4 ="crypto/rc4/rc4.h";
687my $rc4_locl="crypto/rc4/rc4_locl.h";
688my $idea ="crypto/idea/idea.h";
689my $rc2 ="crypto/rc2/rc2.h";
690my $bf ="crypto/bf/bf_locl.h";
691my $bn_asm ="bn_asm.o";
692my $des_enc="des_enc.o fcrypt_b.o";
Andy Polyakov874a3752010-07-09 12:21:52 +0000693my $aes_enc="aes_core.o aes_cbc.o";
Ben Laurie1641cb61998-12-28 17:08:48 +0000694my $bf_enc ="bf_enc.o";
695my $cast_enc="c_enc.o";
Andy Polyakov28754622007-04-01 17:01:12 +0000696my $rc4_enc="rc4_enc.o rc4_skey.o";
Ben Laurie1641cb61998-12-28 17:08:48 +0000697my $rc5_enc="rc5_enc.o";
698my $md5_obj="";
699my $sha1_obj="";
700my $rmd160_obj="";
Andy Polyakov6a8517f2007-08-28 20:45:25 +0000701my $cmll_enc="camellia.o cmll_misc.o cmll_cbc.o";
Ulf Möller2613c1f1999-03-31 12:38:27 +0000702my $processor="";
Bodo Möller03964792001-03-09 13:04:06 +0000703my $default_ranlib;
Ulf Möller99aab161999-04-01 12:34:33 +0000704my $perl;
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +0000705my $fips=0;
Ulf Möller99aab161999-04-01 12:34:33 +0000706
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000707# All of the following is disabled by default (RC5 was enabled before 0.9.8):
708
Bodo Möller7a762192008-12-02 01:21:39 +0000709my %disabled = ( # "what" => "comment" [or special keyword "experimental"]
Bodo Möller7d8bb912011-10-19 09:24:22 +0000710 "ec_nistp_64_gcc_128" => "default",
Dr. Stephen Henson987beba2005-04-19 13:24:44 +0000711 "gmp" => "default",
Bodo Möller7d8bb912011-10-19 09:24:22 +0000712 "jpake" => "experimental",
713 "md2" => "default",
714 "rc5" => "default",
Ben Laurie96ea4ae2006-11-27 14:18:05 +0000715 "rfc3779" => "default",
Dr. Stephen Henson7e159e02011-12-25 14:45:15 +0000716 "sctp" => "default",
Bodo Möller7d8bb912011-10-19 09:24:22 +0000717 "shared" => "default",
Dr. Stephen Henson93ab9e42012-06-15 12:46:09 +0000718 "ssl-trace" => "default",
Richard Levitteae3b4f22009-02-19 09:43:18 +0000719 "store" => "experimental",
Bodo Möller7d8bb912011-10-19 09:24:22 +0000720 "zlib" => "default",
721 "zlib-dynamic" => "default"
722 );
Bodo Möller7a762192008-12-02 01:21:39 +0000723my @experimental = ();
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000724
Dr. Stephen Hensonccc57842011-04-10 17:31:03 +0000725# If ssl directory missing assume truncated FIPS tarball
Dr. Stephen Henson284e2d22011-04-10 23:28:24 +0000726if (!-d "ssl")
Dr. Stephen Hensonccc57842011-04-10 17:31:03 +0000727 {
728 print STDERR "Auto Configuring fipsonly\n";
729 $fips = 1;
730 $nofipscanistercheck = 1;
731 $fipslibdir="";
732 $fipscanisterinternal="y";
733 $fipscanisteronly = 2;
734 if (! -f "crypto/bn/bn_gf2m.c" )
735 {
736 $disabled{ec2m} = "forced";
737 }
738 }
739
Bodo Möller7a762192008-12-02 01:21:39 +0000740# This is what $depflags will look like with the above defaults
741# (we need this to see if we should advise the user to run "make depend"):
Dr. Stephen Hensonfa2c72e2011-12-27 14:45:32 +0000742my $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";
Bodo Möller7a762192008-12-02 01:21:39 +0000743
744# Explicit "no-..." options will be collected in %disabled along with the defaults.
745# To remove something from %disabled, use "enable-foo" (unless it's experimental).
746# For symmetry, "disable-foo" is a synonym for "no-foo".
747
748# For features called "experimental" here, a more explicit "experimental-foo" is needed to enable.
749# We will collect such requests in @experimental.
750# To avoid accidental use of experimental features, applications will have to use -DOPENSSL_EXPERIMENTAL_FOO.
Bodo Möllerab185b62005-03-13 19:46:58 +0000751
752
Andy Polyakovd0590fe2004-07-18 16:19:34 +0000753my $no_sse2=0;
Richard Levitteb6e4dac2001-11-27 11:48:30 +0000754
Ulf Möller462ba4f1999-04-24 22:59:36 +0000755&usage if ($#ARGV < 0);
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000756
Richard Levittec59cb512000-08-17 10:23:45 +0000757my $flags;
758my $depflags;
Bodo Möller7a762192008-12-02 01:21:39 +0000759my $openssl_experimental_defines;
Richard Levittec59cb512000-08-17 10:23:45 +0000760my $openssl_algorithm_defines;
761my $openssl_thread_defines;
Richard Levittecf1b7d92001-02-19 16:06:34 +0000762my $openssl_sys_defines="";
Richard Levittec59cb512000-08-17 10:23:45 +0000763my $openssl_other_defines;
764my $libs;
Richard Levittec1269c82003-02-14 13:12:00 +0000765my $libkrb5="";
Richard Levittec59cb512000-08-17 10:23:45 +0000766my $target;
767my $options;
768my $symlink;
Richard Levitte451dc182002-06-13 20:42:35 +0000769my $make_depend=0;
Richard Levittef9b3bff2000-11-30 22:53:34 +0000770my %withargs=();
Richard Levittec59cb512000-08-17 10:23:45 +0000771
772my @argvcopy=@ARGV;
773my $argvstring="";
774my $argv_unprocessed=1;
775
776while($argv_unprocessed)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000777 {
Richard Levittec59cb512000-08-17 10:23:45 +0000778 $flags="";
779 $depflags="";
Bodo Möller7a762192008-12-02 01:21:39 +0000780 $openssl_experimental_defines="";
Richard Levittec59cb512000-08-17 10:23:45 +0000781 $openssl_algorithm_defines="";
782 $openssl_thread_defines="";
Richard Levittecf1b7d92001-02-19 16:06:34 +0000783 $openssl_sys_defines="";
Richard Levittec59cb512000-08-17 10:23:45 +0000784 $openssl_other_defines="";
785 $libs="";
786 $target="";
787 $options="";
788 $symlink=1;
789
790 $argv_unprocessed=0;
791 $argvstring=join(' ',@argvcopy);
792
793PROCESS_ARGS:
794 foreach (@argvcopy)
Ulf Möllerf5d7a031999-04-27 01:14:46 +0000795 {
Richard Levittec59cb512000-08-17 10:23:45 +0000796 s /^-no-/no-/; # some people just can't read the instructions
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000797
798 # rewrite some options in "enable-..." form
799 s /^-?-?shared$/enable-shared/;
Dr. Stephen Henson7e159e02011-12-25 14:45:15 +0000800 s /^sctp$/enable-sctp/;
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000801 s /^threads$/enable-threads/;
802 s /^zlib$/enable-zlib/;
803 s /^zlib-dynamic$/enable-zlib-dynamic/;
804
805 if (/^no-(.+)$/ || /^disable-(.+)$/)
806 {
Bodo Möller7a762192008-12-02 01:21:39 +0000807 if (!($disabled{$1} eq "experimental"))
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000808 {
Bodo Möller7a762192008-12-02 01:21:39 +0000809 if ($1 eq "ssl")
810 {
811 $disabled{"ssl2"} = "option(ssl)";
812 $disabled{"ssl3"} = "option(ssl)";
813 }
814 elsif ($1 eq "tls")
815 {
816 $disabled{"tls1"} = "option(tls)"
817 }
818 else
819 {
820 $disabled{$1} = "option";
821 }
822 }
823 }
824 elsif (/^enable-(.+)$/ || /^experimental-(.+)$/)
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000825 {
Bodo Möller7a762192008-12-02 01:21:39 +0000826 my $algo = $1;
827 if ($disabled{$algo} eq "experimental")
828 {
829 die "You are requesting an experimental feature; please say 'experimental-$algo' if you are sure\n"
830 unless (/^experimental-/);
831 push @experimental, $algo;
832 }
833 delete $disabled{$algo};
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000834
Bodo Möller7a762192008-12-02 01:21:39 +0000835 $threads = 1 if ($algo eq "threads");
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000836 }
837 elsif (/^--test-sanity$/)
Richard Levitted0d046e2002-01-27 15:52:37 +0000838 {
839 exit(&test_sanity());
840 }
Dr. Stephen Henson0c28f272009-09-09 16:31:32 +0000841 elsif (/^--strict-warnings/)
842 {
843 $strict_warnings = 1;
844 }
Richard Levittec59cb512000-08-17 10:23:45 +0000845 elsif (/^reconfigure/ || /^reconf/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000846 {
Richard Levittec59cb512000-08-17 10:23:45 +0000847 if (open(IN,"<$Makefile"))
848 {
849 while (<IN>)
850 {
Richard Levitte67475a72006-04-03 09:15:15 +0000851 chomp;
Richard Levittec59cb512000-08-17 10:23:45 +0000852 if (/^CONFIGURE_ARGS=(.*)/)
853 {
854 $argvstring=$1;
855 @argvcopy=split(' ',$argvstring);
856 die "Incorrect data to reconfigure, please do a normal configuration\n"
857 if (grep(/^reconf/,@argvcopy));
858 print "Reconfiguring with: $argvstring\n";
859 $argv_unprocessed=1;
860 close(IN);
861 last PROCESS_ARGS;
862 }
863 }
864 close(IN);
865 }
866 die "Insufficient data to reconfigure, please do a normal configuration\n";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000867 }
Richard Levittec59cb512000-08-17 10:23:45 +0000868 elsif (/^386$/)
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000869 { $processor=386; }
Dr. Stephen Henson9fdb2cc2011-01-30 00:01:09 +0000870 elsif (/^fips$/)
871 {
872 $fips=1;
Bodo Möller7d8bb912011-10-19 09:24:22 +0000873 }
Richard Levittec59cb512000-08-17 10:23:45 +0000874 elsif (/^rsaref$/)
Ralf S. Engelschall3eb0ed61999-03-06 14:35:03 +0000875 {
Richard Levitteccb96432000-11-08 17:51:37 +0000876 # No RSAref support any more since it's not needed.
877 # The check for the option is there so scripts aren't
878 # broken
Ulf Möller462ba4f1999-04-24 22:59:36 +0000879 }
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +0000880 elsif (/^nofipscanistercheck$/)
881 {
882 $fips = 1;
883 $nofipscanistercheck = 1;
884 }
Dr. Stephen Hensonb2348482011-06-16 16:27:36 +0000885 elsif (/^fipscheck$/)
886 {
887 if ($fipscanisteronly != 2)
888 {
889 print STDERR <<"EOF";
890ERROR: FIPS not autodetected. Not running from restricted tarball??
891EOF
892 exit(1);
893 }
894 }
Dr. Stephen Henson30b56222011-02-11 19:02:34 +0000895 elsif (/^fipscanisteronly$/)
896 {
897 $fips = 1;
898 $nofipscanistercheck = 1;
899 $fipslibdir="";
900 $fipscanisterinternal="y";
901 $fipscanisteronly = 1;
902 }
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +0000903 elsif (/^fipscanisterbuild$/)
904 {
905 $fips = 1;
906 $nofipscanistercheck = 1;
907 $fipslibdir="";
908 $fipscanisterinternal="y";
Dr. Stephen Hensonce025892011-06-22 12:30:18 +0000909 $fipscanisteronly = 1;
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +0000910 }
Richard Levittec59cb512000-08-17 10:23:45 +0000911 elsif (/^[-+]/)
Ulf Möller462ba4f1999-04-24 22:59:36 +0000912 {
Andy Polyakovd719e602005-12-16 11:29:19 +0000913 if (/^-[lL](.*)$/ or /^-Wl,/)
Richard Levittec59cb512000-08-17 10:23:45 +0000914 {
915 $libs.=$_." ";
916 }
917 elsif (/^-[^-]/ or /^\+/)
918 {
Andy Polyakovf6666ad2011-11-08 12:45:00 +0000919 $_ =~ s/%([0-9a-f]{1,2})/chr(hex($1))/gei;
Richard Levittec59cb512000-08-17 10:23:45 +0000920 $flags.=$_." ";
921 }
922 elsif (/^--prefix=(.*)$/)
923 {
924 $prefix=$1;
925 }
Dr. Stephen Henson67275652009-08-10 14:48:40 +0000926 elsif (/^--libdir=(.*)$/)
927 {
928 $libdir=$1;
929 }
Richard Levittec59cb512000-08-17 10:23:45 +0000930 elsif (/^--openssldir=(.*)$/)
931 {
932 $openssldir=$1;
933 }
934 elsif (/^--install.prefix=(.*)$/)
935 {
936 $install_prefix=$1;
937 }
Richard Levittef9b3bff2000-11-30 22:53:34 +0000938 elsif (/^--with-krb5-(dir|lib|include|flavor)=(.*)$/)
939 {
940 $withargs{"krb5-".$1}=$2;
941 }
Dr. Stephen Henson1291dfd2005-12-06 13:36:59 +0000942 elsif (/^--with-zlib-lib=(.*)$/)
Dr. Stephen Hensonad2695b2005-12-05 13:46:46 +0000943 {
Dr. Stephen Henson1291dfd2005-12-06 13:36:59 +0000944 $withargs{"zlib-lib"}=$1;
945 }
946 elsif (/^--with-zlib-include=(.*)$/)
947 {
948 $withargs{"zlib-include"}="-I$1";
Dr. Stephen Hensonad2695b2005-12-05 13:46:46 +0000949 }
Dr. Stephen Hensoncc8bd542011-01-29 23:45:02 +0000950 elsif (/^--with-fipslibdir=(.*)$/)
951 {
952 $fipslibdir="$1/";
953 }
954 elsif (/^--with-baseaddr=(.*)$/)
955 {
956 $baseaddr="$1";
957 }
Andy Polyakovcbfb39d2006-10-21 13:38:16 +0000958 elsif (/^--cross-compile-prefix=(.*)$/)
959 {
960 $cross_compile_prefix=$1;
961 }
Richard Levittec59cb512000-08-17 10:23:45 +0000962 else
963 {
964 print STDERR $usage;
965 exit(1);
966 }
Ralf S. Engelschall3eb0ed61999-03-06 14:35:03 +0000967 }
Richard Levittec59cb512000-08-17 10:23:45 +0000968 elsif ($_ =~ /^([^:]+):(.+)$/)
Bodo Möllere5f30451999-04-29 21:52:08 +0000969 {
Richard Levittec59cb512000-08-17 10:23:45 +0000970 eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string
971 $target=$1;
Bodo Möllere5f30451999-04-29 21:52:08 +0000972 }
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000973 else
974 {
Richard Levittea761b892005-06-13 02:39:05 +0000975 die "target already defined - $target (offending arg: $_)\n" if ($target ne "");
Richard Levittec59cb512000-08-17 10:23:45 +0000976 $target=$_;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000977 }
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000978
979 unless ($_ eq $target || /^no-/ || /^disable-/)
980 {
981 # "no-..." follows later after implied disactivations
982 # have been derived. (Don't take this too seroiusly,
983 # we really only write OPTIONS to the Makefile out of
984 # nostalgia.)
985
986 if ($options eq "")
987 { $options = $_; }
988 else
989 { $options .= " ".$_; }
Richard Levittec59cb512000-08-17 10:23:45 +0000990 }
Bodo Möllerfbabb751999-07-09 12:00:34 +0000991 }
992 }
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +0000993
Richard Levitteb6e4dac2001-11-27 11:48:30 +0000994
Richard Levitteb6e4dac2001-11-27 11:48:30 +0000995
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000996if ($processor eq "386")
Richard Levitteb6e4dac2001-11-27 11:48:30 +0000997 {
Bodo Möllerc9a112f2005-02-22 10:29:51 +0000998 $disabled{"sse2"} = "forced";
Richard Levitteb6e4dac2001-11-27 11:48:30 +0000999 }
1000
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001001if (!defined($withargs{"krb5-flavor"}) || $withargs{"krb5-flavor"} eq "")
Richard Levitteb6e4dac2001-11-27 11:48:30 +00001002 {
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001003 $disabled{"krb5"} = "krb5-flavor not specified";
Richard Levitteb6e4dac2001-11-27 11:48:30 +00001004 }
1005
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001006if (!defined($disabled{"zlib-dynamic"}))
Richard Levitteb6e4dac2001-11-27 11:48:30 +00001007 {
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001008 # "zlib-dynamic" was specifically enabled, so enable "zlib"
1009 delete $disabled{"zlib"};
Richard Levitteb6e4dac2001-11-27 11:48:30 +00001010 }
1011
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001012if (defined($disabled{"rijndael"}))
1013 {
1014 $disabled{"aes"} = "forced";
1015 }
1016if (defined($disabled{"des"}))
1017 {
1018 $disabled{"mdc2"} = "forced";
1019 }
1020if (defined($disabled{"ec"}))
1021 {
1022 $disabled{"ecdsa"} = "forced";
1023 $disabled{"ecdh"} = "forced";
1024 }
1025
1026# SSL 2.0 requires MD5 and RSA
1027if (defined($disabled{"md5"}) || defined($disabled{"rsa"}))
1028 {
1029 $disabled{"ssl2"} = "forced";
1030 }
1031
1032# SSL 3.0 and TLS requires MD5 and SHA and either RSA or DSA+DH
1033if (defined($disabled{"md5"}) || defined($disabled{"sha"})
1034 || (defined($disabled{"rsa"})
1035 && (defined($disabled{"dsa"}) || defined($disabled{"dh"}))))
1036 {
1037 $disabled{"ssl3"} = "forced";
1038 $disabled{"tls1"} = "forced";
1039 }
1040
Bodo Möllerf1fd4542006-01-03 03:27:19 +00001041if (defined($disabled{"tls1"}))
1042 {
1043 $disabled{"tlsext"} = "forced";
1044 }
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001045
Dr. Stephen Hensond4f03392009-04-26 22:18:22 +00001046if (defined($disabled{"ec"}) || defined($disabled{"dsa"})
1047 || defined($disabled{"dh"}))
Dr. Stephen Hensonef236ec2009-04-23 16:32:42 +00001048 {
1049 $disabled{"gost"} = "forced";
1050 }
1051
Dr. Stephen Hensone2ca32f2012-01-05 00:07:46 +00001052# SRP and HEARTBEATS require TLSEXT
Ben Laurieedc032b2011-03-12 17:01:19 +00001053if (defined($disabled{"tlsext"}))
1054 {
1055 $disabled{"srp"} = "forced";
Dr. Stephen Hensone2ca32f2012-01-05 00:07:46 +00001056 $disabled{"heartbeats"} = "forced";
Ben Laurieedc032b2011-03-12 17:01:19 +00001057 }
1058
Bodo Möller436a3761999-05-28 23:18:51 +00001059if ($target eq "TABLE") {
1060 foreach $target (sort keys %table) {
1061 print_table_entry($target);
1062 }
Bodo Möller436a3761999-05-28 23:18:51 +00001063 exit 0;
1064}
1065
Ulf Möller10a926c2000-02-21 00:55:45 +00001066if ($target eq "LIST") {
1067 foreach (sort keys %table) {
1068 print;
1069 print "\n";
1070 }
1071 exit 0;
1072}
1073
Richard Levitte49e04542002-02-14 12:28:24 +00001074if ($target =~ m/^CygWin32(-.*)$/) {
1075 $target = "Cygwin".$1;
1076}
1077
Richard Levittec59cb512000-08-17 10:23:45 +00001078print "Configuring for $target\n";
1079
Ulf Möller462ba4f1999-04-24 22:59:36 +00001080&usage if (!defined($table{$target}));
1081
Dr. Stephen Henson9fdb2cc2011-01-30 00:01:09 +00001082if ($fips)
1083 {
1084 delete $disabled{"shared"} if ($disabled{"shared"} eq "default");
1085 }
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001086
1087foreach (sort (keys %disabled))
1088 {
1089 $options .= " no-$_";
1090
1091 printf " no-%-12s %-10s", $_, "[$disabled{$_}]";
1092
1093 if (/^dso$/)
1094 { $no_dso = 1; }
1095 elsif (/^threads$/)
1096 { $no_threads = 1; }
1097 elsif (/^shared$/)
1098 { $no_shared = 1; }
1099 elsif (/^zlib$/)
1100 { $zlib = 0; }
Dr. Stephen Hensonfbf002b2005-11-06 17:58:26 +00001101 elsif (/^static-engine$/)
1102 { }
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001103 elsif (/^zlib-dynamic$/)
1104 { }
1105 elsif (/^symlinks$/)
1106 { $symlink = 0; }
1107 elsif (/^sse2$/)
1108 { $no_sse2 = 1; }
1109 else
1110 {
1111 my ($ALGO, $algo);
Richard Levitte30fafde2011-03-25 09:29:46 +00001112 ($ALGO = $algo = $_) =~ tr/[\-a-z]/[_A-Z]/;
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001113
1114 if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/)
1115 {
1116 $openssl_other_defines .= "#define OPENSSL_NO_$ALGO\n";
1117 print " OPENSSL_NO_$ALGO";
1118
Andy Polyakov5df70a92005-06-22 23:44:44 +00001119 if (/^err$/) { $flags .= "-DOPENSSL_NO_ERR "; }
1120 elsif (/^asm$/) { $no_asm = 1; }
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001121 }
1122 else
1123 {
1124 $openssl_algorithm_defines .= "#define OPENSSL_NO_$ALGO\n";
1125 print " OPENSSL_NO_$ALGO";
1126
1127 if (/^krb5$/)
1128 { $no_krb5 = 1; }
1129 else
1130 {
1131 push @skip, $algo;
Andy Polyakovce0ed3b2012-03-03 13:17:47 +00001132 # fix-up crypto/directory name(s)
1133 @skip[$#skip]="whrlpool" if $algo eq "whirlpool";
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001134 print " (skip dir)";
Bodo Möllerab185b62005-03-13 19:46:58 +00001135
Bodo Möller7a762192008-12-02 01:21:39 +00001136 $depflags .= " -DOPENSSL_NO_$ALGO";
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001137 }
1138 }
1139 }
1140
1141 print "\n";
1142 }
1143
Bodo Möller7a762192008-12-02 01:21:39 +00001144my $exp_cflags = "";
Dr. Stephen Hensonccc57842011-04-10 17:31:03 +00001145
Bodo Möller7a762192008-12-02 01:21:39 +00001146foreach (sort @experimental)
1147 {
1148 my $ALGO;
1149 ($ALGO = $_) =~ tr/[a-z]/[A-Z]/;
1150
1151 # opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined
1152 $openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n";
1153 $exp_cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO";
1154 }
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001155
Richard Levitte4d8743f2003-11-28 13:10:58 +00001156my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
Dr. Stephen Hensona1e464f1999-04-25 20:57:09 +00001157
Andy Polyakov9be54812008-11-03 21:15:07 +00001158$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/);
Dr. Stephen Hensoneef0c1f2008-01-03 22:43:04 +00001159$exe_ext=".nlm" if ($target =~ /netware/);
Andy Polyakovd0590fe2004-07-18 16:19:34 +00001160$exe_ext=".pm" if ($target =~ /vos/);
Dr. Stephen Henson0c02a372011-01-29 23:05:15 +00001161if ($openssldir eq "" and $prefix eq "")
1162 {
1163 if ($fips)
1164 {
Dr. Stephen Hensona1a8a712011-06-09 21:52:44 +00001165 if (exists $ENV{FIPSDIR})
1166 {
1167 $openssldir="$ENV{FIPSDIR}";
1168 }
1169 else
1170 {
1171 $openssldir="/usr/local/ssl/fips-2.0";
1172 }
Dr. Stephen Henson0c02a372011-01-29 23:05:15 +00001173 }
1174 else
1175 {
1176 $openssldir="/usr/local/ssl";
1177 }
1178 }
Bodo Möllere5f30451999-04-29 21:52:08 +00001179$prefix=$openssldir if $prefix eq "";
Ulf Möller462ba4f1999-04-24 22:59:36 +00001180
Richard Levitte28a80032004-06-28 22:01:37 +00001181$default_ranlib= &which("ranlib") or $default_ranlib="true";
1182$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
1183 or $perl="perl";
Dr. Stephen Hensondafd8332009-10-28 13:55:44 +00001184my $make = $ENV{'MAKE'} || "make";
Richard Levitte28a80032004-06-28 22:01:37 +00001185
Dr. Stephen Henson5e4eb992011-10-19 22:34:53 +00001186my $fips_auth_key = $ENV{'FIPS_AUTH_KEY'};
1187my $fips_auth_officer = $ENV{'FIPS_AUTH_OFFICER'};
1188my $fips_auth_user = $ENV{'FIPS_AUTH_USER'};
1189
Dr. Stephen Henson34775922009-10-15 23:43:54 +00001190$cross_compile_prefix=$ENV{'CROSS_COMPILE'} if $cross_compile_prefix eq "";
Dr. Stephen Hensonf99f41c2009-10-07 16:41:14 +00001191
Ulf Möller462ba4f1999-04-24 22:59:36 +00001192chop $openssldir if $openssldir =~ /\/$/;
Dr. Stephen Hensonbc645192008-11-11 10:17:54 +00001193chop $prefix if $prefix =~ /.\/$/;
Ulf Möller462ba4f1999-04-24 22:59:36 +00001194
Bodo Möllere5f30451999-04-29 21:52:08 +00001195$openssldir=$prefix . "/ssl" if $openssldir eq "";
Richard Levitte451dc182002-06-13 20:42:35 +00001196$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001197
Ben Laurieefadf601999-03-07 15:21:08 +00001198
Richard Levitte4d8743f2003-11-28 13:10:58 +00001199print "IsMK1MF=$IsMK1MF\n";
Ben Laurieefadf601999-03-07 15:21:08 +00001200
Richard Levitted0d046e2002-01-27 15:52:37 +00001201my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1202my $cc = $fields[$idx_cc];
Ben Laurie7f625322009-01-18 12:06:37 +00001203# Allow environment CC to override compiler...
1204if($ENV{CC}) {
1205 $cc = $ENV{CC};
1206}
Richard Levitted0d046e2002-01-27 15:52:37 +00001207my $cflags = $fields[$idx_cflags];
1208my $unistd = $fields[$idx_unistd];
1209my $thread_cflag = $fields[$idx_thread_cflag];
1210my $sys_id = $fields[$idx_sys_id];
1211my $lflags = $fields[$idx_lflags];
1212my $bn_ops = $fields[$idx_bn_ops];
Andy Polyakov14e21f82004-07-26 20:18:55 +00001213my $cpuid_obj = $fields[$idx_cpuid_obj];
Richard Levitted0d046e2002-01-27 15:52:37 +00001214my $bn_obj = $fields[$idx_bn_obj];
1215my $des_obj = $fields[$idx_des_obj];
Andy Polyakovd0590fe2004-07-18 16:19:34 +00001216my $aes_obj = $fields[$idx_aes_obj];
Richard Levitted0d046e2002-01-27 15:52:37 +00001217my $bf_obj = $fields[$idx_bf_obj];
Andy Polyakovd0590fe2004-07-18 16:19:34 +00001218my $md5_obj = $fields[$idx_md5_obj];
1219my $sha1_obj = $fields[$idx_sha1_obj];
Richard Levitted0d046e2002-01-27 15:52:37 +00001220my $cast_obj = $fields[$idx_cast_obj];
1221my $rc4_obj = $fields[$idx_rc4_obj];
Andy Polyakovd0590fe2004-07-18 16:19:34 +00001222my $rmd160_obj = $fields[$idx_rmd160_obj];
Richard Levitted0d046e2002-01-27 15:52:37 +00001223my $rc5_obj = $fields[$idx_rc5_obj];
Andy Polyakov0fbd4bf2005-12-16 11:53:31 +00001224my $wp_obj = $fields[$idx_wp_obj];
Andy Polyakov6a8517f2007-08-28 20:45:25 +00001225my $cmll_obj = $fields[$idx_cmll_obj];
Andy Polyakov8a1c92c2010-04-22 21:36:26 +00001226my $modes_obj = $fields[$idx_modes_obj];
Andy Polyakoved28aef2011-09-06 20:45:36 +00001227my $engines_obj = $fields[$idx_engines_obj];
Andy Polyakovfa8e9212008-01-11 13:15:11 +00001228my $perlasm_scheme = $fields[$idx_perlasm_scheme];
Richard Levitted0d046e2002-01-27 15:52:37 +00001229my $dso_scheme = $fields[$idx_dso_scheme];
1230my $shared_target = $fields[$idx_shared_target];
1231my $shared_cflag = $fields[$idx_shared_cflag];
1232my $shared_ldflag = $fields[$idx_shared_ldflag];
1233my $shared_extension = $fields[$idx_shared_extension];
Dr. Stephen Henson970097a2009-10-28 14:00:29 +00001234my $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib];
1235my $ar = $ENV{'AR'} || "ar";
Richard Levitte179add22002-08-01 20:28:16 +00001236my $arflags = $fields[$idx_arflags];
Andy Polyakovc23632d2009-02-09 15:11:22 +00001237my $multilib = $fields[$idx_multilib];
Richard Levitted0d046e2002-01-27 15:52:37 +00001238
Andy Polyakovb730b032010-07-16 08:13:39 +00001239# if $prefix/lib$multilib is not an existing directory, then
1240# assume that it's not searched by linker automatically, in
1241# which case adding $multilib suffix causes more grief than
1242# we're ready to tolerate, so don't...
1243$multilib="" if !-d "$prefix/lib$multilib";
1244
Andy Polyakov6a9d28f2009-12-29 10:33:37 +00001245$libdir="lib$multilib" if $libdir eq "";
1246
Bodo Möller7a762192008-12-02 01:21:39 +00001247$cflags = "$cflags$exp_cflags";
1248
Andy Polyakovd6c76452007-07-31 18:24:41 +00001249# '%' in $lflags is used to split flags to "pre-" and post-flags
1250my ($prelflags,$postlflags)=split('%',$lflags);
1251if (defined($postlflags)) { $lflags=$postlflags; }
1252else { $lflags=$prelflags; undef $prelflags; }
1253
Andy Polyakovcbecd292010-11-30 22:18:02 +00001254if ($target =~ /^mingw/ && `$cc --target-help 2>&1` !~ m/\-mno\-cygwin/m)
1255 {
1256 $cflags =~ s/\-mno\-cygwin\s*//;
1257 $shared_ldflag =~ s/\-mno\-cygwin\s*//;
1258 }
1259
Richard Levitte2964ba82003-01-11 11:40:39 +00001260my $no_shared_warn=0;
Andy Polyakov14bcdb02005-01-24 15:58:25 +00001261my $no_user_cflags=0;
Richard Levitte2964ba82003-01-11 11:40:39 +00001262
Andy Polyakov14bcdb02005-01-24 15:58:25 +00001263if ($flags ne "") { $cflags="$flags$cflags"; }
1264else { $no_user_cflags=1; }
Bodo Möller5f8d5c91999-04-29 16:10:09 +00001265
Richard Levittef9b3bff2000-11-30 22:53:34 +00001266# Kerberos settings. The flavor must be provided from outside, either through
1267# the script "config" or manually.
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001268if (!$no_krb5)
Richard Levittef9b3bff2000-11-30 22:53:34 +00001269 {
Richard Levitte2a1ef752001-07-09 21:46:58 +00001270 my ($lresolv, $lpath, $lext);
Richard Levittef9b3bff2000-11-30 22:53:34 +00001271 if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/)
1272 {
Richard Levittede868e02002-11-26 09:19:17 +00001273 die "Sorry, Heimdal is currently not supported\n";
1274 }
1275 ##### HACK to force use of Heimdal.
1276 ##### WARNING: Since we don't really have adequate support for Heimdal,
1277 ##### using this will break the build. You'll have to make
1278 ##### changes to the source, and if you do, please send
1279 ##### patches to openssl-dev@openssl.org
1280 if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/)
1281 {
1282 warn "Heimdal isn't really supported. Your build WILL break\n";
Richard Levitteec716412002-11-26 15:27:05 +00001283 warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n";
Richard Levittef9b3bff2000-11-30 22:53:34 +00001284 $withargs{"krb5-dir"} = "/usr/heimdal"
1285 if $withargs{"krb5-dir"} eq "";
1286 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1287 "/lib -lgssapi -lkrb5 -lcom_err"
Dr. Stephen Hensonbf2336f2005-04-21 00:46:28 +00001288 if $withargs{"krb5-lib"} eq "" && !$IsMK1MF;
Richard Levittef9b3bff2000-11-30 22:53:34 +00001289 $cflags="-DKRB5_HEIMDAL $cflags";
1290 }
Richard Levitte2a1ef752001-07-09 21:46:58 +00001291 if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/)
Richard Levittef9b3bff2000-11-30 22:53:34 +00001292 {
1293 $withargs{"krb5-dir"} = "/usr/kerberos"
1294 if $withargs{"krb5-dir"} eq "";
1295 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1296 "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto"
Dr. Stephen Hensonbf2336f2005-04-21 00:46:28 +00001297 if $withargs{"krb5-lib"} eq "" && !$IsMK1MF;
Richard Levittef9b3bff2000-11-30 22:53:34 +00001298 $cflags="-DKRB5_MIT $cflags";
Richard Levitte2a1ef752001-07-09 21:46:58 +00001299 $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//;
1300 if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/)
1301 {
1302 $cflags="-DKRB5_MIT_OLD11 $cflags";
1303 }
Richard Levittef9b3bff2000-11-30 22:53:34 +00001304 }
Richard Levitte2a1ef752001-07-09 21:46:58 +00001305 LRESOLV:
1306 foreach $lpath ("/lib", "/usr/lib")
1307 {
1308 foreach $lext ("a", "so")
1309 {
1310 $lresolv = "$lpath/libresolv.$lext";
1311 last LRESOLV if (-r "$lresolv");
1312 $lresolv = "";
1313 }
1314 }
1315 $withargs{"krb5-lib"} .= " -lresolv"
Richard Levitte95649972002-12-19 21:55:48 +00001316 if ("$lresolv" ne "");
Richard Levittef9b3bff2000-11-30 22:53:34 +00001317 $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include"
Richard Levitte2a1ef752001-07-09 21:46:58 +00001318 if $withargs{"krb5-include"} eq "" &&
1319 $withargs{"krb5-dir"} ne "";
Richard Levittef9b3bff2000-11-30 22:53:34 +00001320 }
1321
Geoff Thorpebc2aada2000-04-06 07:09:45 +00001322# The DSO code currently always implements all functions so that no
1323# applications will have to worry about that from a compilation point
1324# of view. However, the "method"s may return zero unless that platform
1325# has support compiled in for them. Currently each method is enabled
1326# by a define "DSO_<name>" ... we translate the "dso_scheme" config
1327# string entry into using the following logic;
Geoff Thorpeeca57e92000-04-06 11:56:45 +00001328my $dso_cflags;
Geoff Thorpebc2aada2000-04-06 07:09:45 +00001329if (!$no_dso && $dso_scheme ne "")
1330 {
Geoff Thorpe9ec01262000-04-04 22:32:19 +00001331 $dso_scheme =~ tr/[a-z]/[A-Z]/;
Geoff Thorpebc2aada2000-04-06 07:09:45 +00001332 if ($dso_scheme eq "DLFCN")
1333 {
Geoff Thorpeeca57e92000-04-06 11:56:45 +00001334 $dso_cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H";
Geoff Thorpebc2aada2000-04-06 07:09:45 +00001335 }
1336 elsif ($dso_scheme eq "DLFCN_NO_H")
1337 {
Geoff Thorpeeca57e92000-04-06 11:56:45 +00001338 $dso_cflags = "-DDSO_DLFCN";
Geoff Thorpebc2aada2000-04-06 07:09:45 +00001339 }
1340 else
1341 {
Geoff Thorpeeca57e92000-04-06 11:56:45 +00001342 $dso_cflags = "-DDSO_$dso_scheme";
Geoff Thorpebc2aada2000-04-06 07:09:45 +00001343 }
Geoff Thorpeeca57e92000-04-06 11:56:45 +00001344 $cflags = "$dso_cflags $cflags";
Geoff Thorpebc2aada2000-04-06 07:09:45 +00001345 }
Geoff Thorpe9ec01262000-04-04 22:32:19 +00001346
Bodo Möller5f8d5c91999-04-29 16:10:09 +00001347my $thread_cflags;
Richard Levittefb044c52000-02-18 09:11:37 +00001348my $thread_defines;
Bodo Möller5f8d5c91999-04-29 16:10:09 +00001349if ($thread_cflag ne "(unknown)" && !$no_threads)
1350 {
1351 # If we know how to do it, support threads by default.
1352 $threads = 1;
1353 }
Andy Polyakov14bcdb02005-01-24 15:58:25 +00001354if ($thread_cflag eq "(unknown)" && $threads)
Bodo Möller5f8d5c91999-04-29 16:10:09 +00001355 {
Andy Polyakov14bcdb02005-01-24 15:58:25 +00001356 # If the user asked for "threads", [s]he is also expected to
1357 # provide any system-dependent compiler options that are
1358 # necessary.
1359 if ($no_user_cflags)
1360 {
1361 print "You asked for multi-threading support, but didn't\n";
1362 print "provide any system-specific compiler options\n";
1363 exit(1);
1364 }
Richard Levittecf1b7d92001-02-19 16:06:34 +00001365 $thread_cflags="-DOPENSSL_THREADS $cflags" ;
1366 $thread_defines .= "#define OPENSSL_THREADS\n";
Bodo Möller5f8d5c91999-04-29 16:10:09 +00001367 }
1368else
1369 {
Richard Levittecf1b7d92001-02-19 16:06:34 +00001370 $thread_cflags="-DOPENSSL_THREADS $thread_cflag $cflags";
1371 $thread_defines .= "#define OPENSSL_THREADS\n";
Bodo Möllera7b991b2000-02-24 18:19:50 +00001372# my $def;
1373# foreach $def (split ' ',$thread_cflag)
1374# {
1375# if ($def =~ s/^-D// && $def !~ /^_/)
1376# {
1377# $thread_defines .= "#define $def\n";
1378# }
1379# }
Bodo Möller5f8d5c91999-04-29 16:10:09 +00001380 }
1381
Richard Levitte95649972002-12-19 21:55:48 +00001382$lflags="$libs$lflags" if ($libs ne "");
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001383
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00001384if ($no_asm)
1385 {
Andy Polyakovac71d812008-12-16 07:26:53 +00001386 $cpuid_obj=$bn_obj=
1387 $des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj=$cmll_obj=
Andy Polyakoved28aef2011-09-06 20:45:36 +00001388 $modes_obj=$sha1_obj=$md5_obj=$rmd160_obj=$wp_obj=$engines_obj="";
Dr. Stephen Henson9fdb2cc2011-01-30 00:01:09 +00001389 $cflags=~s/\-D[BL]_ENDIAN// if ($fips);
1390 $thread_cflags=~s/\-D[BL]_ENDIAN// if ($fips);
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00001391 }
Dr. Stephen Henson03bc5002011-05-07 22:56:56 +00001392elsif (defined($disabled{ec2m}))
1393 {
1394 $bn_obj =~ s/\w+-gf2m.o//;
1395 }
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00001396
Andy Polyakov6f7ac8e2002-12-13 17:56:14 +00001397if (!$no_shared)
1398 {
1399 $cast_obj=""; # CAST assembler is not PIC
1400 }
1401
Bodo Möller5f8d5c91999-04-29 16:10:09 +00001402if ($threads)
1403 {
Andy Polyakov14bcdb02005-01-24 15:58:25 +00001404 $cflags=$thread_cflags;
Richard Levittee452de92001-07-12 09:11:14 +00001405 $openssl_thread_defines .= $thread_defines;
1406 }
1407
1408if ($zlib)
1409 {
1410 $cflags = "-DZLIB $cflags";
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001411 if (defined($disabled{"zlib-dynamic"}))
1412 {
Dr. Stephen Hensoncc7399e2009-04-07 16:33:26 +00001413 if (defined($withargs{"zlib-lib"}))
1414 {
1415 $lflags = "$lflags -L" . $withargs{"zlib-lib"} . " -lz";
1416 }
1417 else
1418 {
1419 $lflags = "$lflags -lz";
1420 }
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001421 }
1422 else
1423 {
1424 $cflags = "-DZLIB_SHARED $cflags";
1425 }
Bodo Möller5f8d5c91999-04-29 16:10:09 +00001426 }
1427
Richard Levittef4316c32000-07-24 20:36:46 +00001428# You will find shlib_mark1 and shlib_mark2 explained in Makefile.org
Richard Levittea22fb392000-10-13 15:25:06 +00001429my $shared_mark = "";
Andy Polyakov6f7ac8e2002-12-13 17:56:14 +00001430if ($shared_target eq "")
1431 {
Dr. Stephen Henson9fdb2cc2011-01-30 00:01:09 +00001432 $no_shared_warn = 1 if !$no_shared && !$fips;
Andy Polyakov6f7ac8e2002-12-13 17:56:14 +00001433 $no_shared = 1;
1434 }
1435if (!$no_shared)
Richard Levitteb436a982000-07-21 15:08:53 +00001436 {
Richard Levittea22fb392000-10-13 15:25:06 +00001437 if ($shared_cflag ne "")
1438 {
Andy Polyakov28e276f2003-01-02 23:26:46 +00001439 $cflags = "$shared_cflag -DOPENSSL_PIC $cflags";
Richard Levittea22fb392000-10-13 15:25:06 +00001440 }
Richard Levitted2dcf4f2000-10-09 00:48:30 +00001441 }
Richard Levitteb436a982000-07-21 15:08:53 +00001442
Dr. Stephen Hensonfbf002b2005-11-06 17:58:26 +00001443if (!$IsMK1MF)
Richard Levitteecd45312002-10-11 18:06:08 +00001444 {
Lutz Jänicke4c1a6e02008-04-17 10:19:16 +00001445 # add {no-}static-engine to options to allow mkdef.pl to work without extra arguments
Dr. Stephen Hensonfbf002b2005-11-06 17:58:26 +00001446 if ($no_shared)
1447 {
1448 $openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
Lutz Jänicke4c1a6e02008-04-17 10:19:16 +00001449 $options.=" static-engine";
Dr. Stephen Hensonfbf002b2005-11-06 17:58:26 +00001450 }
1451 else
1452 {
1453 $openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
Lutz Jänicke4c1a6e02008-04-17 10:19:16 +00001454 $options.=" no-static-engine";
Dr. Stephen Hensonfbf002b2005-11-06 17:58:26 +00001455 }
Richard Levitte6cb68622002-10-24 19:09:03 +00001456 }
Richard Levitteecd45312002-10-11 18:06:08 +00001457
Andy Polyakovbeef7142009-12-27 20:38:32 +00001458$cpuid_obj.=" uplink.o uplink-x86.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/);
Andy Polyakov1187ee72007-09-14 19:32:33 +00001459
Andy Polyakovc313e322007-09-16 12:23:47 +00001460#
1461# Platform fix-ups
1462#
1463if ($target =~ /\-icc$/) # Intel C compiler
Andy Polyakov1a979202004-03-28 21:27:47 +00001464 {
Andy Polyakov1187ee72007-09-14 19:32:33 +00001465 my $iccver=0;
1466 if (open(FD,"$cc -V 2>&1 |"))
1467 {
1468 while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); }
1469 close(FD);
1470 }
Andy Polyakov1a979202004-03-28 21:27:47 +00001471 if ($iccver>=8)
1472 {
1473 # Eliminate unnecessary dependency from libirc.a. This is
1474 # essential for shared library support, as otherwise
1475 # apps/openssl can end up in endless loop upon startup...
1476 $cflags.=" -Dmemcpy=__builtin_memcpy -Dmemset=__builtin_memset";
1477 }
Andy Polyakov1187ee72007-09-14 19:32:33 +00001478 if ($iccver>=9)
1479 {
1480 $cflags.=" -i-static";
1481 $cflags=~s/\-no_cpprt/-no-cpprt/;
1482 }
1483 if ($iccver>=10)
1484 {
1485 $cflags=~s/\-i\-static/-static-intel/;
1486 }
Andy Polyakov1a979202004-03-28 21:27:47 +00001487 }
1488
Andy Polyakovc313e322007-09-16 12:23:47 +00001489# Unlike other OSes (like Solaris, Linux, Tru64, IRIX) BSD run-time
1490# linkers (tested OpenBSD, NetBSD and FreeBSD) "demand" RPATH set on
1491# .so objects. Apparently application RPATH is not global and does
1492# not apply to .so linked with other .so. Problem manifests itself
1493# when libssl.so fails to load libcrypto.so. One can argue that we
1494# should engrave this into Makefile.shared rules or into BSD-* config
1495# lines above. Meanwhile let's try to be cautious and pass -rpath to
1496# linker only when --prefix is not /usr.
1497if ($target =~ /^BSD\-/)
1498 {
1499 $shared_ldflag.=" -Wl,-rpath,\$(LIBRPATH)" if ($prefix !~ m|^/usr[/]*$|);
1500 }
1501
Richard Levittecf1b7d92001-02-19 16:06:34 +00001502if ($sys_id ne "")
1503 {
Richard Levitte543105a2003-03-20 23:52:41 +00001504 #$cflags="-DOPENSSL_SYSNAME_$sys_id $cflags";
Richard Levittecf1b7d92001-02-19 16:06:34 +00001505 $openssl_sys_defines="#define OPENSSL_SYSNAME_$sys_id\n";
1506 }
1507
Bodo Möller03964792001-03-09 13:04:06 +00001508if ($ranlib eq "")
1509 {
1510 $ranlib = $default_ranlib;
1511 }
1512
Dr. Stephen Henson1750ebc1999-02-14 22:47:21 +00001513#my ($bn1)=split(/\s+/,$bn_obj);
1514#$bn1 = "" unless defined $bn1;
1515#$bn1=$bn_asm unless ($bn1 =~ /\.o$/);
1516#$bn_obj="$bn1";
1517
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001518$cpuid_obj="" if ($processor eq "386");
Andy Polyakovf8c469d2004-08-02 22:41:19 +00001519
Dr. Stephen Henson1750ebc1999-02-14 22:47:21 +00001520$bn_obj = $bn_asm unless $bn_obj ne "";
Bodo Möllerd05a4742008-05-01 18:48:20 +00001521# bn-586 is the only one implementing bn_*_part_words
1522$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn-586/);
Andy Polyakov4287ade2008-01-11 11:59:37 +00001523$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /86/);
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00001524
Bodo Möllerd05a4742008-05-01 18:48:20 +00001525$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /-mont/);
Andy Polyakov361512d2011-08-12 16:44:32 +00001526$cflags.=" -DOPENSSL_BN_ASM_MONT5" if ($bn_obj =~ /-mont5/);
Andy Polyakov925596f2011-05-05 21:57:11 +00001527$cflags.=" -DOPENSSL_BN_ASM_GF2m" if ($bn_obj =~ /-gf2m/);
Andy Polyakov5ac7bde2005-10-07 14:18:06 +00001528
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00001529if ($fips)
1530 {
1531 $openssl_other_defines.="#define OPENSSL_FIPS\n";
1532 if ($fipscanisterinternal eq "y")
1533 {
1534 $openssl_other_defines.="#define OPENSSL_FIPSCANISTER\n";
Dr. Stephen Henson1d512152011-07-22 14:20:50 +00001535 $cflags = "-DOPENSSL_FIPSCANISTER $cflags";
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00001536 }
1537 }
1538
Andy Polyakovb2dba9b2007-05-14 21:35:25 +00001539$cpuid_obj="mem_clr.o" unless ($cpuid_obj =~ /\.o$/);
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00001540$des_obj=$des_enc unless ($des_obj =~ /\.o$/);
1541$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/);
1542$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/);
1543$rc4_obj=$rc4_enc unless ($rc4_obj =~ /\.o$/);
1544$rc5_obj=$rc5_enc unless ($rc5_obj =~ /\.o$/);
1545if ($sha1_obj =~ /\.o$/)
1546 {
1547# $sha1_obj=$sha1_enc;
Andy Polyakovd0590fe2004-07-18 16:19:34 +00001548 $cflags.=" -DSHA1_ASM" if ($sha1_obj =~ /sx86/ || $sha1_obj =~ /sha1/);
1549 $cflags.=" -DSHA256_ASM" if ($sha1_obj =~ /sha256/);
1550 $cflags.=" -DSHA512_ASM" if ($sha1_obj =~ /sha512/);
Andy Polyakov69216cc2007-07-24 14:41:20 +00001551 if ($sha1_obj =~ /sse2/)
Andy Polyakovd0590fe2004-07-18 16:19:34 +00001552 { if ($no_sse2)
1553 { $sha1_obj =~ s/\S*sse2\S+//; }
1554 elsif ($cflags !~ /OPENSSL_IA32_SSE2/)
1555 { $cflags.=" -DOPENSSL_IA32_SSE2"; }
1556 }
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00001557 }
1558if ($md5_obj =~ /\.o$/)
1559 {
1560# $md5_obj=$md5_enc;
1561 $cflags.=" -DMD5_ASM";
1562 }
1563if ($rmd160_obj =~ /\.o$/)
1564 {
1565# $rmd160_obj=$rmd160_enc;
1566 $cflags.=" -DRMD160_ASM";
1567 }
Andy Polyakovd0590fe2004-07-18 16:19:34 +00001568if ($aes_obj =~ /\.o$/)
1569 {
1570 $cflags.=" -DAES_ASM";
Andy Polyakov77aae962011-11-15 12:18:40 +00001571 # aes-ctr.o is not a real file, only indication that assembler
Andy Polyakov874a3752010-07-09 12:21:52 +00001572 # module implements AES_ctr32_encrypt...
Andy Polyakov77aae962011-11-15 12:18:40 +00001573 $cflags.=" -DAES_CTR_ASM" if ($aes_obj =~ s/\s*aes\-ctr\.o//);
1574 # aes-xts.o indicates presense of AES_xts_[en|de]crypt...
1575 $cflags.=" -DAES_XTS_ASM" if ($aes_obj =~ s/\s*aes\-xts\.o//);
Dr. Stephen Henson1db4a632011-10-18 00:02:42 +00001576 $aes_obj =~ s/\s*(vpaes|aesni)\-x86\.o//g if ($no_sse2);
1577 $aes_obj =~ s/\s*(vp|bs)aes-\w*\.o//g if ($fipscanisterinternal eq "y");
Andy Polyakov8ca28da2011-09-15 20:22:59 +00001578 $cflags.=" -DVPAES_ASM" if ($aes_obj =~ m/vpaes/);
Andy Polyakov993adc02011-10-17 17:10:54 +00001579 $cflags.=" -DBSAES_ASM" if ($aes_obj =~ m/bsaes/);
Andy Polyakovd0590fe2004-07-18 16:19:34 +00001580 }
Andy Polyakov7de4b5b2005-01-09 16:01:58 +00001581else {
1582 $aes_obj=$aes_enc;
1583 }
Andy Polyakov4c5e19b2005-12-16 13:23:57 +00001584$wp_obj="" if ($wp_obj =~ /mmx/ && $processor eq "386");
Andy Polyakovce0ed3b2012-03-03 13:17:47 +00001585if ($wp_obj =~ /\.o$/ && !$disabled{"whirlpool"})
Andy Polyakoved266042005-12-16 12:55:33 +00001586 {
Andy Polyakov4c5e19b2005-12-16 13:23:57 +00001587 $cflags.=" -DWHIRLPOOL_ASM";
1588 }
1589else {
1590 $wp_obj="wp_block.o";
Andy Polyakoved266042005-12-16 12:55:33 +00001591 }
Andy Polyakov6a8517f2007-08-28 20:45:25 +00001592$cmll_obj=$cmll_enc unless ($cmll_obj =~ /.o$/);
Andy Polyakov8a1c92c2010-04-22 21:36:26 +00001593if ($modes_obj =~ /ghash/)
1594 {
1595 $cflags.=" -DGHASH_ASM";
1596 }
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001597
Richard Levitte1ed0c662002-05-30 18:06:35 +00001598# "Stringify" the C flags string. This permits it to be made part of a string
1599# and works as well on command lines.
1600$cflags =~ s/([\\\"])/\\\1/g;
1601
Ulf Möller09739101999-04-28 16:16:31 +00001602my $version = "unknown";
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00001603my $version_num = "unknown";
Ulf Möller09739101999-04-28 16:16:31 +00001604my $major = "unknown";
1605my $minor = "unknown";
Richard Levitteb436a982000-07-21 15:08:53 +00001606my $shlib_version_number = "unknown";
1607my $shlib_version_history = "unknown";
1608my $shlib_major = "unknown";
1609my $shlib_minor = "unknown";
Ulf Möller09739101999-04-28 16:16:31 +00001610
1611open(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n";
1612while (<IN>)
1613 {
1614 $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /;
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00001615 $version_num=$1 if /OPENSSL.VERSION.NUMBER.*0x(\S+)/;
Richard Levitteb436a982000-07-21 15:08:53 +00001616 $shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/;
1617 $shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/;
Ulf Möller09739101999-04-28 16:16:31 +00001618 }
1619close(IN);
Richard Levitteb436a982000-07-21 15:08:53 +00001620if ($shlib_version_history ne "") { $shlib_version_history .= ":"; }
Ulf Möller09739101999-04-28 16:16:31 +00001621
Ulf Möller1fac96e1999-05-20 17:28:19 +00001622if ($version =~ /(^[0-9]*)\.([0-9\.]*)/)
Ulf Möller09739101999-04-28 16:16:31 +00001623 {
1624 $major=$1;
1625 $minor=$2;
1626 }
1627
Richard Levitteb436a982000-07-21 15:08:53 +00001628if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/)
1629 {
1630 $shlib_major=$1;
1631 $shlib_minor=$2;
1632 }
1633
Dr. Stephen Henson0c28f272009-09-09 16:31:32 +00001634if ($strict_warnings)
1635 {
1636 my $wopt;
1637 die "ERROR --strict-warnings requires gcc" unless ($cc =~ /gcc$/);
1638 foreach $wopt (split /\s+/, $gcc_devteam_warn)
1639 {
1640 $cflags .= " $wopt" unless ($cflags =~ /$wopt/)
1641 }
1642 }
1643
Dr. Stephen Henson5e4eb992011-10-19 22:34:53 +00001644if ($fipscanisterinternal eq "y")
1645 {
1646 open(IN,"<fips/fips_auth.in") || die "can't open fips_auth.in";
1647 open(OUT,">fips/fips_auth.h") || die "can't open fips_auth.h";
1648 while(<IN>)
1649 {
1650 s/FIPS_AUTH_KEY.*$/FIPS_AUTH_KEY $fips_auth_key/ if defined $fips_auth_key;
1651 s/FIPS_AUTH_CRYPTO_OFFICER.*$/FIPS_AUTH_CRYPTO_OFFICER $fips_auth_officer/ if defined $fips_auth_officer;
1652 s/FIPS_AUTH_CRYPTO_USER.*$/FIPS_AUTH_CRYPTO_USER $fips_auth_user/ if defined $fips_auth_user;
1653 print OUT $_;
1654 }
1655 close IN;
1656 close OUT;
1657 }
1658
Dr. Stephen Henson30b56222011-02-11 19:02:34 +00001659my $mforg = $fipscanisteronly ? "Makefile.fips" : "Makefile.org";
1660
1661open(IN,"<$mforg") || die "unable to read $mforg:$!\n";
Richard Levittec2aa4f22002-07-16 08:53:32 +00001662unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
1663open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
Dr. Stephen Henson223ef1d2011-02-17 15:35:43 +00001664print OUT "### Generated automatically from $mforg by Configure.\n\n";
Ulf Möllerf5d7a031999-04-27 01:14:46 +00001665my $sdirs=0;
Dr. Stephen Hensonedd4d402011-08-23 23:35:30 +00001666
1667if ($fipscanisteronly)
1668 {
1669 $aes_obj =~ s/aesni-sha1-x86_64.o//;
1670 $bn_obj =~ s/modexp512-x86_64.o//;
1671 }
1672
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001673while (<IN>)
1674 {
Richard Levitte67475a72006-04-03 09:15:15 +00001675 chomp;
Ulf Möllerf5d7a031999-04-27 01:14:46 +00001676 $sdirs = 1 if /^SDIRS=/;
Ulf Möllerf5d7a031999-04-27 01:14:46 +00001677 if ($sdirs) {
1678 my $dir;
1679 foreach $dir (@skip) {
Dr. Stephen Hensoned551cd2008-11-12 17:28:18 +00001680 s/(\s)$dir /$1/;
1681 s/\s$dir$//;
Ulf Möllerf5d7a031999-04-27 01:14:46 +00001682 }
1683 }
Ulf Möllerf6f04201999-07-16 00:49:51 +00001684 $sdirs = 0 unless /\\$/;
Dr. Stephen Henson7e23e852011-01-29 21:39:33 +00001685 s/fips // if (/^DIRS=/ && !$fips);
Dr. Stephen Hensona63bf2c2009-02-15 15:28:18 +00001686 s/engines // if (/^DIRS=/ && $disabled{"engine"});
Dr. Stephen Hensonef236ec2009-04-23 16:32:42 +00001687 s/ccgost// if (/^ENGDIRS=/ && $disabled{"gost"});
Ulf Möller09739101999-04-28 16:16:31 +00001688 s/^VERSION=.*/VERSION=$version/;
1689 s/^MAJOR=.*/MAJOR=$major/;
1690 s/^MINOR=.*/MINOR=$minor/;
Richard Levitteb436a982000-07-21 15:08:53 +00001691 s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=$shlib_version_number/;
1692 s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/;
1693 s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/;
1694 s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/;
Richard Levittea22fb392000-10-13 15:25:06 +00001695 s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
Bodo Möllere5f30451999-04-29 21:52:08 +00001696 s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
Andy Polyakovc23632d2009-02-09 15:11:22 +00001697 s/^MULTILIB=.*$/MULTILIB=$multilib/;
Ulf Möller462ba4f1999-04-24 22:59:36 +00001698 s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
Dr. Stephen Henson67275652009-08-10 14:48:40 +00001699 s/^LIBDIR=.*$/LIBDIR=$libdir/;
Bodo Möllere5f30451999-04-29 21:52:08 +00001700 s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00001701 s/^PLATFORM=.*$/PLATFORM=$target/;
Ulf Möller31ff97b1999-05-13 10:28:14 +00001702 s/^OPTIONS=.*$/OPTIONS=$options/;
Richard Levittec59cb512000-08-17 10:23:45 +00001703 s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
Andy Polyakovcbfb39d2006-10-21 13:38:16 +00001704 if ($cross_compile_prefix)
1705 {
Dr. Stephen Henson8aab3012009-10-15 13:05:04 +00001706 s/^CC=.*$/CROSS_COMPILE= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE\)$cc/;
1707 s/^AR=\s*/AR= \$\(CROSS_COMPILE\)/;
1708 s/^NM=\s*/NM= \$\(CROSS_COMPILE\)/;
1709 s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE\)/;
1710 s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE\)$cc/ if $cc eq "gcc";
Andy Polyakovcbfb39d2006-10-21 13:38:16 +00001711 }
1712 else {
1713 s/^CC=.*$/CC= $cc/;
Dr. Stephen Henson8844a692009-10-28 15:33:32 +00001714 s/^AR=\s*ar/AR= $ar/;
Andy Polyakovcbfb39d2006-10-21 13:38:16 +00001715 s/^RANLIB=.*/RANLIB= $ranlib/;
Andy Polyakov75bbf6e2008-12-19 13:35:09 +00001716 s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
Andy Polyakovcbfb39d2006-10-21 13:38:16 +00001717 }
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001718 s/^CFLAG=.*$/CFLAG= $cflags/;
Bodo Möller7a762192008-12-02 01:21:39 +00001719 s/^DEPFLAG=.*$/DEPFLAG=$depflags/;
Andy Polyakovd6c76452007-07-31 18:24:41 +00001720 s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001721 s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
Richard Levitte967d95f2001-04-04 15:50:30 +00001722 s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/;
Andy Polyakov14e21f82004-07-26 20:18:55 +00001723 s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/;
Ben Laurie06287281999-02-12 19:33:55 +00001724 s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001725 s/^DES_ENC=.*$/DES_ENC= $des_obj/;
Andy Polyakov0ddd3ea2007-08-28 21:02:38 +00001726 s/^AES_ENC=.*$/AES_ENC= $aes_obj/;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001727 s/^BF_ENC=.*$/BF_ENC= $bf_obj/;
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00001728 s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/;
1729 s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/;
1730 s/^RC5_ENC=.*$/RC5_ENC= $rc5_obj/;
1731 s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/;
1732 s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/;
1733 s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/;
Andy Polyakoved266042005-12-16 12:55:33 +00001734 s/^WP_ASM_OBJ=.*$/WP_ASM_OBJ= $wp_obj/;
Andy Polyakov6a8517f2007-08-28 20:45:25 +00001735 s/^CMLL_ENC=.*$/CMLL_ENC= $cmll_obj/;
Andy Polyakov8a1c92c2010-04-22 21:36:26 +00001736 s/^MODES_ASM_OBJ.=*$/MODES_ASM_OBJ= $modes_obj/;
Andy Polyakoved28aef2011-09-06 20:45:36 +00001737 s/^ENGINES_ASM_OBJ.=*$/ENGINES_ASM_OBJ= $engines_obj/;
Andy Polyakovfa8e9212008-01-11 13:15:11 +00001738 s/^PERLASM_SCHEME=.*$/PERLASM_SCHEME= $perlasm_scheme/;
Ulf Möller2613c1f1999-03-31 12:38:27 +00001739 s/^PROCESSOR=.*/PROCESSOR= $processor/;
Richard Levitte179add22002-08-01 20:28:16 +00001740 s/^ARFLAGS=.*/ARFLAGS= $arflags/;
Ulf Möller99aab161999-04-01 12:34:33 +00001741 s/^PERL=.*/PERL= $perl/;
Richard Levittef9b3bff2000-11-30 22:53:34 +00001742 s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
Richard Levittec1269c82003-02-14 13:12:00 +00001743 s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
Dr. Stephen Hensonad2695b2005-12-05 13:46:46 +00001744 s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
1745 s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00001746 s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
Dr. Stephen Hensond47d0d22011-09-14 15:20:59 +00001747 s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips;
1748 s/^SHARED_FIPS=.*/SHARED_FIPS=/;
1749 s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl/;
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00001750 s/^FIPSCANISTERINTERNAL=.*/FIPSCANISTERINTERNAL=$fipscanisterinternal/;
1751 s/^BASEADDR=.*/BASEADDR=$baseaddr/;
Richard Levitteb436a982000-07-21 15:08:53 +00001752 s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
Richard Levittea22fb392000-10-13 15:25:06 +00001753 s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
1754 s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
Richard Levitte0fd44e22000-10-21 21:24:11 +00001755 if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
1756 {
1757 my $sotmp = $1;
Richard Levitte07c08ed2002-05-30 12:16:33 +00001758 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/;
1759 }
1760 elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.dylib$/)
1761 {
1762 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.dylib/;
Richard Levitte0fd44e22000-10-21 21:24:11 +00001763 }
1764 elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
1765 {
1766 my $sotmp = $1;
1767 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
1768 }
Richard Levitte07c08ed2002-05-30 12:16:33 +00001769 elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
1770 {
1771 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/;
1772 }
Richard Levittea5595fd2002-01-02 10:30:07 +00001773 s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/;
Dr. Stephen Hensonce025892011-06-22 12:30:18 +00001774 if ($fipscanisteronly && exists $disabled{"ec2m"})
Dr. Stephen Henson45826262011-04-10 18:30:13 +00001775 {
1776 next if (/ec2_/ || /bn_gf2m/);
1777 }
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001778 print OUT $_."\n";
1779 }
1780close(IN);
1781close(OUT);
Richard Levittec2aa4f22002-07-16 08:53:32 +00001782rename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e $Makefile;
1783rename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n";
Ben Laurief2d4be31998-12-28 22:05:44 +00001784
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00001785print "CC =$cc\n";
1786print "CFLAG =$cflags\n";
1787print "EX_LIBS =$lflags\n";
Andy Polyakovb7efa562005-01-24 14:38:14 +00001788print "CPUID_OBJ =$cpuid_obj\n";
Ben Laurie06287281999-02-12 19:33:55 +00001789print "BN_ASM =$bn_obj\n";
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00001790print "DES_ENC =$des_obj\n";
Andy Polyakov0ddd3ea2007-08-28 21:02:38 +00001791print "AES_ENC =$aes_obj\n";
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00001792print "BF_ENC =$bf_obj\n";
1793print "CAST_ENC =$cast_obj\n";
1794print "RC4_ENC =$rc4_obj\n";
1795print "RC5_ENC =$rc5_obj\n";
1796print "MD5_OBJ_ASM =$md5_obj\n";
1797print "SHA1_OBJ_ASM =$sha1_obj\n";
1798print "RMD160_OBJ_ASM=$rmd160_obj\n";
Andy Polyakov8a1c92c2010-04-22 21:36:26 +00001799print "CMLL_ENC =$cmll_obj\n";
1800print "MODES_OBJ =$modes_obj\n";
Andy Polyakoved28aef2011-09-06 20:45:36 +00001801print "ENGINES_OBJ =$engines_obj\n";
Ulf Möller2613c1f1999-03-31 12:38:27 +00001802print "PROCESSOR =$processor\n";
Ulf Möller99aab161999-04-01 12:34:33 +00001803print "RANLIB =$ranlib\n";
Richard Levitte179add22002-08-01 20:28:16 +00001804print "ARFLAGS =$arflags\n";
Ulf Möller99aab161999-04-01 12:34:33 +00001805print "PERL =$perl\n";
Richard Levittef9b3bff2000-11-30 22:53:34 +00001806print "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n"
1807 if $withargs{"krb5-include"} ne "";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001808
Ben Laurie1641cb61998-12-28 17:08:48 +00001809my $des_ptr=0;
1810my $des_risc1=0;
1811my $des_risc2=0;
1812my $des_unroll=0;
1813my $bn_ll=0;
1814my $def_int=2;
1815my $rc4_int=$def_int;
1816my $md2_int=$def_int;
1817my $idea_int=$def_int;
1818my $rc2_int=$def_int;
1819my $rc4_idx=0;
Andy Polyakov2dae04d1999-10-07 12:03:59 +00001820my $rc4_chunk=0;
Ben Laurie1641cb61998-12-28 17:08:48 +00001821my $bf_ptr=0;
1822my @type=("char","short","int","long");
1823my ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0);
Richard Levitte62dc5aa2001-03-02 10:38:19 +00001824my $export_var_as_fn=0;
Ben Laurie1641cb61998-12-28 17:08:48 +00001825
1826my $des_int;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001827
1828foreach (sort split(/\s+/,$bn_ops))
1829 {
1830 $des_ptr=1 if /DES_PTR/;
1831 $des_risc1=1 if /DES_RISC1/;
1832 $des_risc2=1 if /DES_RISC2/;
1833 $des_unroll=1 if /DES_UNROLL/;
1834 $des_int=1 if /DES_INT/;
1835 $bn_ll=1 if /BN_LLONG/;
1836 $rc4_int=0 if /RC4_CHAR/;
1837 $rc4_int=3 if /RC4_LONG/;
1838 $rc4_idx=1 if /RC4_INDEX/;
Andy Polyakov2dae04d1999-10-07 12:03:59 +00001839 $rc4_chunk=1 if /RC4_CHUNK/;
1840 $rc4_chunk=2 if /RC4_CHUNK_LL/;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001841 $md2_int=0 if /MD2_CHAR/;
1842 $md2_int=3 if /MD2_LONG/;
1843 $idea_int=1 if /IDEA_SHORT/;
1844 $idea_int=3 if /IDEA_LONG/;
1845 $rc2_int=1 if /RC2_SHORT/;
1846 $rc2_int=3 if /RC2_LONG/;
1847 $bf_ptr=1 if $_ eq "BF_PTR";
1848 $bf_ptr=2 if $_ eq "BF_PTR2";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001849 ($b64l,$b64,$b32,$b16,$b8)=(0,1,0,0,0) if /SIXTY_FOUR_BIT/;
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00001850 ($b64l,$b64,$b32,$b16,$b8)=(1,0,0,0,0) if /SIXTY_FOUR_BIT_LONG/;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001851 ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0) if /THIRTY_TWO_BIT/;
1852 ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,1,0) if /SIXTEEN_BIT/;
1853 ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/;
Richard Levitte62dc5aa2001-03-02 10:38:19 +00001854 $export_var_as_fn=1 if /EXPORT_VAR_AS_FN/;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001855 }
1856
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001857open(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n";
Richard Levittec2aa4f22002-07-16 08:53:32 +00001858unlink("crypto/opensslconf.h.new") || die "unable to remove old crypto/opensslconf.h.new:$!\n" if -e "crypto/opensslconf.h.new";
1859open(OUT,'>crypto/opensslconf.h.new') || die "unable to create crypto/opensslconf.h.new:$!\n";
Bodo Möller26dc2672000-02-18 11:15:32 +00001860print OUT "/* opensslconf.h */\n";
Richard Levittefb044c52000-02-18 09:11:37 +00001861print OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n";
Bodo Möller26dc2672000-02-18 11:15:32 +00001862
1863print OUT "/* OpenSSL was configured with the following options: */\n";
Richard Levitte5031a892001-02-22 17:36:41 +00001864my $openssl_algorithm_defines_trans = $openssl_algorithm_defines;
Bodo Möller7a762192008-12-02 01:21:39 +00001865$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;
Richard Levitte5031a892001-02-22 17:36:41 +00001866$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n# define $1\n# endif/mg;
Richard Levittecf1b7d92001-02-19 16:06:34 +00001867$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
Bodo Möllerfb77c6f2000-02-18 21:08:37 +00001868$openssl_algorithm_defines = " /* no ciphers excluded */\n" if $openssl_algorithm_defines eq "";
Richard Levittecf1b7d92001-02-19 16:06:34 +00001869$openssl_thread_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1870$openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1871$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1872print OUT $openssl_sys_defines;
Ben Laurie75e98d02001-08-03 18:45:35 +00001873print OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n";
Bodo Möller7a762192008-12-02 01:21:39 +00001874print OUT $openssl_experimental_defines;
1875print OUT "\n";
Richard Levittecf1b7d92001-02-19 16:06:34 +00001876print OUT $openssl_algorithm_defines;
Bodo Möller7a762192008-12-02 01:21:39 +00001877print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n\n";
Richard Levittecf1b7d92001-02-19 16:06:34 +00001878print OUT $openssl_thread_defines;
1879print OUT $openssl_other_defines,"\n";
Bodo Möller26dc2672000-02-18 11:15:32 +00001880
Richard Levitte5031a892001-02-22 17:36:41 +00001881print OUT "/* The OPENSSL_NO_* macros are also defined as NO_* if the application\n";
1882print OUT " asks for it. This is a transient feature that is provided for those\n";
1883print OUT " who haven't had the time to do the appropriate changes in their\n";
1884print OUT " applications. */\n";
1885print OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n";
1886print OUT $openssl_algorithm_defines_trans;
1887print OUT "#endif\n\n";
1888
Andy Polyakovb2dba9b2007-05-14 21:35:25 +00001889print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj ne "mem_clr.o");
Andy Polyakovebaec632004-07-26 22:01:50 +00001890
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001891while (<IN>)
1892 {
Bodo Möllercd46aa41999-04-25 10:28:26 +00001893 if (/^#define\s+OPENSSLDIR/)
Geoff Thorpef9afd9f2008-07-10 20:08:47 +00001894 {
1895 my $foo = $openssldir;
1896 $foo =~ s/\\/\\\\/g;
1897 print OUT "#define OPENSSLDIR \"$foo\"\n";
1898 }
Geoff Thorpe90819802004-06-01 03:18:58 +00001899 elsif (/^#define\s+ENGINESDIR/)
Geoff Thorpef9afd9f2008-07-10 20:08:47 +00001900 {
Andy Polyakov6a9d28f2009-12-29 10:33:37 +00001901 my $foo = "$prefix/$libdir/engines";
Geoff Thorpef9afd9f2008-07-10 20:08:47 +00001902 $foo =~ s/\\/\\\\/g;
1903 print OUT "#define ENGINESDIR \"$foo\"\n";
1904 }
Richard Levitte62dc5aa2001-03-02 10:38:19 +00001905 elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
1906 { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
1907 if $export_var_as_fn;
1908 printf OUT "#%s OPENSSL_EXPORT_VAR_AS_FUNCTION\n",
1909 ($export_var_as_fn)?"define":"undef"; }
Bodo Möllere766a681999-06-09 13:23:38 +00001910 elsif (/^#define\s+OPENSSL_UNISTD/)
1911 {
1912 $unistd = "<unistd.h>" if $unistd eq "";
1913 print OUT "#define OPENSSL_UNISTD $unistd\n";
1914 }
Ulf Möller462ba4f1999-04-24 22:59:36 +00001915 elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001916 { printf OUT "#%s SIXTY_FOUR_BIT_LONG\n",($b64l)?"define":"undef"; }
1917 elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT/)
1918 { printf OUT "#%s SIXTY_FOUR_BIT\n",($b64)?"define":"undef"; }
1919 elsif (/^#((define)|(undef))\s+THIRTY_TWO_BIT/)
1920 { printf OUT "#%s THIRTY_TWO_BIT\n",($b32)?"define":"undef"; }
1921 elsif (/^#((define)|(undef))\s+SIXTEEN_BIT/)
1922 { printf OUT "#%s SIXTEEN_BIT\n",($b16)?"define":"undef"; }
1923 elsif (/^#((define)|(undef))\s+EIGHT_BIT/)
1924 { printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; }
1925 elsif (/^#((define)|(undef))\s+BN_LLONG\s*$/)
1926 { printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; }
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001927 elsif (/^\#define\s+DES_LONG\s+.*/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001928 { printf OUT "#define DES_LONG unsigned %s\n",
1929 ($des_int)?'int':'long'; }
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001930 elsif (/^\#(define|undef)\s+DES_PTR/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001931 { printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; }
1932 elsif (/^\#(define|undef)\s+DES_RISC1/)
1933 { printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; }
1934 elsif (/^\#(define|undef)\s+DES_RISC2/)
1935 { printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; }
1936 elsif (/^\#(define|undef)\s+DES_UNROLL/)
1937 { printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; }
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001938 elsif (/^#define\s+RC4_INT\s/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001939 { printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; }
Andy Polyakov2dae04d1999-10-07 12:03:59 +00001940 elsif (/^#undef\s+RC4_CHUNK/)
1941 {
1942 printf OUT "#undef RC4_CHUNK\n" if $rc4_chunk==0;
1943 printf OUT "#define RC4_CHUNK unsigned long\n" if $rc4_chunk==1;
1944 printf OUT "#define RC4_CHUNK unsigned long long\n" if $rc4_chunk==2;
1945 }
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001946 elsif (/^#((define)|(undef))\s+RC4_INDEX/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001947 { printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; }
Ulf Möller8e7f9661999-05-05 00:23:53 +00001948 elsif (/^#(define|undef)\s+I386_ONLY/)
Bodo Möllerc9a112f2005-02-22 10:29:51 +00001949 { printf OUT "#%s I386_ONLY\n", ($processor eq "386")?
Ulf Möller8e7f9661999-05-05 00:23:53 +00001950 "define":"undef"; }
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001951 elsif (/^#define\s+MD2_INT\s/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001952 { printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; }
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001953 elsif (/^#define\s+IDEA_INT\s/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001954 {printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];}
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001955 elsif (/^#define\s+RC2_INT\s/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001956 {printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];}
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001957 elsif (/^#(define|undef)\s+BF_PTR/)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001958 {
1959 printf OUT "#undef BF_PTR\n" if $bf_ptr == 0;
1960 printf OUT "#define BF_PTR\n" if $bf_ptr == 1;
1961 printf OUT "#define BF_PTR2\n" if $bf_ptr == 2;
Ulf Möller8e10f2b1999-04-21 17:31:05 +00001962 }
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001963 else
1964 { print OUT $_; }
1965 }
Ulf Möller5dfc3691999-04-29 16:22:55 +00001966close(IN);
1967close(OUT);
Richard Levittec2aa4f22002-07-16 08:53:32 +00001968rename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h";
1969rename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to rename crypto/opensslconf.h.new\n";
Dr. Stephen Henson9becf661999-02-13 23:13:32 +00001970
Bodo Möllere766a681999-06-09 13:23:38 +00001971
Dr. Stephen Henson9becf661999-02-13 23:13:32 +00001972# Fix the date
1973
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001974print "SIXTY_FOUR_BIT_LONG mode\n" if $b64l;
1975print "SIXTY_FOUR_BIT mode\n" if $b64;
1976print "THIRTY_TWO_BIT mode\n" if $b32;
1977print "SIXTEEN_BIT mode\n" if $b16;
1978print "EIGHT_BIT mode\n" if $b8;
1979print "DES_PTR used\n" if $des_ptr;
1980print "DES_RISC1 used\n" if $des_risc1;
1981print "DES_RISC2 used\n" if $des_risc2;
1982print "DES_UNROLL used\n" if $des_unroll;
1983print "DES_INT used\n" if $des_int;
1984print "BN_LLONG mode\n" if $bn_ll;
1985print "RC4 uses u$type[$rc4_int]\n" if $rc4_int != $def_int;
1986print "RC4_INDEX mode\n" if $rc4_idx;
Andy Polyakov2dae04d1999-10-07 12:03:59 +00001987print "RC4_CHUNK is undefined\n" if $rc4_chunk==0;
1988print "RC4_CHUNK is unsigned long\n" if $rc4_chunk==1;
1989print "RC4_CHUNK is unsigned long long\n" if $rc4_chunk==2;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001990print "MD2 uses u$type[$md2_int]\n" if $md2_int != $def_int;
1991print "IDEA uses u$type[$idea_int]\n" if $idea_int != $def_int;
1992print "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int;
1993print "BF_PTR used\n" if $bf_ptr == 1;
1994print "BF_PTR2 used\n" if $bf_ptr == 2;
Ben Lauriecba50681999-03-07 14:05:36 +00001995
Richard Levitte4d8743f2003-11-28 13:10:58 +00001996if($IsMK1MF) {
Bodo Möller664b9981999-07-21 20:49:15 +00001997 open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h";
1998 printf OUT <<EOF;
Bodo Möller57119941999-07-29 12:57:23 +00001999#ifndef MK1MF_BUILD
2000 /* auto-generated by Configure for crypto/cversion.c:
2001 * for Unix builds, crypto/Makefile.ssl generates functional definitions;
2002 * Windows builds (and other mk1mf builds) compile cversion.c with
2003 * -DMK1MF_BUILD and use definitions added to this file by util/mk1mf.pl. */
2004 #error "Windows builds (PLATFORM=$target) use mk1mf.pl-created Makefiles"
2005#endif
Bodo Möller9e935d71999-07-09 14:04:57 +00002006EOF
Ulf Möller8e10f2b1999-04-21 17:31:05 +00002007 close(OUT);
Dr. Stephen Hensona1e464f1999-04-25 20:57:09 +00002008} else {
Dr. Stephen Hensondafd8332009-10-28 13:55:44 +00002009 my $make_command = "$make PERL=\'$perl\'";
Richard Levitte451dc182002-06-13 20:42:35 +00002010 my $make_targets = "";
2011 $make_targets .= " links" if $symlink;
Bodo Möllerab185b62005-03-13 19:46:58 +00002012 $make_targets .= " depend" if $depflags ne $default_depflags && $make_depend;
Richard Levitte1cc67fa2002-07-23 13:31:04 +00002013 $make_targets .= " gentests" if $symlink;
Richard Levitte451dc182002-06-13 20:42:35 +00002014 (system $make_command.$make_targets) == 0 or exit $?
2015 if $make_targets ne "";
Dr. Stephen Henson227437d2011-02-22 12:44:29 +00002016 if ( $fipscanisteronly )
2017 {}
2018 elsif ( $perl =~ m@^/@) {
Dr. Stephen Henson7f7f1552010-04-15 13:17:15 +00002019 &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
Bodo Möller3a4f14f2000-01-05 01:31:22 +00002020 &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
Bodo Möller288d2fb1999-05-25 22:31:49 +00002021 } else {
2022 # No path for Perl known ...
Dr. Stephen Henson7f7f1552010-04-15 13:17:15 +00002023 &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
Bodo Möller3a4f14f2000-01-05 01:31:22 +00002024 &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
Richard Levitte451dc182002-06-13 20:42:35 +00002025 }
Dr. Stephen Hensonce025892011-06-22 12:30:18 +00002026 if ($depflags ne $default_depflags && !$make_depend && !$fipscanisteronly) {
Richard Levitte451dc182002-06-13 20:42:35 +00002027 print <<EOF;
2028
Bodo Möllerab185b62005-03-13 19:46:58 +00002029Since you've disabled or enabled at least one algorithm, you need to do
2030the following before building:
Richard Levitte451dc182002-06-13 20:42:35 +00002031
2032 make depend
2033EOF
2034 }
Ulf Möller8e10f2b1999-04-21 17:31:05 +00002035}
2036
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00002037# create the ms/version32.rc file if needed
Dr. Stephen Hensoneef0c1f2008-01-03 22:43:04 +00002038if ($IsMK1MF && ($target !~ /^netware/)) {
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00002039 my ($v1, $v2, $v3, $v4);
2040 if ($version_num =~ /(^[0-9a-f]{1})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i) {
2041 $v1=hex $1;
2042 $v2=hex $2;
2043 $v3=hex $3;
2044 $v4=hex $4;
2045 }
2046 open (OUT,">ms/version32.rc") || die "Can't open ms/version32.rc";
2047 print OUT <<EOF;
2048#include <winver.h>
2049
2050LANGUAGE 0x09,0x01
2051
20521 VERSIONINFO
2053 FILEVERSION $v1,$v2,$v3,$v4
2054 PRODUCTVERSION $v1,$v2,$v3,$v4
2055 FILEFLAGSMASK 0x3fL
2056#ifdef _DEBUG
2057 FILEFLAGS 0x01L
2058#else
2059 FILEFLAGS 0x00L
2060#endif
2061 FILEOS VOS__WINDOWS32
2062 FILETYPE VFT_DLL
2063 FILESUBTYPE 0x0L
2064BEGIN
2065 BLOCK "StringFileInfo"
2066 BEGIN
2067 BLOCK "040904b0"
2068 BEGIN
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00002069#if defined(FIPS)
2070 VALUE "Comments", "WARNING: TEST VERSION ONLY ***NOT*** FIPS 140-2 VALIDATED.\\0"
2071#endif
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00002072 // Required:
2073 VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00002074#if defined(FIPS)
2075 VALUE "FileDescription", "TEST UNVALIDATED FIPS140-2 DLL\\0"
2076#else
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00002077 VALUE "FileDescription", "OpenSSL Shared Library\\0"
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00002078#endif
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00002079 VALUE "FileVersion", "$version\\0"
2080#if defined(CRYPTO)
2081 VALUE "InternalName", "libeay32\\0"
2082 VALUE "OriginalFilename", "libeay32.dll\\0"
2083#elif defined(SSL)
2084 VALUE "InternalName", "ssleay32\\0"
2085 VALUE "OriginalFilename", "ssleay32.dll\\0"
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00002086#elif defined(FIPS)
2087 VALUE "InternalName", "libosslfips\\0"
2088 VALUE "OriginalFilename", "libosslfips.dll\\0"
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00002089#endif
2090 VALUE "ProductName", "The OpenSSL Toolkit\\0"
2091 VALUE "ProductVersion", "$version\\0"
2092 // Optional:
2093 //VALUE "Comments", "\\0"
Dr. Stephen Hensone77d8f22005-04-19 00:15:18 +00002094 VALUE "LegalCopyright", "Copyright © 1998-2005 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
Dr. Stephen Hensonfc6a6a12002-10-04 21:22:47 +00002095 //VALUE "LegalTrademarks", "\\0"
2096 //VALUE "PrivateBuild", "\\0"
2097 //VALUE "SpecialBuild", "\\0"
2098 END
2099 END
2100 BLOCK "VarFileInfo"
2101 BEGIN
2102 VALUE "Translation", 0x409, 0x4b0
2103 END
2104END
2105EOF
2106 close(OUT);
2107 }
2108
Bodo Möller63d3f441999-09-09 20:21:10 +00002109print <<EOF;
2110
Ulf Möller89ec98e2000-02-01 01:35:29 +00002111Configured for $target.
Bodo Möller63d3f441999-09-09 20:21:10 +00002112EOF
Bodo Möller5f8d5c91999-04-29 16:10:09 +00002113
2114print <<\EOF if (!$no_threads && !$threads);
2115
2116The library could not be configured for supporting multi-threaded
2117applications as the compiler options required on this system are not known.
Bodo Möllerff1b7e01999-06-26 21:25:01 +00002118See file INSTALL for details if you need multi-threading.
Bodo Möllerec577821999-04-23 22:13:45 +00002119EOF
2120
Richard Levitte2964ba82003-01-11 11:40:39 +00002121print <<\EOF if ($no_shared_warn);
2122
2123You gave the option 'shared'. Normally, that would give you shared libraries.
2124Unfortunately, the OpenSSL configuration doesn't include shared library support
2125for this platform yet, so it will pretend you gave the option 'no-shared'. If
2126you can inform the developpers (openssl-dev\@openssl.org) how to support shared
Bodo Mölleraaae0aa2003-01-13 14:58:49 +00002127libraries on this platform, they will at least look at it and try their best
2128(but please first make sure you have tried with a current version of OpenSSL).
Richard Levitte2964ba82003-01-11 11:40:39 +00002129EOF
2130
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00002131print <<\EOF if ($fipscanisterinternal eq "y");
2132
2133WARNING: OpenSSL has been configured using unsupported option(s) to internally
2134generate a fipscanister.o object module for TESTING PURPOSES ONLY; that
2135compiled module is NOT FIPS 140-2 validated and CANNOT be used to replace the
2136OpenSSL FIPS Object Module as identified by the CMVP
2137(http://csrc.nist.gov/cryptval/) in any application requiring the use of FIPS
2138140-2 validated software.
2139
Dr. Stephen Henson4fd72562011-04-11 14:55:19 +00002140This is a test OpenSSL 2.0 FIPS module.
Dr. Stephen Henson1ab2f7f2011-01-26 12:31:30 +00002141
2142See the file README.FIPS for details of how to build a test library.
2143
2144EOF
2145
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00002146exit(0);
2147
Ulf Möller462ba4f1999-04-24 22:59:36 +00002148sub usage
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00002149 {
Ulf Möller462ba4f1999-04-24 22:59:36 +00002150 print STDERR $usage;
Ulf Möller10a926c2000-02-21 00:55:45 +00002151 print STDERR "\npick os/compiler from:\n";
Ben Laurie1641cb61998-12-28 17:08:48 +00002152 my $j=0;
Ben Laurie6457ad11999-02-07 18:22:15 +00002153 my $i;
Ulf Möller10a926c2000-02-21 00:55:45 +00002154 my $k=0;
Ben Laurie6457ad11999-02-07 18:22:15 +00002155 foreach $i (sort keys %table)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00002156 {
Ulf Möller462ba4f1999-04-24 22:59:36 +00002157 next if $i =~ /^debug/;
Ulf Möller10a926c2000-02-21 00:55:45 +00002158 $k += length($i) + 1;
2159 if ($k > 78)
2160 {
2161 print STDERR "\n";
2162 $k=length($i);
2163 }
2164 print STDERR $i . " ";
Ulf Möller462ba4f1999-04-24 22:59:36 +00002165 }
2166 foreach $i (sort keys %table)
2167 {
2168 next if $i !~ /^debug/;
Ulf Möller10a926c2000-02-21 00:55:45 +00002169 $k += length($i) + 1;
2170 if ($k > 78)
2171 {
2172 print STDERR "\n";
2173 $k=length($i);
2174 }
2175 print STDERR $i . " ";
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00002176 }
Ulf Möller10a926c2000-02-21 00:55:45 +00002177 print STDERR "\n\nNOTE: If in doubt, on Unix-ish systems use './config'.\n";
Ulf Möller462ba4f1999-04-24 22:59:36 +00002178 exit(1);
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00002179 }
2180
Ulf Möller99aab161999-04-01 12:34:33 +00002181sub which
2182 {
2183 my($name)=@_;
2184 my $path;
2185 foreach $path (split /:/, $ENV{PATH})
2186 {
Richard Levitte28a80032004-06-28 22:01:37 +00002187 if (-f "$path/$name$exe_ext" and -x _)
Ulf Möller99aab161999-04-01 12:34:33 +00002188 {
Richard Levitte28a80032004-06-28 22:01:37 +00002189 return "$path/$name$exe_ext" unless ($name eq "perl" and
2190 system("$path/$name$exe_ext -e " . '\'exit($]<5.0);\''));
Ulf Möller99aab161999-04-01 12:34:33 +00002191 }
2192 }
2193 }
2194
Ulf Möller462ba4f1999-04-24 22:59:36 +00002195sub dofile
2196 {
2197 my $f; my $p; my %m; my @a; my $k; my $ff;
2198 ($f,$p,%m)=@_;
2199
Ulf Möller31ff97b1999-05-13 10:28:14 +00002200 open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n";
Ulf Möller462ba4f1999-04-24 22:59:36 +00002201 @a=<IN>;
2202 close(IN);
2203 foreach $k (keys %m)
2204 {
2205 grep(/$k/ && ($_=sprintf($m{$k}."\n",$p)),@a);
2206 }
Bodo Möller863fe2e2000-03-12 23:27:14 +00002207 open(OUT,">$f.new") || die "unable to open $f.new:$!\n";
Ulf Möller462ba4f1999-04-24 22:59:36 +00002208 print OUT @a;
2209 close(OUT);
Bodo Möller863fe2e2000-03-12 23:27:14 +00002210 rename($f,"$f.bak") || die "unable to rename $f\n" if -e $f;
2211 rename("$f.new",$f) || die "unable to rename $f.new\n";
Ulf Möller462ba4f1999-04-24 22:59:36 +00002212 }
Bodo Möller436a3761999-05-28 23:18:51 +00002213
2214sub print_table_entry
2215 {
2216 my $target = shift;
2217
Richard Levittecf1b7d92001-02-19 16:06:34 +00002218 (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags,
Andy Polyakov14e21f82004-07-26 20:18:55 +00002219 my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj,
Richard Levittef4b45b72000-08-02 03:43:29 +00002220 my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
Andy Polyakoved28aef2011-09-06 20:45:36 +00002221 my $rc5_obj,my $wp_obj,my $cmll_obj,my $modes_obj, my $engines_obj,
2222 my $perlasm_scheme,my $dso_scheme,my $shared_target,my $shared_cflag,
Andy Polyakovc23632d2009-02-09 15:11:22 +00002223 my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags,my $multilib)=
Richard Levittea22fb392000-10-13 15:25:06 +00002224 split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
Bodo Möller436a3761999-05-28 23:18:51 +00002225
2226 print <<EOF
2227
2228*** $target
2229\$cc = $cc
2230\$cflags = $cflags
Bodo Möllere766a681999-06-09 13:23:38 +00002231\$unistd = $unistd
Bodo Möller436a3761999-05-28 23:18:51 +00002232\$thread_cflag = $thread_cflag
Richard Levittecf1b7d92001-02-19 16:06:34 +00002233\$sys_id = $sys_id
Bodo Möller436a3761999-05-28 23:18:51 +00002234\$lflags = $lflags
2235\$bn_ops = $bn_ops
Andy Polyakov14e21f82004-07-26 20:18:55 +00002236\$cpuid_obj = $cpuid_obj
Bodo Möller436a3761999-05-28 23:18:51 +00002237\$bn_obj = $bn_obj
2238\$des_obj = $des_obj
Andy Polyakovd0590fe2004-07-18 16:19:34 +00002239\$aes_obj = $aes_obj
Bodo Möller436a3761999-05-28 23:18:51 +00002240\$bf_obj = $bf_obj
2241\$md5_obj = $md5_obj
2242\$sha1_obj = $sha1_obj
2243\$cast_obj = $cast_obj
2244\$rc4_obj = $rc4_obj
2245\$rmd160_obj = $rmd160_obj
2246\$rc5_obj = $rc5_obj
Andy Polyakov0fbd4bf2005-12-16 11:53:31 +00002247\$wp_obj = $wp_obj
Andy Polyakov6a8517f2007-08-28 20:45:25 +00002248\$cmll_obj = $cmll_obj
Andy Polyakov8a1c92c2010-04-22 21:36:26 +00002249\$modes_obj = $modes_obj
Andy Polyakoved28aef2011-09-06 20:45:36 +00002250\$engines_obj = $engines_obj
Andy Polyakovfa8e9212008-01-11 13:15:11 +00002251\$perlasm_scheme = $perlasm_scheme
Geoff Thorpe9ec01262000-04-04 22:32:19 +00002252\$dso_scheme = $dso_scheme
Richard Levitteb436a982000-07-21 15:08:53 +00002253\$shared_target= $shared_target
2254\$shared_cflag = $shared_cflag
Bodo Möller67d48c82002-01-04 13:30:05 +00002255\$shared_ldflag = $shared_ldflag
Richard Levittea22fb392000-10-13 15:25:06 +00002256\$shared_extension = $shared_extension
Bodo Möller03964792001-03-09 13:04:06 +00002257\$ranlib = $ranlib
Richard Levitte179add22002-08-01 20:28:16 +00002258\$arflags = $arflags
Andy Polyakovc23632d2009-02-09 15:11:22 +00002259\$multilib = $multilib
Bodo Möller436a3761999-05-28 23:18:51 +00002260EOF
2261 }
Richard Levitted0d046e2002-01-27 15:52:37 +00002262
2263sub test_sanity
2264 {
2265 my $errorcnt = 0;
2266
2267 print STDERR "=" x 70, "\n";
2268 print STDERR "=== SANITY TESTING!\n";
2269 print STDERR "=== No configuration will be done, all other arguments will be ignored!\n";
2270 print STDERR "=" x 70, "\n";
2271
2272 foreach $target (sort keys %table)
2273 {
2274 @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
2275
Dr. Stephen Hensonfd621f72009-06-17 12:19:09 +00002276 if ($fields[$idx_dso_scheme-1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
Richard Levittec9c21d32002-01-27 15:58:34 +00002277 {
2278 $errorcnt++;
2279 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
2280 print STDERR " in the previous field\n";
2281 }
Dr. Stephen Hensonfd621f72009-06-17 12:19:09 +00002282 elsif ($fields[$idx_dso_scheme+1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
Richard Levittec9c21d32002-01-27 15:58:34 +00002283 {
2284 $errorcnt++;
2285 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
2286 print STDERR " in the following field\n";
2287 }
Dr. Stephen Hensonfd621f72009-06-17 12:19:09 +00002288 elsif ($fields[$idx_dso_scheme] !~ /^(beos|dl|dlfcn|win32|vms|)$/)
Richard Levitted0d046e2002-01-27 15:52:37 +00002289 {
2290 $errorcnt++;
2291 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
Dr. Stephen Hensonfd621f72009-06-17 12:19:09 +00002292 print STDERR " valid values are 'beos', 'dl', 'dlfcn', 'win32' and 'vms'\n";
Richard Levitted0d046e2002-01-27 15:52:37 +00002293 }
2294 }
Richard Levitte613599f2002-01-27 16:03:40 +00002295 print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
Richard Levitted0d046e2002-01-27 15:52:37 +00002296 return $errorcnt;
2297 }