summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorderaadt <>2014-04-13 20:18:39 +0000
committerderaadt <>2014-04-13 20:18:39 +0000
commit5a9459278c02e9167c3cf08369b67bc609c3865b (patch)
tree5ebf757ddcc9e1f948d6fca6ad8137fa0d273a63 /src
parent6ab27268f78d9e25fe26872365d1f0af2cf246f9 (diff)
downloadopenbsd-5a9459278c02e9167c3cf08369b67bc609c3865b.tar.gz
openbsd-5a9459278c02e9167c3cf08369b67bc609c3865b.tar.bz2
openbsd-5a9459278c02e9167c3cf08369b67bc609c3865b.zip
We don't use this build system.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/src/Configure2176
-rw-r--r--src/lib/libssl/src/Makefile686
-rw-r--r--src/lib/libssl/src/Makefile.org684
-rw-r--r--src/lib/libssl/src/Makefile.shared655
4 files changed, 0 insertions, 4201 deletions
diff --git a/src/lib/libssl/src/Configure b/src/lib/libssl/src/Configure
deleted file mode 100644
index de78469b9f..0000000000
--- a/src/lib/libssl/src/Configure
+++ /dev/null
@@ -1,2176 +0,0 @@
1:
2eval 'exec perl -S $0 ${1+"$@"}'
3 if $running_under_some_shell;
4##
5## Configure -- OpenSSL source tree configuration script
6##
7
8require 5.000;
9use strict;
10
11# see INSTALL for instructions.
12
13my $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";
14
15# Options:
16#
17# --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)
21#
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#
26# --with-krb5-dir Declare where Kerberos 5 lives. The libraries are expected
27# to live in the subdirectory lib/ and the header files in
28# include/. A value is required.
29# --with-krb5-lib Declare where the Kerberos 5 libraries live. A value is
30# required.
31# (Default: KRB5_DIR/lib)
32# --with-krb5-include Declare where the Kerberos 5 header files live. A
33# value is required.
34# (Default: KRB5_DIR/include)
35# --with-krb5-flavor Declare what flavor of Kerberos 5 is used. Currently
36# supported values are "MIT" and "Heimdal". A value is required.
37#
38# --test-sanity Make a number of sanity checks on the data in this file.
39# This is a debugging tool for OpenSSL developers.
40#
41# --cross-compile-prefix Add specified prefix to binutils components.
42#
43# 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.
48# [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)
51# [no-]shared [don't] try to create shared libraries when supported.
52# no-asm do not use assembler
53# no-dso do not compile in any native shared-library methods. This
54# will ensure that all methods just return NULL.
55# no-krb5 do not compile in any KRB5 library or code.
56# [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.
59# sctp include SCTP support
60# 386 generate 80386 code
61# no-sse2 disables IA-32 SSE2 code, above option implies no-sse2
62# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...)
63# -<xxx> +<xxx> compiler options are passed through
64#
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.
68# 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
77# 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
79# 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
85# RC4_INDEX define RC4_INDEX in crypto/rc4/rc4_locl.h. This turns on
86# array lookups instead of pointer use.
87# 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).
91# BF_PTR use 'pointer arithmatic' for Blowfish (unsafe on Alpha).
92# BF_PTR2 intel specific version (generic version is more efficient).
93#
94# Following are set automatically by this script
95#
96# 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,
99# 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
102
103# Minimum warning options... any contributions to OpenSSL should at least get
104# past these.
105
106my $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";
107
108my $strict_warnings = 0;
109
110my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
111
112# MD2_CHAR slags pentium pros
113my $x86_gcc_opts="RC4_INDEX MD2_INT";
114
115# MODIFY THESE PARAMETERS IF YOU ARE GOING TO USE THE 'util/speed.sh SCRIPT
116# Don't worry about these normally
117
118my $tcc="cc";
119my $tflags="-fast -Xa";
120my $tbn_mul="";
121my $tlib="-lnsl -lsocket";
122#$bits1="SIXTEEN_BIT ";
123#$bits2="THIRTY_TWO_BIT ";
124my $bits1="THIRTY_TWO_BIT ";
125my $bits2="SIXTY_FOUR_BIT ";
126
127my $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:";
128
129my $x86_elf_asm="$x86_asm:elf";
130
131my $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:";
132my $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::::::::";
138my $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:";
139my $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";
145
146# 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";
154
155#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
156
157my %table=(
158# File 'TABLE' (created by 'make TABLE') contains the data from this list,
159# formatted for better readability.
160
161
162#"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}::",
166
167# Our development configs
168"purify", "purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
169"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::::",
170"debug-ben", "gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DDEBUG_SAFESTACK -O2 -pipe::(unknown):::::",
171"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)::::",
172"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)::::",
173"debug-ben-debug", "gcc44:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O2 -pipe::(unknown)::::::",
174"debug-ben-debug-64", "gcc:$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
175"debug-ben-macos", "cc:$gcc_devteam_warn -arch i386 -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -O3 -DL_ENDIAN -g3 -pipe::(unknown)::-Wl,-search_paths_first::::",
176"debug-ben-macos-gcc46", "gcc-mp-4.6:$gcc_devteam_warn -Wconversion -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -O3 -DL_ENDIAN -g3 -pipe::(unknown)::::::",
177"debug-ben-darwin64","cc:$gcc_devteam_warn -Wno-language-extension-token -Wno-extended-offsetof -arch x86_64 -O3 -DL_ENDIAN -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$x86_64_asm;$asm=~s/rc4\-[^:]+//;$asm}.":macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
178"debug-ben-no-opt", "gcc: -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -DTERMIOS -Wall -g3::(unknown)::::::",
179"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)::::::",
180"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
181"debug-bodo", "gcc:$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DBN_DEBUG_RAND -DCONF_DEBUG -DBIO_PAIR_DEBUG -m64 -DL_ENDIAN -DTERMIO -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
182"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",
183"debug-steve64", "gcc:$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
184"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)",
185"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)",
186"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -ggdb -g3 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
187"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
188"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 -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
189"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 -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
190"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)",
191"debug-geoff64","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
192"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",
193"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",
194"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)",
195"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)",
196"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::elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
197"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)",
198"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)",
199"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",
200"dist", "cc:-O::(unknown)::::::",
201
202# Basic configs that should work on any (32 and less bit) box
203"gcc", "gcc:-O3::(unknown):::BN_LLONG:::",
204"cc", "cc:-O::(unknown)::::::",
205
206####VOS Configurations
207"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:",
208"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:",
209
210#### Solaris x86 with GNU C setups
211# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
212# here because whenever GNU C instantiates an assembler template it
213# surrounds it with #APP #NO_APP comment pair which (at least Solaris
214# 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic"
215# error message.
216"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)",
217# -shared -static-libgcc might appear controversial, but modules taken
218# from static libgcc do not have relocations and linking them into our
219# shared objects doesn't have any negative side-effects. On the contrary,
220# doing so makes it possible to use gcc shared build with Sun C. Given
221# that gcc generates faster code [thanks to inline assembler], I would
222# actually recommend to consider using gcc shared build even with vendor
223# compiler:-)
224# <appro@fy.chalmers.se>
225"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",
226
227#### Solaris x86 with Sun C setups
228"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)",
229"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",
230
231#### SPARC Solaris with GNU C setups
232"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
233"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)",
234# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
235"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)",
236"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",
237####
238"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)",
239"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)",
240
241#### SPARC Solaris with Sun C setups
242# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
243# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
244# SC5.0 note: Compiler common patch 107357-01 or later is required!
245"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)",
246"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)",
247"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)",
248"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
249####
250"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)",
251"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)",
252
253#### SunOS configs, assuming sparc for the gcc one.
254#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
255"sunos-gcc","gcc:-O3 -mv8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:${no_asm}::",
256
257#### IRIX 5.x configs
258# -mips2 flag is added by ./config when appropriate.
259"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)",
260"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)",
261#### IRIX 6.x configs
262# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
263# './Configure irix-cc -o32' manually.
264"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",
265"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",
266# N64 ABI builds.
267"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",
268"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",
269
270#### Unified HP-UX ANSI C configs.
271# Special notes:
272# - Originally we were optimizing at +O4 level. It should be noted
273# that the only difference between +O3 and +O4 is global inter-
274# procedural analysis. As it has to be performed during the link
275# stage the compiler leaves behind certain pseudo-code in lib*.a
276# which might be release or even patch level specific. Generating
277# the machine code for and analyzing the *whole* program appears
278# to be *extremely* memory demanding while the performance gain is
279# actually questionable. The situation is intensified by the default
280# HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
281# which is way too low for +O4. In other words, doesn't +O3 make
282# more sense?
283# - Keep in mind that the HP compiler by default generates code
284# suitable for execution on the host you're currently compiling at.
285# If the toolkit is ment to be used on various PA-RISC processors
286# consider './config +DAportable'.
287# - +DD64 is chosen in favour of +DA2.0W because it's meant to be
288# compatible with *future* releases.
289# - If you run ./Configure hpux-parisc-[g]cc manually don't forget to
290# pass -D_REENTRANT on HP-UX 10 and later.
291# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
292# 32-bit message digests. (For the moment of this writing) HP C
293# doesn't seem to "digest" too many local variables (they make "him"
294# chew forever:-). For more details look-up MD32_XARRAY comment in
295# crypto/sha/sha_lcl.h.
296# <appro@fy.chalmers.se>
297#
298# Since there is mention of this in shlib/hpux10-cc.sh
299"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)",
300"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)",
301"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",
302"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",
303"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",
304
305# More attempts at unified 10.X and 11.X targets for HP C compiler.
306#
307# Chris Ruemmler <ruemmler@cup.hp.com>
308# Kevin Steves <ks@hp.se>
309"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)",
310"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",
311"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",
312"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",
313
314# HP/UX IA-64 targets
315"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",
316# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with
317# with debugging of the following config.
318"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",
319# GCC builds...
320"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",
321"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",
322
323# Legacy HPUX 9.X configs...
324"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)",
325"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)",
326
327#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
328"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:::",
329
330# DEC Alpha OSF/1/Tru64 targets.
331#
332# "What's in a name? That which we call a rose
333# By any other word would smell as sweet."
334#
335# - William Shakespeare, "Romeo & Juliet", Act II, scene II.
336#
337# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
338#
339"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
340"osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
341"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",
342
343####
344#### Variety of LINUX:-)
345####
346# *-generic* is endian-neutral target, but ./config is free to
347# throw in -D[BL]_ENDIAN, whichever appropriate...
348"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)",
349"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)",
350# It's believed that majority of ARM toolchains predefine appropriate -march.
351# If you compiler does not, do complement config command line with one!
352"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)",
353#### IA-32 targets...
354"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)",
355"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)",
356"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",
357####
358"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)",
359"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",
360"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)",
361"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)",
362"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)",
363"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",
364"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",
365#### So called "highgprs" target for z/Architecture CPUs
366# "Highgprs" is kernel feature first implemented in Linux 2.6.32, see
367# /proc/cpuinfo. The idea is to preserve most significant bits of
368# general purpose registers not only upon 32-bit process context
369# switch, but even on asynchronous signal delivery to such process.
370# This makes it possible to deploy 64-bit instructions even in legacy
371# application context and achieve better [or should we say adequate]
372# performance. The build is binary compatible with linux-generic32,
373# and the idea is to be able to install the resulting libcrypto.so
374# alongside generic one, e.g. as /lib/highgprs/libcrypto.so.x.y, for
375# ldconfig and run-time linker to autodiscover. Unfortunately it
376# doesn't work just yet, because of couple of bugs in glibc
377# sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
378"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",
379#### SPARC Linux setups
380# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
381# assisted with debugging of following two configs.
382"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)",
383# it's a real mess with -mcpu=ultrasparc option under Linux, but
384# -Wa,-Av8plus should do the trick no matter what.
385"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)",
386# GCC 3.1 is a requirement
387"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",
388#### Alpha Linux with GNU C and Compaq C setups
389# Special notes:
390# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
391# ought to run './Configure linux-alpha+bwx-gcc' manually, do
392# complement the command line with -mcpu=ev56, -mcpu=ev6 or whatever
393# which is appropriate.
394# - If you use ccc keep in mind that -fast implies -arch host and the
395# compiler is free to issue instructions which gonna make elder CPU
396# choke. If you wish to build "blended" toolkit, add -arch generic
397# *after* -fast and invoke './Configure linux-alpha-ccc' manually.
398#
399# <appro@fy.chalmers.se>
400#
401"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)",
402"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)",
403"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}",
404"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}",
405
406# 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)",
408"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)",
409"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)",
410
411#### *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)",
413"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)",
414"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)",
415"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)",
416"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)",
417
418"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.
422"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)",
423"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)",
424"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)",
425
426"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)",
427
428"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
431# NCR MP-RAS UNIX ver 02.03.01
432"ncr-scde","cc:-O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw::(unknown)::-lsocket -lnsl -lc89:${x86_gcc_des} ${x86_gcc_opts}:::",
433
434# QNX
435"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
436"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)",
438
439# 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
443#### SCO/Caldera targets.
444#
445# 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.
447# If you want to optimize for particular microarchitecture, bypass ./config
448# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
449# 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.
453#
454# UnixWare 2.0x fails destest with -O.
455"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
456"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
457"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)",
458"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)",
459# SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the SCO cc.
460"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)",
462
463#### IBM's AIX.
464"aix3-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
465"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",
467# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
468# at build time. $OBJECT_MODE is respected at ./config stage!
469"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR:${ppc32_asm}:aix32:dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
470"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${ppc64_asm}:aix64:dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
471
472#
473# Cray T90 and similar (SDSC)
474# 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>)
483#
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:::",
487
488#
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.
496"cray-t3e", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:::",
497
498# DGUX, 88100.
499"dgux-R3-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown):::RC4_INDEX DES_UNROLL:::",
500"dgux-R4-gcc", "gcc:-O3 -fomit-frame-pointer::(unknown)::-lnsl -lsocket:RC4_INDEX DES_UNROLL:::",
501"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}",
502
503# Sinix/ReliantUNIX RM400
504# NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g */
505"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)",
506"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:::",
508
509# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
510"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:::",
511
512# 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
518# Visual C targets
519#
520# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
521"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",
522"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",
523"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",
524"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",
525# x86 Win32 target defaults to ANSI API, if you want UNICODE, complement
526# 'perl Configure VC-WIN32' with '-DUNICODE -D_UNICODE'
527"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",
528# Unified CE target
529"debug-VC-WIN32","cl:-W3 -Gs0 -GF -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
530"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
531
532# Borland C++ 4.5
533"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
534
535# MinGW
536"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",
537# 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.
544"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",
545
546# UWIN
547"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
548
549# Cygwin
550"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",
551"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",
552"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",
553
554# 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.
558# netware-clib => legacy CLib c-runtime support
559"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}::",
563# netware-libc => LibC/NKS support
564"netware-libc", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
565"netware-libc-bsdsock", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
566"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}::",
567"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}::",
568
569# DJGPP
570"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:",
571
572# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
573"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
574"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::BN_LLONG::::",
575# K&R C is no longer supported; you need gcc on old Ultrix installations
576##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::",
577
578##### MacOS X (a.k.a. Rhapsody or Darwin) setup
579"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::",
580"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",
581"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",
582"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",
583"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",
584"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -DL_ENDIAN -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$x86_64_asm;$asm=~s/rc4\-[^:]+//;$asm}.":macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
585"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",
586# 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",
588
589##### A/UX
590"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
591
592##### Sony NEWS-OS 4.x
593"newsos4-gcc","gcc:-O -DB_ENDIAN::(unknown):NEWS4:-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::",
594
595##### GNU Hurd
596"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",
597
598##### OS/2 EMX
599"OS2-EMX", "gcc::::::::",
600
601##### VxWorks for various targets
602"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:::::",
604"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
605"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:::::",
607"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
608"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:",
609"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:",
610
611##### 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
614# uClinux
615"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'}::",
617
618);
619
620my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
621 debug-VC-WIN64I debug-VC-WIN64A
622 VC-NT VC-CE VC-WIN32 debug-VC-WIN32
623 BC-32
624 netware-clib netware-clib-bsdsock
625 netware-libc netware-libc-bsdsock);
626
627my $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++;
635my $idx_cpuid_obj = $idx++;
636my $idx_bn_obj = $idx++;
637my $idx_des_obj = $idx++;
638my $idx_aes_obj = $idx++;
639my $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++;
646my $idx_wp_obj = $idx++;
647my $idx_cmll_obj = $idx++;
648my $idx_modes_obj = $idx++;
649my $idx_engines_obj = $idx++;
650my $idx_perlasm_scheme = $idx++;
651my $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++;
657my $idx_arflags = $idx++;
658my $idx_multilib = $idx++;
659
660my $prefix="";
661my $libdir="";
662my $openssldir="";
663my $exe_ext="";
664my $install_prefix= "$ENV{'INSTALL_PREFIX'}";
665my $cross_compile_prefix="";
666my $fipsdir="/usr/local/ssl/fips-2.0";
667my $fipslibdir="";
668my $baseaddr="0xFB00000";
669my $no_threads=0;
670my $threads=0;
671my $no_shared=0; # but "no-shared" is default
672my $zlib=1; # but "no-zlib" is default
673my $no_krb5=0; # but "no-krb5" is implied unless "--with-krb5-..." is used
674my $no_rfc3779=1; # but "no-rfc3779" is default
675my $no_asm=0;
676my $no_dso=0;
677my $no_gmp=0;
678my @skip=();
679my $Makefile="Makefile";
680my $des_locl="crypto/des/des_locl.h";
681my $des ="crypto/des/des.h";
682my $bn ="crypto/bn/bn.h";
683my $md2 ="crypto/md2/md2.h";
684my $rc4 ="crypto/rc4/rc4.h";
685my $rc4_locl="crypto/rc4/rc4_locl.h";
686my $idea ="crypto/idea/idea.h";
687my $rc2 ="crypto/rc2/rc2.h";
688my $bf ="crypto/bf/bf_locl.h";
689my $bn_asm ="bn_asm.o";
690my $des_enc="des_enc.o fcrypt_b.o";
691my $aes_enc="aes_core.o aes_cbc.o";
692my $bf_enc ="bf_enc.o";
693my $cast_enc="c_enc.o";
694my $rc4_enc="rc4_enc.o rc4_skey.o";
695my $rc5_enc="rc5_enc.o";
696my $md5_obj="";
697my $sha1_obj="";
698my $rmd160_obj="";
699my $cmll_enc="camellia.o cmll_misc.o cmll_cbc.o";
700my $processor="";
701my $default_ranlib;
702my $perl;
703my $fips=0;
704
705if (exists $ENV{FIPSDIR})
706 {
707 $fipsdir = $ENV{FIPSDIR};
708 $fipsdir =~ s/\/$//;
709 }
710
711# All of the following is disabled by default (RC5 was enabled before 0.9.8):
712
713my %disabled = ( # "what" => "comment" [or special keyword "experimental"]
714 "ec_nistp_64_gcc_128" => "default",
715 "gmp" => "default",
716 "jpake" => "experimental",
717 "md2" => "default",
718 "rc5" => "default",
719 "rfc3779" => "default",
720 "sctp" => "default",
721 "shared" => "default",
722 "store" => "experimental",
723 "zlib" => "default",
724 "zlib-dynamic" => "default"
725 );
726my @experimental = ();
727
728# This is what $depflags will look like with the above defaults
729# (we need this to see if we should advise the user to run "make depend"):
730my $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";
731
732# Explicit "no-..." options will be collected in %disabled along with the defaults.
733# To remove something from %disabled, use "enable-foo" (unless it's experimental).
734# For symmetry, "disable-foo" is a synonym for "no-foo".
735
736# For features called "experimental" here, a more explicit "experimental-foo" is needed to enable.
737# We will collect such requests in @experimental.
738# To avoid accidental use of experimental features, applications will have to use -DOPENSSL_EXPERIMENTAL_FOO.
739
740
741my $no_sse2=0;
742
743&usage if ($#ARGV < 0);
744
745my $flags;
746my $depflags;
747my $openssl_experimental_defines;
748my $openssl_algorithm_defines;
749my $openssl_thread_defines;
750my $openssl_sys_defines="";
751my $openssl_other_defines;
752my $libs;
753my $libkrb5="";
754my $target;
755my $options;
756my $symlink;
757my $make_depend=0;
758my %withargs=();
759
760my @argvcopy=@ARGV;
761my $argvstring="";
762my $argv_unprocessed=1;
763
764while($argv_unprocessed)
765 {
766 $flags="";
767 $depflags="";
768 $openssl_experimental_defines="";
769 $openssl_algorithm_defines="";
770 $openssl_thread_defines="";
771 $openssl_sys_defines="";
772 $openssl_other_defines="";
773 $libs="";
774 $target="";
775 $options="";
776 $symlink=1;
777
778 $argv_unprocessed=0;
779 $argvstring=join(' ',@argvcopy);
780
781PROCESS_ARGS:
782 foreach (@argvcopy)
783 {
784 s /^-no-/no-/; # some people just can't read the instructions
785
786 # rewrite some options in "enable-..." form
787 s /^-?-?shared$/enable-shared/;
788 s /^sctp$/enable-sctp/;
789 s /^threads$/enable-threads/;
790 s /^zlib$/enable-zlib/;
791 s /^zlib-dynamic$/enable-zlib-dynamic/;
792
793 if (/^no-(.+)$/ || /^disable-(.+)$/)
794 {
795 if (!($disabled{$1} eq "experimental"))
796 {
797 if ($1 eq "ssl")
798 {
799 $disabled{"ssl2"} = "option(ssl)";
800 $disabled{"ssl3"} = "option(ssl)";
801 }
802 elsif ($1 eq "tls")
803 {
804 $disabled{"tls1"} = "option(tls)"
805 }
806 else
807 {
808 $disabled{$1} = "option";
809 }
810 }
811 }
812 elsif (/^enable-(.+)$/ || /^experimental-(.+)$/)
813 {
814 my $algo = $1;
815 if ($disabled{$algo} eq "experimental")
816 {
817 die "You are requesting an experimental feature; please say 'experimental-$algo' if you are sure\n"
818 unless (/^experimental-/);
819 push @experimental, $algo;
820 }
821 delete $disabled{$algo};
822
823 $threads = 1 if ($algo eq "threads");
824 }
825 elsif (/^--test-sanity$/)
826 {
827 exit(&test_sanity());
828 }
829 elsif (/^--strict-warnings/)
830 {
831 $strict_warnings = 1;
832 }
833 elsif (/^reconfigure/ || /^reconf/)
834 {
835 if (open(IN,"<$Makefile"))
836 {
837 while (<IN>)
838 {
839 chomp;
840 if (/^CONFIGURE_ARGS=(.*)/)
841 {
842 $argvstring=$1;
843 @argvcopy=split(' ',$argvstring);
844 die "Incorrect data to reconfigure, please do a normal configuration\n"
845 if (grep(/^reconf/,@argvcopy));
846 print "Reconfiguring with: $argvstring\n";
847 $argv_unprocessed=1;
848 close(IN);
849 last PROCESS_ARGS;
850 }
851 }
852 close(IN);
853 }
854 die "Insufficient data to reconfigure, please do a normal configuration\n";
855 }
856 elsif (/^386$/)
857 { $processor=386; }
858 elsif (/^fips$/)
859 {
860 $fips=1;
861 }
862 elsif (/^rsaref$/)
863 {
864 # No RSAref support any more since it's not needed.
865 # The check for the option is there so scripts aren't
866 # broken
867 }
868 elsif (/^[-+]/)
869 {
870 if (/^-[lL](.*)$/ or /^-Wl,/)
871 {
872 $libs.=$_." ";
873 }
874 elsif (/^-[^-]/ or /^\+/)
875 {
876 $_ =~ s/%([0-9a-f]{1,2})/chr(hex($1))/gei;
877 $flags.=$_." ";
878 }
879 elsif (/^--prefix=(.*)$/)
880 {
881 $prefix=$1;
882 }
883 elsif (/^--libdir=(.*)$/)
884 {
885 $libdir=$1;
886 }
887 elsif (/^--openssldir=(.*)$/)
888 {
889 $openssldir=$1;
890 }
891 elsif (/^--install.prefix=(.*)$/)
892 {
893 $install_prefix=$1;
894 }
895 elsif (/^--with-krb5-(dir|lib|include|flavor)=(.*)$/)
896 {
897 $withargs{"krb5-".$1}=$2;
898 }
899 elsif (/^--with-zlib-lib=(.*)$/)
900 {
901 $withargs{"zlib-lib"}=$1;
902 }
903 elsif (/^--with-zlib-include=(.*)$/)
904 {
905 $withargs{"zlib-include"}="-I$1";
906 }
907 elsif (/^--with-fipsdir=(.*)$/)
908 {
909 $fipsdir="$1";
910 }
911 elsif (/^--with-fipslibdir=(.*)$/)
912 {
913 $fipslibdir="$1";
914 }
915 elsif (/^--with-baseaddr=(.*)$/)
916 {
917 $baseaddr="$1";
918 }
919 elsif (/^--cross-compile-prefix=(.*)$/)
920 {
921 $cross_compile_prefix=$1;
922 }
923 else
924 {
925 print STDERR $usage;
926 exit(1);
927 }
928 }
929 elsif ($_ =~ /^([^:]+):(.+)$/)
930 {
931 eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string
932 $target=$1;
933 }
934 else
935 {
936 die "target already defined - $target (offending arg: $_)\n" if ($target ne "");
937 $target=$_;
938 }
939
940 unless ($_ eq $target || /^no-/ || /^disable-/)
941 {
942 # "no-..." follows later after implied disactivations
943 # have been derived. (Don't take this too seroiusly,
944 # we really only write OPTIONS to the Makefile out of
945 # nostalgia.)
946
947 if ($options eq "")
948 { $options = $_; }
949 else
950 { $options .= " ".$_; }
951 }
952 }
953 }
954
955
956
957if ($processor eq "386")
958 {
959 $disabled{"sse2"} = "forced";
960 }
961
962if (!defined($withargs{"krb5-flavor"}) || $withargs{"krb5-flavor"} eq "")
963 {
964 $disabled{"krb5"} = "krb5-flavor not specified";
965 }
966
967if (!defined($disabled{"zlib-dynamic"}))
968 {
969 # "zlib-dynamic" was specifically enabled, so enable "zlib"
970 delete $disabled{"zlib"};
971 }
972
973if (defined($disabled{"rijndael"}))
974 {
975 $disabled{"aes"} = "forced";
976 }
977if (defined($disabled{"des"}))
978 {
979 $disabled{"mdc2"} = "forced";
980 }
981if (defined($disabled{"ec"}))
982 {
983 $disabled{"ecdsa"} = "forced";
984 $disabled{"ecdh"} = "forced";
985 }
986
987# SSL 2.0 requires MD5 and RSA
988if (defined($disabled{"md5"}) || defined($disabled{"rsa"}))
989 {
990 $disabled{"ssl2"} = "forced";
991 }
992
993if ($fips && $fipslibdir eq "")
994 {
995 $fipslibdir = $fipsdir . "/lib/";
996 }
997
998# RSAX ENGINE sets default non-FIPS RSA method.
999if ($fips)
1000 {
1001 $disabled{"rsax"} = "forced";
1002 }
1003
1004# SSL 3.0 and TLS requires MD5 and SHA and either RSA or DSA+DH
1005if (defined($disabled{"md5"}) || defined($disabled{"sha"})
1006 || (defined($disabled{"rsa"})
1007 && (defined($disabled{"dsa"}) || defined($disabled{"dh"}))))
1008 {
1009 $disabled{"ssl3"} = "forced";
1010 $disabled{"tls1"} = "forced";
1011 }
1012
1013if (defined($disabled{"tls1"}))
1014 {
1015 $disabled{"tlsext"} = "forced";
1016 }
1017
1018if (defined($disabled{"ec"}) || defined($disabled{"dsa"})
1019 || defined($disabled{"dh"}))
1020 {
1021 $disabled{"gost"} = "forced";
1022 }
1023
1024# SRP and HEARTBEATS require TLSEXT
1025if (defined($disabled{"tlsext"}))
1026 {
1027 $disabled{"srp"} = "forced";
1028 $disabled{"heartbeats"} = "forced";
1029 }
1030
1031if ($target eq "TABLE") {
1032 foreach $target (sort keys %table) {
1033 print_table_entry($target);
1034 }
1035 exit 0;
1036}
1037
1038if ($target eq "LIST") {
1039 foreach (sort keys %table) {
1040 print;
1041 print "\n";
1042 }
1043 exit 0;
1044}
1045
1046if ($target =~ m/^CygWin32(-.*)$/) {
1047 $target = "Cygwin".$1;
1048}
1049
1050print "Configuring for $target\n";
1051
1052&usage if (!defined($table{$target}));
1053
1054
1055foreach (sort (keys %disabled))
1056 {
1057 $options .= " no-$_";
1058
1059 printf " no-%-12s %-10s", $_, "[$disabled{$_}]";
1060
1061 if (/^dso$/)
1062 { $no_dso = 1; }
1063 elsif (/^threads$/)
1064 { $no_threads = 1; }
1065 elsif (/^shared$/)
1066 { $no_shared = 1; }
1067 elsif (/^zlib$/)
1068 { $zlib = 0; }
1069 elsif (/^static-engine$/)
1070 { }
1071 elsif (/^zlib-dynamic$/)
1072 { }
1073 elsif (/^symlinks$/)
1074 { $symlink = 0; }
1075 elsif (/^sse2$/)
1076 { $no_sse2 = 1; }
1077 else
1078 {
1079 my ($ALGO, $algo);
1080 ($ALGO = $algo = $_) =~ tr/[\-a-z]/[_A-Z]/;
1081
1082 if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/)
1083 {
1084 $openssl_other_defines .= "#define OPENSSL_NO_$ALGO\n";
1085 print " OPENSSL_NO_$ALGO";
1086
1087 if (/^err$/) { $flags .= "-DOPENSSL_NO_ERR "; }
1088 elsif (/^asm$/) { $no_asm = 1; }
1089 }
1090 else
1091 {
1092 $openssl_algorithm_defines .= "#define OPENSSL_NO_$ALGO\n";
1093 print " OPENSSL_NO_$ALGO";
1094
1095 if (/^krb5$/)
1096 { $no_krb5 = 1; }
1097 else
1098 {
1099 push @skip, $algo;
1100 # fix-up crypto/directory name(s)
1101 @skip[$#skip]="whrlpool" if $algo eq "whirlpool";
1102 print " (skip dir)";
1103
1104 $depflags .= " -DOPENSSL_NO_$ALGO";
1105 }
1106 }
1107 }
1108
1109 print "\n";
1110 }
1111
1112my $exp_cflags = "";
1113foreach (sort @experimental)
1114 {
1115 my $ALGO;
1116 ($ALGO = $_) =~ tr/[a-z]/[A-Z]/;
1117
1118 # opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined
1119 $openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n";
1120 $exp_cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO";
1121 }
1122
1123my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
1124
1125$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/);
1126$exe_ext=".nlm" if ($target =~ /netware/);
1127$exe_ext=".pm" if ($target =~ /vos/);
1128$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
1129$prefix=$openssldir if $prefix eq "";
1130
1131$default_ranlib= &which("ranlib") or $default_ranlib="true";
1132$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
1133 or $perl="perl";
1134my $make = $ENV{'MAKE'} || "make";
1135
1136$cross_compile_prefix=$ENV{'CROSS_COMPILE'} if $cross_compile_prefix eq "";
1137
1138chop $openssldir if $openssldir =~ /\/$/;
1139chop $prefix if $prefix =~ /.\/$/;
1140
1141$openssldir=$prefix . "/ssl" if $openssldir eq "";
1142$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
1143
1144
1145print "IsMK1MF=$IsMK1MF\n";
1146
1147my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1148my $cc = $fields[$idx_cc];
1149# Allow environment CC to override compiler...
1150if($ENV{CC}) {
1151 $cc = $ENV{CC};
1152}
1153my $cflags = $fields[$idx_cflags];
1154my $unistd = $fields[$idx_unistd];
1155my $thread_cflag = $fields[$idx_thread_cflag];
1156my $sys_id = $fields[$idx_sys_id];
1157my $lflags = $fields[$idx_lflags];
1158my $bn_ops = $fields[$idx_bn_ops];
1159my $cpuid_obj = $fields[$idx_cpuid_obj];
1160my $bn_obj = $fields[$idx_bn_obj];
1161my $des_obj = $fields[$idx_des_obj];
1162my $aes_obj = $fields[$idx_aes_obj];
1163my $bf_obj = $fields[$idx_bf_obj];
1164my $md5_obj = $fields[$idx_md5_obj];
1165my $sha1_obj = $fields[$idx_sha1_obj];
1166my $cast_obj = $fields[$idx_cast_obj];
1167my $rc4_obj = $fields[$idx_rc4_obj];
1168my $rmd160_obj = $fields[$idx_rmd160_obj];
1169my $rc5_obj = $fields[$idx_rc5_obj];
1170my $wp_obj = $fields[$idx_wp_obj];
1171my $cmll_obj = $fields[$idx_cmll_obj];
1172my $modes_obj = $fields[$idx_modes_obj];
1173my $engines_obj = $fields[$idx_engines_obj];
1174my $perlasm_scheme = $fields[$idx_perlasm_scheme];
1175my $dso_scheme = $fields[$idx_dso_scheme];
1176my $shared_target = $fields[$idx_shared_target];
1177my $shared_cflag = $fields[$idx_shared_cflag];
1178my $shared_ldflag = $fields[$idx_shared_ldflag];
1179my $shared_extension = $fields[$idx_shared_extension];
1180my $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib];
1181my $ar = $ENV{'AR'} || "ar";
1182my $arflags = $fields[$idx_arflags];
1183my $multilib = $fields[$idx_multilib];
1184
1185# if $prefix/lib$multilib is not an existing directory, then
1186# assume that it's not searched by linker automatically, in
1187# which case adding $multilib suffix causes more grief than
1188# we're ready to tolerate, so don't...
1189$multilib="" if !-d "$prefix/lib$multilib";
1190
1191$libdir="lib$multilib" if $libdir eq "";
1192
1193$cflags = "$cflags$exp_cflags";
1194
1195# '%' in $lflags is used to split flags to "pre-" and post-flags
1196my ($prelflags,$postlflags)=split('%',$lflags);
1197if (defined($postlflags)) { $lflags=$postlflags; }
1198else { $lflags=$prelflags; undef $prelflags; }
1199
1200if ($target =~ /^mingw/ && `$cc --target-help 2>&1` !~ m/\-mno\-cygwin/m)
1201 {
1202 $cflags =~ s/\-mno\-cygwin\s*//;
1203 $shared_ldflag =~ s/\-mno\-cygwin\s*//;
1204 }
1205
1206my $no_shared_warn=0;
1207my $no_user_cflags=0;
1208
1209if ($flags ne "") { $cflags="$flags$cflags"; }
1210else { $no_user_cflags=1; }
1211
1212# Kerberos settings. The flavor must be provided from outside, either through
1213# the script "config" or manually.
1214if (!$no_krb5)
1215 {
1216 my ($lresolv, $lpath, $lext);
1217 if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/)
1218 {
1219 die "Sorry, Heimdal is currently not supported\n";
1220 }
1221 ##### HACK to force use of Heimdal.
1222 ##### WARNING: Since we don't really have adequate support for Heimdal,
1223 ##### using this will break the build. You'll have to make
1224 ##### changes to the source, and if you do, please send
1225 ##### patches to openssl-dev@openssl.org
1226 if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/)
1227 {
1228 warn "Heimdal isn't really supported. Your build WILL break\n";
1229 warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n";
1230 $withargs{"krb5-dir"} = "/usr/heimdal"
1231 if $withargs{"krb5-dir"} eq "";
1232 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1233 "/lib -lgssapi -lkrb5 -lcom_err"
1234 if $withargs{"krb5-lib"} eq "" && !$IsMK1MF;
1235 $cflags="-DKRB5_HEIMDAL $cflags";
1236 }
1237 if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/)
1238 {
1239 $withargs{"krb5-dir"} = "/usr/kerberos"
1240 if $withargs{"krb5-dir"} eq "";
1241 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1242 "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto"
1243 if $withargs{"krb5-lib"} eq "" && !$IsMK1MF;
1244 $cflags="-DKRB5_MIT $cflags";
1245 $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//;
1246 if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/)
1247 {
1248 $cflags="-DKRB5_MIT_OLD11 $cflags";
1249 }
1250 }
1251 LRESOLV:
1252 foreach $lpath ("/lib", "/usr/lib")
1253 {
1254 foreach $lext ("a", "so")
1255 {
1256 $lresolv = "$lpath/libresolv.$lext";
1257 last LRESOLV if (-r "$lresolv");
1258 $lresolv = "";
1259 }
1260 }
1261 $withargs{"krb5-lib"} .= " -lresolv"
1262 if ("$lresolv" ne "");
1263 $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include"
1264 if $withargs{"krb5-include"} eq "" &&
1265 $withargs{"krb5-dir"} ne "";
1266 }
1267
1268# The DSO code currently always implements all functions so that no
1269# applications will have to worry about that from a compilation point
1270# of view. However, the "method"s may return zero unless that platform
1271# has support compiled in for them. Currently each method is enabled
1272# by a define "DSO_<name>" ... we translate the "dso_scheme" config
1273# string entry into using the following logic;
1274my $dso_cflags;
1275if (!$no_dso && $dso_scheme ne "")
1276 {
1277 $dso_scheme =~ tr/[a-z]/[A-Z]/;
1278 if ($dso_scheme eq "DLFCN")
1279 {
1280 $dso_cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H";
1281 }
1282 elsif ($dso_scheme eq "DLFCN_NO_H")
1283 {
1284 $dso_cflags = "-DDSO_DLFCN";
1285 }
1286 else
1287 {
1288 $dso_cflags = "-DDSO_$dso_scheme";
1289 }
1290 $cflags = "$dso_cflags $cflags";
1291 }
1292
1293my $thread_cflags;
1294my $thread_defines;
1295if ($thread_cflag ne "(unknown)" && !$no_threads)
1296 {
1297 # If we know how to do it, support threads by default.
1298 $threads = 1;
1299 }
1300if ($thread_cflag eq "(unknown)" && $threads)
1301 {
1302 # If the user asked for "threads", [s]he is also expected to
1303 # provide any system-dependent compiler options that are
1304 # necessary.
1305 if ($no_user_cflags)
1306 {
1307 print "You asked for multi-threading support, but didn't\n";
1308 print "provide any system-specific compiler options\n";
1309 exit(1);
1310 }
1311 $thread_cflags="-DOPENSSL_THREADS $cflags" ;
1312 $thread_defines .= "#define OPENSSL_THREADS\n";
1313 }
1314else
1315 {
1316 $thread_cflags="-DOPENSSL_THREADS $thread_cflag $cflags";
1317 $thread_defines .= "#define OPENSSL_THREADS\n";
1318# my $def;
1319# foreach $def (split ' ',$thread_cflag)
1320# {
1321# if ($def =~ s/^-D// && $def !~ /^_/)
1322# {
1323# $thread_defines .= "#define $def\n";
1324# }
1325# }
1326 }
1327
1328$lflags="$libs$lflags" if ($libs ne "");
1329
1330if ($no_asm)
1331 {
1332 $cpuid_obj=$bn_obj=
1333 $des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj=$cmll_obj=
1334 $modes_obj=$sha1_obj=$md5_obj=$rmd160_obj=$wp_obj=$engines_obj="";
1335 }
1336
1337if (!$no_shared)
1338 {
1339 $cast_obj=""; # CAST assembler is not PIC
1340 }
1341
1342if ($threads)
1343 {
1344 $cflags=$thread_cflags;
1345 $openssl_thread_defines .= $thread_defines;
1346 }
1347
1348if ($zlib)
1349 {
1350 $cflags = "-DZLIB $cflags";
1351 if (defined($disabled{"zlib-dynamic"}))
1352 {
1353 if (defined($withargs{"zlib-lib"}))
1354 {
1355 $lflags = "$lflags -L" . $withargs{"zlib-lib"} . " -lz";
1356 }
1357 else
1358 {
1359 $lflags = "$lflags -lz";
1360 }
1361 }
1362 else
1363 {
1364 $cflags = "-DZLIB_SHARED $cflags";
1365 }
1366 }
1367
1368# You will find shlib_mark1 and shlib_mark2 explained in Makefile.org
1369my $shared_mark = "";
1370if ($shared_target eq "")
1371 {
1372 $no_shared_warn = 1 if !$no_shared;
1373 $no_shared = 1;
1374 }
1375if (!$no_shared)
1376 {
1377 if ($shared_cflag ne "")
1378 {
1379 $cflags = "$shared_cflag -DOPENSSL_PIC $cflags";
1380 }
1381 }
1382
1383if (!$IsMK1MF)
1384 {
1385 # add {no-}static-engine to options to allow mkdef.pl to work without extra arguments
1386 if ($no_shared)
1387 {
1388 $openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
1389 $options.=" static-engine";
1390 }
1391 else
1392 {
1393 $openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
1394 $options.=" no-static-engine";
1395 }
1396 }
1397
1398$cpuid_obj.=" uplink.o uplink-x86.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/);
1399
1400#
1401# Platform fix-ups
1402#
1403if ($target =~ /\-icc$/) # Intel C compiler
1404 {
1405 my $iccver=0;
1406 if (open(FD,"$cc -V 2>&1 |"))
1407 {
1408 while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); }
1409 close(FD);
1410 }
1411 if ($iccver>=8)
1412 {
1413 # Eliminate unnecessary dependency from libirc.a. This is
1414 # essential for shared library support, as otherwise
1415 # apps/openssl can end up in endless loop upon startup...
1416 $cflags.=" -Dmemcpy=__builtin_memcpy -Dmemset=__builtin_memset";
1417 }
1418 if ($iccver>=9)
1419 {
1420 $cflags.=" -i-static";
1421 $cflags=~s/\-no_cpprt/-no-cpprt/;
1422 }
1423 if ($iccver>=10)
1424 {
1425 $cflags=~s/\-i\-static/-static-intel/;
1426 }
1427 }
1428
1429# Unlike other OSes (like Solaris, Linux, Tru64, IRIX) BSD run-time
1430# linkers (tested OpenBSD, NetBSD and FreeBSD) "demand" RPATH set on
1431# .so objects. Apparently application RPATH is not global and does
1432# not apply to .so linked with other .so. Problem manifests itself
1433# when libssl.so fails to load libcrypto.so. One can argue that we
1434# should engrave this into Makefile.shared rules or into BSD-* config
1435# lines above. Meanwhile let's try to be cautious and pass -rpath to
1436# linker only when --prefix is not /usr.
1437if ($target =~ /^BSD\-/)
1438 {
1439 $shared_ldflag.=" -Wl,-rpath,\$(LIBRPATH)" if ($prefix !~ m|^/usr[/]*$|);
1440 }
1441
1442if ($sys_id ne "")
1443 {
1444 #$cflags="-DOPENSSL_SYSNAME_$sys_id $cflags";
1445 $openssl_sys_defines="#define OPENSSL_SYSNAME_$sys_id\n";
1446 }
1447
1448if ($ranlib eq "")
1449 {
1450 $ranlib = $default_ranlib;
1451 }
1452
1453#my ($bn1)=split(/\s+/,$bn_obj);
1454#$bn1 = "" unless defined $bn1;
1455#$bn1=$bn_asm unless ($bn1 =~ /\.o$/);
1456#$bn_obj="$bn1";
1457
1458$cpuid_obj="" if ($processor eq "386");
1459
1460$bn_obj = $bn_asm unless $bn_obj ne "";
1461# bn-586 is the only one implementing bn_*_part_words
1462$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn-586/);
1463$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /86/);
1464
1465$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /-mont/);
1466$cflags.=" -DOPENSSL_BN_ASM_MONT5" if ($bn_obj =~ /-mont5/);
1467$cflags.=" -DOPENSSL_BN_ASM_GF2m" if ($bn_obj =~ /-gf2m/);
1468
1469if ($fips)
1470 {
1471 $openssl_other_defines.="#define OPENSSL_FIPS\n";
1472 $cflags .= " -I\$(FIPSDIR)/include";
1473 }
1474
1475$cpuid_obj="mem_clr.o" unless ($cpuid_obj =~ /\.o$/);
1476$des_obj=$des_enc unless ($des_obj =~ /\.o$/);
1477$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/);
1478$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/);
1479$rc4_obj=$rc4_enc unless ($rc4_obj =~ /\.o$/);
1480$rc5_obj=$rc5_enc unless ($rc5_obj =~ /\.o$/);
1481if ($sha1_obj =~ /\.o$/)
1482 {
1483# $sha1_obj=$sha1_enc;
1484 $cflags.=" -DSHA1_ASM" if ($sha1_obj =~ /sx86/ || $sha1_obj =~ /sha1/);
1485 $cflags.=" -DSHA256_ASM" if ($sha1_obj =~ /sha256/);
1486 $cflags.=" -DSHA512_ASM" if ($sha1_obj =~ /sha512/);
1487 if ($sha1_obj =~ /sse2/)
1488 { if ($no_sse2)
1489 { $sha1_obj =~ s/\S*sse2\S+//; }
1490 elsif ($cflags !~ /OPENSSL_IA32_SSE2/)
1491 { $cflags.=" -DOPENSSL_IA32_SSE2"; }
1492 }
1493 }
1494if ($md5_obj =~ /\.o$/)
1495 {
1496# $md5_obj=$md5_enc;
1497 $cflags.=" -DMD5_ASM";
1498 }
1499if ($rmd160_obj =~ /\.o$/)
1500 {
1501# $rmd160_obj=$rmd160_enc;
1502 $cflags.=" -DRMD160_ASM";
1503 }
1504if ($aes_obj =~ /\.o$/)
1505 {
1506 $cflags.=" -DAES_ASM";
1507 # aes-ctr.o is not a real file, only indication that assembler
1508 # module implements AES_ctr32_encrypt...
1509 $cflags.=" -DAES_CTR_ASM" if ($aes_obj =~ s/\s*aes\-ctr\.o//);
1510 # aes-xts.o indicates presense of AES_xts_[en|de]crypt...
1511 $cflags.=" -DAES_XTS_ASM" if ($aes_obj =~ s/\s*aes\-xts\.o//);
1512 $aes_obj =~ s/\s*(vpaes|aesni)\-x86\.o//g if ($no_sse2);
1513 $cflags.=" -DVPAES_ASM" if ($aes_obj =~ m/vpaes/);
1514 $cflags.=" -DBSAES_ASM" if ($aes_obj =~ m/bsaes/);
1515 }
1516else {
1517 $aes_obj=$aes_enc;
1518 }
1519$wp_obj="" if ($wp_obj =~ /mmx/ && $processor eq "386");
1520if ($wp_obj =~ /\.o$/ && !$disabled{"whirlpool"})
1521 {
1522 $cflags.=" -DWHIRLPOOL_ASM";
1523 }
1524else {
1525 $wp_obj="wp_block.o";
1526 }
1527$cmll_obj=$cmll_enc unless ($cmll_obj =~ /.o$/);
1528if ($modes_obj =~ /ghash/)
1529 {
1530 $cflags.=" -DGHASH_ASM";
1531 }
1532
1533# "Stringify" the C flags string. This permits it to be made part of a string
1534# and works as well on command lines.
1535$cflags =~ s/([\\\"])/\\\1/g;
1536
1537my $version = "unknown";
1538my $version_num = "unknown";
1539my $major = "unknown";
1540my $minor = "unknown";
1541my $shlib_version_number = "unknown";
1542my $shlib_version_history = "unknown";
1543my $shlib_major = "unknown";
1544my $shlib_minor = "unknown";
1545
1546open(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n";
1547while (<IN>)
1548 {
1549 $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /;
1550 $version_num=$1 if /OPENSSL.VERSION.NUMBER.*0x(\S+)/;
1551 $shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/;
1552 $shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/;
1553 }
1554close(IN);
1555if ($shlib_version_history ne "") { $shlib_version_history .= ":"; }
1556
1557if ($version =~ /(^[0-9]*)\.([0-9\.]*)/)
1558 {
1559 $major=$1;
1560 $minor=$2;
1561 }
1562
1563if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/)
1564 {
1565 $shlib_major=$1;
1566 $shlib_minor=$2;
1567 }
1568
1569if ($strict_warnings)
1570 {
1571 my $wopt;
1572 die "ERROR --strict-warnings requires gcc" unless ($cc =~ /gcc$/);
1573 foreach $wopt (split /\s+/, $gcc_devteam_warn)
1574 {
1575 $cflags .= " $wopt" unless ($cflags =~ /$wopt/)
1576 }
1577 }
1578
1579open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
1580unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
1581open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
1582print OUT "### Generated automatically from Makefile.org by Configure.\n\n";
1583my $sdirs=0;
1584while (<IN>)
1585 {
1586 chomp;
1587 $sdirs = 1 if /^SDIRS=/;
1588 if ($sdirs) {
1589 my $dir;
1590 foreach $dir (@skip) {
1591 s/(\s)$dir /$1/;
1592 s/\s$dir$//;
1593 }
1594 }
1595 $sdirs = 0 unless /\\$/;
1596 s/engines // if (/^DIRS=/ && $disabled{"engine"});
1597 s/ccgost// if (/^ENGDIRS=/ && $disabled{"gost"});
1598 s/^VERSION=.*/VERSION=$version/;
1599 s/^MAJOR=.*/MAJOR=$major/;
1600 s/^MINOR=.*/MINOR=$minor/;
1601 s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=$shlib_version_number/;
1602 s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/;
1603 s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/;
1604 s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/;
1605 s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
1606 s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
1607 s/^MULTILIB=.*$/MULTILIB=$multilib/;
1608 s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
1609 s/^LIBDIR=.*$/LIBDIR=$libdir/;
1610 s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
1611 s/^PLATFORM=.*$/PLATFORM=$target/;
1612 s/^OPTIONS=.*$/OPTIONS=$options/;
1613 s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
1614 if ($cross_compile_prefix)
1615 {
1616 s/^CC=.*$/CROSS_COMPILE= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE\)$cc/;
1617 s/^AR=\s*/AR= \$\(CROSS_COMPILE\)/;
1618 s/^NM=\s*/NM= \$\(CROSS_COMPILE\)/;
1619 s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE\)/;
1620 s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE\)$cc/ if $cc eq "gcc";
1621 }
1622 else {
1623 s/^CC=.*$/CC= $cc/;
1624 s/^AR=\s*ar/AR= $ar/;
1625 s/^RANLIB=.*/RANLIB= $ranlib/;
1626 s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
1627 }
1628 s/^CFLAG=.*$/CFLAG= $cflags/;
1629 s/^DEPFLAG=.*$/DEPFLAG=$depflags/;
1630 s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/;
1631 s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
1632 s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/;
1633 s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/;
1634 s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
1635 s/^DES_ENC=.*$/DES_ENC= $des_obj/;
1636 s/^AES_ENC=.*$/AES_ENC= $aes_obj/;
1637 s/^BF_ENC=.*$/BF_ENC= $bf_obj/;
1638 s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/;
1639 s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/;
1640 s/^RC5_ENC=.*$/RC5_ENC= $rc5_obj/;
1641 s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/;
1642 s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/;
1643 s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/;
1644 s/^WP_ASM_OBJ=.*$/WP_ASM_OBJ= $wp_obj/;
1645 s/^CMLL_ENC=.*$/CMLL_ENC= $cmll_obj/;
1646 s/^MODES_ASM_OBJ.=*$/MODES_ASM_OBJ= $modes_obj/;
1647 s/^ENGINES_ASM_OBJ.=*$/ENGINES_ASM_OBJ= $engines_obj/;
1648 s/^PERLASM_SCHEME=.*$/PERLASM_SCHEME= $perlasm_scheme/;
1649 s/^PROCESSOR=.*/PROCESSOR= $processor/;
1650 s/^ARFLAGS=.*/ARFLAGS= $arflags/;
1651 s/^PERL=.*/PERL= $perl/;
1652 s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
1653 s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
1654 s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
1655 s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
1656
1657 s/^FIPSDIR=.*/FIPSDIR=$fipsdir/;
1658 s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
1659 s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips;
1660 s/^BASEADDR=.*/BASEADDR=$baseaddr/;
1661
1662 s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
1663 s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
1664 s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
1665 if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
1666 {
1667 my $sotmp = $1;
1668 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/;
1669 }
1670 elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.dylib$/)
1671 {
1672 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.dylib/;
1673 }
1674 elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
1675 {
1676 my $sotmp = $1;
1677 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
1678 }
1679 elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
1680 {
1681 s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/;
1682 }
1683 s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/;
1684 print OUT $_."\n";
1685 }
1686close(IN);
1687close(OUT);
1688rename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e $Makefile;
1689rename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n";
1690
1691print "CC =$cc\n";
1692print "CFLAG =$cflags\n";
1693print "EX_LIBS =$lflags\n";
1694print "CPUID_OBJ =$cpuid_obj\n";
1695print "BN_ASM =$bn_obj\n";
1696print "DES_ENC =$des_obj\n";
1697print "AES_ENC =$aes_obj\n";
1698print "BF_ENC =$bf_obj\n";
1699print "CAST_ENC =$cast_obj\n";
1700print "RC4_ENC =$rc4_obj\n";
1701print "RC5_ENC =$rc5_obj\n";
1702print "MD5_OBJ_ASM =$md5_obj\n";
1703print "SHA1_OBJ_ASM =$sha1_obj\n";
1704print "RMD160_OBJ_ASM=$rmd160_obj\n";
1705print "CMLL_ENC =$cmll_obj\n";
1706print "MODES_OBJ =$modes_obj\n";
1707print "ENGINES_OBJ =$engines_obj\n";
1708print "PROCESSOR =$processor\n";
1709print "RANLIB =$ranlib\n";
1710print "ARFLAGS =$arflags\n";
1711print "PERL =$perl\n";
1712print "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n"
1713 if $withargs{"krb5-include"} ne "";
1714
1715my $des_ptr=0;
1716my $des_risc1=0;
1717my $des_risc2=0;
1718my $des_unroll=0;
1719my $bn_ll=0;
1720my $def_int=2;
1721my $rc4_int=$def_int;
1722my $md2_int=$def_int;
1723my $idea_int=$def_int;
1724my $rc2_int=$def_int;
1725my $rc4_idx=0;
1726my $rc4_chunk=0;
1727my $bf_ptr=0;
1728my @type=("char","short","int","long");
1729my ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0);
1730my $export_var_as_fn=0;
1731
1732my $des_int;
1733
1734foreach (sort split(/\s+/,$bn_ops))
1735 {
1736 $des_ptr=1 if /DES_PTR/;
1737 $des_risc1=1 if /DES_RISC1/;
1738 $des_risc2=1 if /DES_RISC2/;
1739 $des_unroll=1 if /DES_UNROLL/;
1740 $des_int=1 if /DES_INT/;
1741 $bn_ll=1 if /BN_LLONG/;
1742 $rc4_int=0 if /RC4_CHAR/;
1743 $rc4_int=3 if /RC4_LONG/;
1744 $rc4_idx=1 if /RC4_INDEX/;
1745 $rc4_chunk=1 if /RC4_CHUNK/;
1746 $rc4_chunk=2 if /RC4_CHUNK_LL/;
1747 $md2_int=0 if /MD2_CHAR/;
1748 $md2_int=3 if /MD2_LONG/;
1749 $idea_int=1 if /IDEA_SHORT/;
1750 $idea_int=3 if /IDEA_LONG/;
1751 $rc2_int=1 if /RC2_SHORT/;
1752 $rc2_int=3 if /RC2_LONG/;
1753 $bf_ptr=1 if $_ eq "BF_PTR";
1754 $bf_ptr=2 if $_ eq "BF_PTR2";
1755 ($b64l,$b64,$b32,$b16,$b8)=(0,1,0,0,0) if /SIXTY_FOUR_BIT/;
1756 ($b64l,$b64,$b32,$b16,$b8)=(1,0,0,0,0) if /SIXTY_FOUR_BIT_LONG/;
1757 ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0) if /THIRTY_TWO_BIT/;
1758 ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,1,0) if /SIXTEEN_BIT/;
1759 ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/;
1760 $export_var_as_fn=1 if /EXPORT_VAR_AS_FN/;
1761 }
1762
1763open(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n";
1764unlink("crypto/opensslconf.h.new") || die "unable to remove old crypto/opensslconf.h.new:$!\n" if -e "crypto/opensslconf.h.new";
1765open(OUT,'>crypto/opensslconf.h.new') || die "unable to create crypto/opensslconf.h.new:$!\n";
1766print OUT "/* opensslconf.h */\n";
1767print OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n";
1768
1769print OUT "/* OpenSSL was configured with the following options: */\n";
1770my $openssl_algorithm_defines_trans = $openssl_algorithm_defines;
1771$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;
1772$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n# define $1\n# endif/mg;
1773$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1774$openssl_algorithm_defines = " /* no ciphers excluded */\n" if $openssl_algorithm_defines eq "";
1775$openssl_thread_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1776$openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1777$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
1778print OUT $openssl_sys_defines;
1779print OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n";
1780print OUT $openssl_experimental_defines;
1781print OUT "\n";
1782print OUT $openssl_algorithm_defines;
1783print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n\n";
1784print OUT $openssl_thread_defines;
1785print OUT $openssl_other_defines,"\n";
1786
1787print OUT "/* The OPENSSL_NO_* macros are also defined as NO_* if the application\n";
1788print OUT " asks for it. This is a transient feature that is provided for those\n";
1789print OUT " who haven't had the time to do the appropriate changes in their\n";
1790print OUT " applications. */\n";
1791print OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n";
1792print OUT $openssl_algorithm_defines_trans;
1793print OUT "#endif\n\n";
1794
1795print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj ne "mem_clr.o");
1796
1797while (<IN>)
1798 {
1799 if (/^#define\s+OPENSSLDIR/)
1800 {
1801 my $foo = $openssldir;
1802 $foo =~ s/\\/\\\\/g;
1803 print OUT "#define OPENSSLDIR \"$foo\"\n";
1804 }
1805 elsif (/^#define\s+ENGINESDIR/)
1806 {
1807 my $foo = "$prefix/$libdir/engines";
1808 $foo =~ s/\\/\\\\/g;
1809 print OUT "#define ENGINESDIR \"$foo\"\n";
1810 }
1811 elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
1812 { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
1813 if $export_var_as_fn;
1814 printf OUT "#%s OPENSSL_EXPORT_VAR_AS_FUNCTION\n",
1815 ($export_var_as_fn)?"define":"undef"; }
1816 elsif (/^#define\s+OPENSSL_UNISTD/)
1817 {
1818 $unistd = "<unistd.h>" if $unistd eq "";
1819 print OUT "#define OPENSSL_UNISTD $unistd\n";
1820 }
1821 elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/)
1822 { printf OUT "#%s SIXTY_FOUR_BIT_LONG\n",($b64l)?"define":"undef"; }
1823 elsif (/^#((define)|(undef))\s+SIXTY_FOUR_BIT/)
1824 { printf OUT "#%s SIXTY_FOUR_BIT\n",($b64)?"define":"undef"; }
1825 elsif (/^#((define)|(undef))\s+THIRTY_TWO_BIT/)
1826 { printf OUT "#%s THIRTY_TWO_BIT\n",($b32)?"define":"undef"; }
1827 elsif (/^#((define)|(undef))\s+SIXTEEN_BIT/)
1828 { printf OUT "#%s SIXTEEN_BIT\n",($b16)?"define":"undef"; }
1829 elsif (/^#((define)|(undef))\s+EIGHT_BIT/)
1830 { printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; }
1831 elsif (/^#((define)|(undef))\s+BN_LLONG\s*$/)
1832 { printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; }
1833 elsif (/^\#define\s+DES_LONG\s+.*/)
1834 { printf OUT "#define DES_LONG unsigned %s\n",
1835 ($des_int)?'int':'long'; }
1836 elsif (/^\#(define|undef)\s+DES_PTR/)
1837 { printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; }
1838 elsif (/^\#(define|undef)\s+DES_RISC1/)
1839 { printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; }
1840 elsif (/^\#(define|undef)\s+DES_RISC2/)
1841 { printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; }
1842 elsif (/^\#(define|undef)\s+DES_UNROLL/)
1843 { printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; }
1844 elsif (/^#define\s+RC4_INT\s/)
1845 { printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; }
1846 elsif (/^#undef\s+RC4_CHUNK/)
1847 {
1848 printf OUT "#undef RC4_CHUNK\n" if $rc4_chunk==0;
1849 printf OUT "#define RC4_CHUNK unsigned long\n" if $rc4_chunk==1;
1850 printf OUT "#define RC4_CHUNK unsigned long long\n" if $rc4_chunk==2;
1851 }
1852 elsif (/^#((define)|(undef))\s+RC4_INDEX/)
1853 { printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; }
1854 elsif (/^#(define|undef)\s+I386_ONLY/)
1855 { printf OUT "#%s I386_ONLY\n", ($processor eq "386")?
1856 "define":"undef"; }
1857 elsif (/^#define\s+MD2_INT\s/)
1858 { printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; }
1859 elsif (/^#define\s+IDEA_INT\s/)
1860 {printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];}
1861 elsif (/^#define\s+RC2_INT\s/)
1862 {printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];}
1863 elsif (/^#(define|undef)\s+BF_PTR/)
1864 {
1865 printf OUT "#undef BF_PTR\n" if $bf_ptr == 0;
1866 printf OUT "#define BF_PTR\n" if $bf_ptr == 1;
1867 printf OUT "#define BF_PTR2\n" if $bf_ptr == 2;
1868 }
1869 else
1870 { print OUT $_; }
1871 }
1872close(IN);
1873close(OUT);
1874rename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h";
1875rename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to rename crypto/opensslconf.h.new\n";
1876
1877
1878# Fix the date
1879
1880print "SIXTY_FOUR_BIT_LONG mode\n" if $b64l;
1881print "SIXTY_FOUR_BIT mode\n" if $b64;
1882print "THIRTY_TWO_BIT mode\n" if $b32;
1883print "SIXTEEN_BIT mode\n" if $b16;
1884print "EIGHT_BIT mode\n" if $b8;
1885print "DES_PTR used\n" if $des_ptr;
1886print "DES_RISC1 used\n" if $des_risc1;
1887print "DES_RISC2 used\n" if $des_risc2;
1888print "DES_UNROLL used\n" if $des_unroll;
1889print "DES_INT used\n" if $des_int;
1890print "BN_LLONG mode\n" if $bn_ll;
1891print "RC4 uses u$type[$rc4_int]\n" if $rc4_int != $def_int;
1892print "RC4_INDEX mode\n" if $rc4_idx;
1893print "RC4_CHUNK is undefined\n" if $rc4_chunk==0;
1894print "RC4_CHUNK is unsigned long\n" if $rc4_chunk==1;
1895print "RC4_CHUNK is unsigned long long\n" if $rc4_chunk==2;
1896print "MD2 uses u$type[$md2_int]\n" if $md2_int != $def_int;
1897print "IDEA uses u$type[$idea_int]\n" if $idea_int != $def_int;
1898print "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int;
1899print "BF_PTR used\n" if $bf_ptr == 1;
1900print "BF_PTR2 used\n" if $bf_ptr == 2;
1901
1902if($IsMK1MF) {
1903 open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h";
1904 printf OUT <<EOF;
1905#ifndef MK1MF_BUILD
1906 /* auto-generated by Configure for crypto/cversion.c:
1907 * for Unix builds, crypto/Makefile.ssl generates functional definitions;
1908 * Windows builds (and other mk1mf builds) compile cversion.c with
1909 * -DMK1MF_BUILD and use definitions added to this file by util/mk1mf.pl. */
1910 #error "Windows builds (PLATFORM=$target) use mk1mf.pl-created Makefiles"
1911#endif
1912EOF
1913 close(OUT);
1914} else {
1915 my $make_command = "$make PERL=\'$perl\'";
1916 my $make_targets = "";
1917 $make_targets .= " links" if $symlink;
1918 $make_targets .= " depend" if $depflags ne $default_depflags && $make_depend;
1919 $make_targets .= " gentests" if $symlink;
1920 (system $make_command.$make_targets) == 0 or exit $?
1921 if $make_targets ne "";
1922 if ( $perl =~ m@^/@) {
1923 &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
1924 &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
1925 } else {
1926 # No path for Perl known ...
1927 &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
1928 &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
1929 }
1930 if ($depflags ne $default_depflags && !$make_depend) {
1931 print <<EOF;
1932
1933Since you've disabled or enabled at least one algorithm, you need to do
1934the following before building:
1935
1936 make depend
1937EOF
1938 }
1939}
1940
1941# create the ms/version32.rc file if needed
1942if ($IsMK1MF && ($target !~ /^netware/)) {
1943 my ($v1, $v2, $v3, $v4);
1944 if ($version_num =~ /(^[0-9a-f]{1})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i) {
1945 $v1=hex $1;
1946 $v2=hex $2;
1947 $v3=hex $3;
1948 $v4=hex $4;
1949 }
1950 open (OUT,">ms/version32.rc") || die "Can't open ms/version32.rc";
1951 print OUT <<EOF;
1952#include <winver.h>
1953
1954LANGUAGE 0x09,0x01
1955
19561 VERSIONINFO
1957 FILEVERSION $v1,$v2,$v3,$v4
1958 PRODUCTVERSION $v1,$v2,$v3,$v4
1959 FILEFLAGSMASK 0x3fL
1960#ifdef _DEBUG
1961 FILEFLAGS 0x01L
1962#else
1963 FILEFLAGS 0x00L
1964#endif
1965 FILEOS VOS__WINDOWS32
1966 FILETYPE VFT_DLL
1967 FILESUBTYPE 0x0L
1968BEGIN
1969 BLOCK "StringFileInfo"
1970 BEGIN
1971 BLOCK "040904b0"
1972 BEGIN
1973 // Required:
1974 VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
1975 VALUE "FileDescription", "OpenSSL Shared Library\\0"
1976 VALUE "FileVersion", "$version\\0"
1977#if defined(CRYPTO)
1978 VALUE "InternalName", "libeay32\\0"
1979 VALUE "OriginalFilename", "libeay32.dll\\0"
1980#elif defined(SSL)
1981 VALUE "InternalName", "ssleay32\\0"
1982 VALUE "OriginalFilename", "ssleay32.dll\\0"
1983#endif
1984 VALUE "ProductName", "The OpenSSL Toolkit\\0"
1985 VALUE "ProductVersion", "$version\\0"
1986 // Optional:
1987 //VALUE "Comments", "\\0"
1988 VALUE "LegalCopyright", "Copyright © 1998-2005 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
1989 //VALUE "LegalTrademarks", "\\0"
1990 //VALUE "PrivateBuild", "\\0"
1991 //VALUE "SpecialBuild", "\\0"
1992 END
1993 END
1994 BLOCK "VarFileInfo"
1995 BEGIN
1996 VALUE "Translation", 0x409, 0x4b0
1997 END
1998END
1999EOF
2000 close(OUT);
2001 }
2002
2003print <<EOF;
2004
2005Configured for $target.
2006EOF
2007
2008print <<\EOF if (!$no_threads && !$threads);
2009
2010The library could not be configured for supporting multi-threaded
2011applications as the compiler options required on this system are not known.
2012See file INSTALL for details if you need multi-threading.
2013EOF
2014
2015print <<\EOF if ($no_shared_warn);
2016
2017You gave the option 'shared'. Normally, that would give you shared libraries.
2018Unfortunately, the OpenSSL configuration doesn't include shared library support
2019for this platform yet, so it will pretend you gave the option 'no-shared'. If
2020you can inform the developpers (openssl-dev\@openssl.org) how to support shared
2021libraries on this platform, they will at least look at it and try their best
2022(but please first make sure you have tried with a current version of OpenSSL).
2023EOF
2024
2025exit(0);
2026
2027sub usage
2028 {
2029 print STDERR $usage;
2030 print STDERR "\npick os/compiler from:\n";
2031 my $j=0;
2032 my $i;
2033 my $k=0;
2034 foreach $i (sort keys %table)
2035 {
2036 next if $i =~ /^debug/;
2037 $k += length($i) + 1;
2038 if ($k > 78)
2039 {
2040 print STDERR "\n";
2041 $k=length($i);
2042 }
2043 print STDERR $i . " ";
2044 }
2045 foreach $i (sort keys %table)
2046 {
2047 next if $i !~ /^debug/;
2048 $k += length($i) + 1;
2049 if ($k > 78)
2050 {
2051 print STDERR "\n";
2052 $k=length($i);
2053 }
2054 print STDERR $i . " ";
2055 }
2056 print STDERR "\n\nNOTE: If in doubt, on Unix-ish systems use './config'.\n";
2057 exit(1);
2058 }
2059
2060sub which
2061 {
2062 my($name)=@_;
2063 my $path;
2064 foreach $path (split /:/, $ENV{PATH})
2065 {
2066 if (-f "$path/$name$exe_ext" and -x _)
2067 {
2068 return "$path/$name$exe_ext" unless ($name eq "perl" and
2069 system("$path/$name$exe_ext -e " . '\'exit($]<5.0);\''));
2070 }
2071 }
2072 }
2073
2074sub dofile
2075 {
2076 my $f; my $p; my %m; my @a; my $k; my $ff;
2077 ($f,$p,%m)=@_;
2078
2079 open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n";
2080 @a=<IN>;
2081 close(IN);
2082 foreach $k (keys %m)
2083 {
2084 grep(/$k/ && ($_=sprintf($m{$k}."\n",$p)),@a);
2085 }
2086 open(OUT,">$f.new") || die "unable to open $f.new:$!\n";
2087 print OUT @a;
2088 close(OUT);
2089 rename($f,"$f.bak") || die "unable to rename $f\n" if -e $f;
2090 rename("$f.new",$f) || die "unable to rename $f.new\n";
2091 }
2092
2093sub print_table_entry
2094 {
2095 my $target = shift;
2096
2097 (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags,
2098 my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj,
2099 my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
2100 my $rc5_obj,my $wp_obj,my $cmll_obj,my $modes_obj, my $engines_obj,
2101 my $perlasm_scheme,my $dso_scheme,my $shared_target,my $shared_cflag,
2102 my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags,my $multilib)=
2103 split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
2104
2105 print <<EOF
2106
2107*** $target
2108\$cc = $cc
2109\$cflags = $cflags
2110\$unistd = $unistd
2111\$thread_cflag = $thread_cflag
2112\$sys_id = $sys_id
2113\$lflags = $lflags
2114\$bn_ops = $bn_ops
2115\$cpuid_obj = $cpuid_obj
2116\$bn_obj = $bn_obj
2117\$des_obj = $des_obj
2118\$aes_obj = $aes_obj
2119\$bf_obj = $bf_obj
2120\$md5_obj = $md5_obj
2121\$sha1_obj = $sha1_obj
2122\$cast_obj = $cast_obj
2123\$rc4_obj = $rc4_obj
2124\$rmd160_obj = $rmd160_obj
2125\$rc5_obj = $rc5_obj
2126\$wp_obj = $wp_obj
2127\$cmll_obj = $cmll_obj
2128\$modes_obj = $modes_obj
2129\$engines_obj = $engines_obj
2130\$perlasm_scheme = $perlasm_scheme
2131\$dso_scheme = $dso_scheme
2132\$shared_target= $shared_target
2133\$shared_cflag = $shared_cflag
2134\$shared_ldflag = $shared_ldflag
2135\$shared_extension = $shared_extension
2136\$ranlib = $ranlib
2137\$arflags = $arflags
2138\$multilib = $multilib
2139EOF
2140 }
2141
2142sub test_sanity
2143 {
2144 my $errorcnt = 0;
2145
2146 print STDERR "=" x 70, "\n";
2147 print STDERR "=== SANITY TESTING!\n";
2148 print STDERR "=== No configuration will be done, all other arguments will be ignored!\n";
2149 print STDERR "=" x 70, "\n";
2150
2151 foreach $target (sort keys %table)
2152 {
2153 @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
2154
2155 if ($fields[$idx_dso_scheme-1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
2156 {
2157 $errorcnt++;
2158 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
2159 print STDERR " in the previous field\n";
2160 }
2161 elsif ($fields[$idx_dso_scheme+1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
2162 {
2163 $errorcnt++;
2164 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
2165 print STDERR " in the following field\n";
2166 }
2167 elsif ($fields[$idx_dso_scheme] !~ /^(beos|dl|dlfcn|win32|vms|)$/)
2168 {
2169 $errorcnt++;
2170 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
2171 print STDERR " valid values are 'beos', 'dl', 'dlfcn', 'win32' and 'vms'\n";
2172 }
2173 }
2174 print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
2175 return $errorcnt;
2176 }
diff --git a/src/lib/libssl/src/Makefile b/src/lib/libssl/src/Makefile
deleted file mode 100644
index 4a40b701d9..0000000000
--- a/src/lib/libssl/src/Makefile
+++ /dev/null
@@ -1,686 +0,0 @@
1### Generated automatically from Makefile.org by Configure.
2
3##
4## Makefile for OpenSSL
5##
6
7VERSION=1.0.1g
8MAJOR=1
9MINOR=0.1
10SHLIB_VERSION_NUMBER=1.0.0
11SHLIB_VERSION_HISTORY=
12SHLIB_MAJOR=1
13SHLIB_MINOR=0.0
14SHLIB_EXT=
15PLATFORM=dist
16OPTIONS= no-ec_nistp_64_gcc_128 no-gmp no-jpake no-krb5 no-md2 no-rc5 no-rfc3779 no-sctp no-shared no-store no-zlib no-zlib-dynamic static-engine
17CONFIGURE_ARGS=dist
18SHLIB_TARGET=
19
20# HERE indicates where this Makefile lives. This can be used to indicate
21# where sub-Makefiles are expected to be. Currently has very limited usage,
22# and should probably not be bothered with at all.
23HERE=.
24
25# INSTALL_PREFIX is for package builders so that they can configure
26# for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
27# Normally it is left empty.
28INSTALL_PREFIX=
29INSTALLTOP=/usr/local/ssl
30
31# Do not edit this manually. Use Configure --openssldir=DIR do change this!
32OPENSSLDIR=/usr/local/ssl
33
34# NO_IDEA - Define to build without the IDEA algorithm
35# NO_RC4 - Define to build without the RC4 algorithm
36# NO_RC2 - Define to build without the RC2 algorithm
37# THREADS - Define when building with threads, you will probably also need any
38# system defines as well, i.e. _REENTERANT for Solaris 2.[34]
39# TERMIO - Define the termio terminal subsystem, needed if sgtty is missing.
40# TERMIOS - Define the termios terminal subsystem, Silicon Graphics.
41# LONGCRYPT - Define to use HPUX 10.x's long password modification to crypt(3).
42# DEVRANDOM - Give this the value of the 'random device' if your OS supports
43# one. 32 bytes will be read from this when the random
44# number generator is initalised.
45# SSL_FORBID_ENULL - define if you want the server to be not able to use the
46# NULL encryption ciphers.
47#
48# LOCK_DEBUG - turns on lots of lock debug output :-)
49# REF_CHECK - turn on some xyz_free() assertions.
50# REF_PRINT - prints some stuff on structure free.
51# CRYPTO_MDEBUG - turns on my 'memory leak' detecting stuff
52# MFUNC - Make all Malloc/Free/Realloc calls call
53# CRYPTO_malloc/CRYPTO_free/CRYPTO_realloc which can be setup to
54# call application defined callbacks via CRYPTO_set_mem_functions()
55# MD5_ASM needs to be defined to use the x86 assembler for MD5
56# SHA1_ASM needs to be defined to use the x86 assembler for SHA1
57# RMD160_ASM needs to be defined to use the x86 assembler for RIPEMD160
58# Do not define B_ENDIAN or L_ENDIAN if 'unsigned long' == 8. It must
59# equal 4.
60# PKCS1_CHECK - pkcs1 tests.
61
62CC= cc
63CFLAG= -O
64DEPFLAG= -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
65PEX_LIBS=
66EX_LIBS=
67EXE_EXT=
68ARFLAGS=
69AR= ar $(ARFLAGS) r
70RANLIB= /usr/bin/ranlib
71NM= nm
72PERL= /usr/bin/perl
73TAR= tar
74TARFLAGS= --no-recursion --record-size=10240
75MAKEDEPPROG=makedepend
76LIBDIR=lib
77
78# We let the C compiler driver to take care of .s files. This is done in
79# order to be excused from maintaining a separate set of architecture
80# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
81# gcc, then the driver will automatically translate it to -xarch=v8plus
82# and pass it down to assembler.
83AS=$(CC) -c
84ASFLAG=$(CFLAG)
85
86# For x86 assembler: Set PROCESSOR to 386 if you want to support
87# the 80386.
88PROCESSOR=
89
90# CPUID module collects small commonly used assembler snippets
91CPUID_OBJ= mem_clr.o
92BN_ASM= bn_asm.o
93DES_ENC= des_enc.o fcrypt_b.o
94AES_ENC= aes_core.o aes_cbc.o
95BF_ENC= bf_enc.o
96CAST_ENC= c_enc.o
97RC4_ENC= rc4_enc.o rc4_skey.o
98RC5_ENC= rc5_enc.o
99MD5_ASM_OBJ=
100SHA1_ASM_OBJ=
101RMD160_ASM_OBJ=
102WP_ASM_OBJ= wp_block.o
103CMLL_ENC= camellia.o cmll_misc.o cmll_cbc.o
104MODES_ASM_OBJ=
105ENGINES_ASM_OBJ=
106PERLASM_SCHEME=
107
108# KRB5 stuff
109KRB5_INCLUDES=
110LIBKRB5=
111
112# Zlib stuff
113ZLIB_INCLUDE=
114LIBZLIB=
115
116# TOP level FIPS install directory.
117FIPSDIR=/usr/local/ssl/fips-2.0
118
119# This is the location of fipscanister.o and friends.
120# The FIPS module build will place it $(INSTALLTOP)/lib
121# but since $(INSTALLTOP) can only take the default value
122# when the module is built it will be in /usr/local/ssl/lib
123# $(INSTALLTOP) for this build may be different so hard
124# code the path.
125
126FIPSLIBDIR=
127
128# The location of the library which contains fipscanister.o
129# normally it will be libcrypto unless fipsdso is set in which
130# case it will be libfips. If not compiling in FIPS mode at all
131# this is empty making it a useful test for a FIPS compile.
132
133FIPSCANLIB=
134
135# Shared library base address. Currently only used on Windows.
136#
137
138BASEADDR=0xFB00000
139
140DIRS= crypto ssl engines apps test tools
141ENGDIRS= ccgost
142SHLIBDIRS= crypto ssl
143
144# dirs in crypto to build
145SDIRS= \
146 objects \
147 md4 md5 sha mdc2 hmac ripemd whrlpool \
148 des aes rc2 rc4 idea bf cast camellia seed modes \
149 bn ec rsa dsa ecdsa dh ecdh dso engine \
150 buffer bio stack lhash rand err \
151 evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
152 cms pqueue ts srp cmac
153# keep in mind that the above list is adjusted by ./Configure
154# according to no-xxx arguments...
155
156# tests to perform. "alltests" is a special word indicating that all tests
157# should be performed.
158TESTS = alltests
159
160MAKEFILE= Makefile
161
162MANDIR=$(OPENSSLDIR)/man
163MAN1=1
164MAN3=3
165MANSUFFIX=
166HTMLSUFFIX=html
167HTMLDIR=$(OPENSSLDIR)/html
168SHELL=/bin/sh
169
170TOP= .
171ONEDIRS=out tmp
172EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS
173WDIRS= windows
174LIBS= libcrypto.a libssl.a
175SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
176SHARED_SSL=libssl$(SHLIB_EXT)
177SHARED_LIBS=
178SHARED_LIBS_LINK_EXTS=
179SHARED_LDFLAGS=
180
181GENERAL= Makefile
182BASENAME= openssl
183NAME= $(BASENAME)-$(VERSION)
184TARFILE= $(NAME).tar
185WTARFILE= $(NAME)-win.tar
186EXHEADER= e_os2.h
187HEADER= e_os.h
188
189all: Makefile build_all openssl.pc libssl.pc libcrypto.pc
190
191# as we stick to -e, CLEARENV ensures that local variables in lower
192# Makefiles remain local and variable. $${VAR+VAR} is tribute to Korn
193# shell, which [annoyingly enough] terminates unset with error if VAR
194# is not present:-( TOP= && unset TOP is tribute to HP-UX /bin/sh,
195# which terminates unset with error if no variable was present:-(
196CLEARENV= TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS} \
197 $${INCLUDE+INCLUDE} $${INCLUDES+INCLUDES} \
198 $${DIR+DIR} $${DIRS+DIRS} $${SRC+SRC} \
199 $${LIBSRC+LIBSRC} $${LIBOBJ+LIBOBJ} $${ALL+ALL} \
200 $${EXHEADER+EXHEADER} $${HEADER+HEADER} \
201 $${GENERAL+GENERAL} $${CFLAGS+CFLAGS} \
202 $${ASFLAGS+ASFLAGS} $${AFLAGS+AFLAGS} \
203 $${LDCMD+LDCMD} $${LDFLAGS+LDFLAGS} $${SCRIPTS+SCRIPTS} \
204 $${SHAREDCMD+SHAREDCMD} $${SHAREDFLAGS+SHAREDFLAGS} \
205 $${SHARED_LIB+SHARED_LIB} $${LIBEXTRAS+LIBEXTRAS}
206
207BUILDENV= PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
208 CC='$(CC)' CFLAG='$(CFLAG)' \
209 AS='$(CC)' ASFLAG='$(CFLAG) -c' \
210 AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)' \
211 CROSS_COMPILE='$(CROSS_COMPILE)' \
212 PERL='$(PERL)' ENGDIRS='$(ENGDIRS)' \
213 SDIRS='$(SDIRS)' LIBRPATH='$(INSTALLTOP)/$(LIBDIR)' \
214 INSTALL_PREFIX='$(INSTALL_PREFIX)' \
215 INSTALLTOP='$(INSTALLTOP)' OPENSSLDIR='$(OPENSSLDIR)' \
216 LIBDIR='$(LIBDIR)' \
217 MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD $(MAKEDEPPROG)' \
218 DEPFLAG='-DOPENSSL_NO_DEPRECATED $(DEPFLAG)' \
219 MAKEDEPPROG='$(MAKEDEPPROG)' \
220 SHARED_LDFLAGS='$(SHARED_LDFLAGS)' \
221 KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)' \
222 ZLIB_INCLUDE='$(ZLIB_INCLUDE)' LIBZLIB='$(LIBZLIB)' \
223 EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)' \
224 SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)' \
225 PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)' \
226 CPUID_OBJ='$(CPUID_OBJ)' \
227 BN_ASM='$(BN_ASM)' DES_ENC='$(DES_ENC)' \
228 AES_ENC='$(AES_ENC)' CMLL_ENC='$(CMLL_ENC)' \
229 BF_ENC='$(BF_ENC)' CAST_ENC='$(CAST_ENC)' \
230 RC4_ENC='$(RC4_ENC)' RC5_ENC='$(RC5_ENC)' \
231 SHA1_ASM_OBJ='$(SHA1_ASM_OBJ)' \
232 MD5_ASM_OBJ='$(MD5_ASM_OBJ)' \
233 RMD160_ASM_OBJ='$(RMD160_ASM_OBJ)' \
234 WP_ASM_OBJ='$(WP_ASM_OBJ)' \
235 MODES_ASM_OBJ='$(MODES_ASM_OBJ)' \
236 ENGINES_ASM_OBJ='$(ENGINES_ASM_OBJ)' \
237 PERLASM_SCHEME='$(PERLASM_SCHEME)' \
238 FIPSLIBDIR='${FIPSLIBDIR}' \
239 FIPSDIR='${FIPSDIR}' \
240 FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}" \
241 THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
242# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
243# which in turn eliminates ambiguities in variable treatment with -e.
244
245# BUILD_CMD is a generic macro to build a given target in a given
246# subdirectory. The target must be given through the shell variable
247# `target' and the subdirectory to build in must be given through `dir'.
248# This macro shouldn't be used directly, use RECURSIVE_BUILD_CMD or
249# BUILD_ONE_CMD instead.
250#
251# BUILD_ONE_CMD is a macro to build a given target in a given
252# subdirectory if that subdirectory is part of $(DIRS). It requires
253# exactly the same shell variables as BUILD_CMD.
254#
255# RECURSIVE_BUILD_CMD is a macro to build a given target in all
256# subdirectories defined in $(DIRS). It requires that the target
257# is given through the shell variable `target'.
258BUILD_CMD= if [ -d "$$dir" ]; then \
259 ( cd $$dir && echo "making $$target in $$dir..." && \
260 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \
261 ) || exit 1; \
262 fi
263RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done
264BUILD_ONE_CMD=\
265 if expr " $(DIRS) " : ".* $$dir " >/dev/null 2>&1; then \
266 $(BUILD_CMD); \
267 fi
268
269reflect:
270 @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
271
272sub_all: build_all
273build_all: build_libs build_apps build_tests build_tools
274
275build_libs: build_crypto build_ssl build_engines
276
277build_crypto:
278 @dir=crypto; target=all; $(BUILD_ONE_CMD)
279build_ssl:
280 @dir=ssl; target=all; $(BUILD_ONE_CMD)
281build_engines:
282 @dir=engines; target=all; $(BUILD_ONE_CMD)
283build_apps:
284 @dir=apps; target=all; $(BUILD_ONE_CMD)
285build_tests:
286 @dir=test; target=all; $(BUILD_ONE_CMD)
287build_tools:
288 @dir=tools; target=all; $(BUILD_ONE_CMD)
289
290all_testapps: build_libs build_testapps
291build_testapps:
292 @dir=crypto; target=testapps; $(BUILD_ONE_CMD)
293
294fips_premain_dso$(EXE_EXT): libcrypto.a
295 [ -z "$(FIPSCANLIB)" ] || $(CC) $(CFLAG) -Iinclude \
296 -DFINGERPRINT_PREMAIN_DSO_LOAD -o $@ \
297 $(FIPSLIBDIR)fips_premain.c $(FIPSLIBDIR)fipscanister.o \
298 libcrypto.a $(EX_LIBS)
299
300libcrypto$(SHLIB_EXT): libcrypto.a fips_premain_dso$(EXE_EXT)
301 @if [ "$(SHLIB_TARGET)" != "" ]; then \
302 if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
303 FIPSLD_LIBCRYPTO=libcrypto.a ; \
304 FIPSLD_CC="$(CC)"; CC=$(FIPSDIR)/bin/fipsld; \
305 export CC FIPSLD_CC FIPSLD_LIBCRYPTO; \
306 fi; \
307 $(MAKE) -e SHLIBDIRS=crypto CC="$${CC:-$(CC)}" build-shared && \
308 (touch -c fips_premain_dso$(EXE_EXT) || :); \
309 else \
310 echo "There's no support for shared libraries on this platform" >&2; \
311 exit 1; \
312 fi
313
314libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
315 @if [ "$(SHLIB_TARGET)" != "" ]; then \
316 $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
317 else \
318 echo "There's no support for shared libraries on this platform" >&2; \
319 exit 1; \
320 fi
321
322clean-shared:
323 @set -e; for i in $(SHLIBDIRS); do \
324 if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
325 tmp="$(SHARED_LIBS_LINK_EXTS)"; \
326 for j in $${tmp:-x}; do \
327 ( set -x; rm -f lib$$i$$j ); \
328 done; \
329 fi; \
330 ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \
331 if [ "$(PLATFORM)" = "Cygwin" ]; then \
332 ( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \
333 fi; \
334 done
335
336link-shared:
337 @ set -e; for i in $(SHLIBDIRS); do \
338 $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
339 LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
340 LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
341 symlink.$(SHLIB_TARGET); \
342 libs="$$libs -l$$i"; \
343 done
344
345build-shared: do_$(SHLIB_TARGET) link-shared
346
347do_$(SHLIB_TARGET):
348 @ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \
349 if [ "$$i" = "ssl" -a -n "$(LIBKRB5)" ]; then \
350 libs="$(LIBKRB5) $$libs"; \
351 fi; \
352 $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
353 LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
354 LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
355 LIBDEPS="$$libs $(EX_LIBS)" \
356 link_a.$(SHLIB_TARGET); \
357 libs="-l$$i $$libs"; \
358 done
359
360libcrypto.pc: Makefile
361 @ ( echo 'prefix=$(INSTALLTOP)'; \
362 echo 'exec_prefix=$${prefix}'; \
363 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
364 echo 'includedir=$${prefix}/include'; \
365 echo ''; \
366 echo 'Name: OpenSSL-libcrypto'; \
367 echo 'Description: OpenSSL cryptography library'; \
368 echo 'Version: '$(VERSION); \
369 echo 'Requires: '; \
370 echo 'Libs: -L$${libdir} -lcrypto'; \
371 echo 'Libs.private: $(EX_LIBS)'; \
372 echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > libcrypto.pc
373
374libssl.pc: Makefile
375 @ ( echo 'prefix=$(INSTALLTOP)'; \
376 echo 'exec_prefix=$${prefix}'; \
377 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
378 echo 'includedir=$${prefix}/include'; \
379 echo ''; \
380 echo 'Name: OpenSSL'; \
381 echo 'Description: Secure Sockets Layer and cryptography libraries'; \
382 echo 'Version: '$(VERSION); \
383 echo 'Requires: '; \
384 echo 'Libs: -L$${libdir} -lssl -lcrypto'; \
385 echo 'Libs.private: $(EX_LIBS)'; \
386 echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > libssl.pc
387
388openssl.pc: Makefile
389 @ ( echo 'prefix=$(INSTALLTOP)'; \
390 echo 'exec_prefix=$${prefix}'; \
391 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
392 echo 'includedir=$${prefix}/include'; \
393 echo ''; \
394 echo 'Name: OpenSSL'; \
395 echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \
396 echo 'Version: '$(VERSION); \
397 echo 'Requires: '; \
398 echo 'Libs: -L$${libdir} -lssl -lcrypto'; \
399 echo 'Libs.private: $(EX_LIBS)'; \
400 echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > openssl.pc
401
402Makefile: Makefile.org Configure config
403 @echo "Makefile is older than Makefile.org, Configure or config."
404 @echo "Reconfigure the source tree (via './config' or 'perl Configure'), please."
405 @false
406
407libclean:
408 rm -f *.map *.so *.so.* *.dylib *.dll engines/*.so engines/*.dll engines/*.dylib *.a engines/*.a */lib */*/lib
409
410clean: libclean
411 rm -f shlib/*.o *.o core a.out fluff rehash.time testlog make.log cctest cctest.c
412 @set -e; target=clean; $(RECURSIVE_BUILD_CMD)
413 rm -f $(LIBS)
414 rm -f openssl.pc libssl.pc libcrypto.pc
415 rm -f speed.* .pure
416 rm -f $(TARFILE)
417 @set -e; for i in $(ONEDIRS) ;\
418 do \
419 rm -fr $$i/*; \
420 done
421
422makefile.one: files
423 $(PERL) util/mk1mf.pl >makefile.one; \
424 sh util/do_ms.sh
425
426files:
427 $(PERL) $(TOP)/util/files.pl Makefile > $(TOP)/MINFO
428 @set -e; target=files; $(RECURSIVE_BUILD_CMD)
429
430links:
431 @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
432 @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
433 @set -e; target=links; $(RECURSIVE_BUILD_CMD)
434
435gentests:
436 @(cd test && echo "generating dummy tests (if needed)..." && \
437 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on generate );
438
439dclean:
440 rm -rf *.bak include/openssl certs/.0
441 @set -e; target=dclean; $(RECURSIVE_BUILD_CMD)
442
443rehash: rehash.time
444rehash.time: certs apps
445 @if [ -z "$(CROSS_COMPILE)" ]; then \
446 (OPENSSL="`pwd`/util/opensslwrap.sh"; \
447 [ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe" || :; \
448 OPENSSL_DEBUG_MEMORY=on; \
449 export OPENSSL OPENSSL_DEBUG_MEMORY; \
450 $(PERL) tools/c_rehash certs/demo) && \
451 touch rehash.time; \
452 else :; fi
453
454test: tests
455
456tests: rehash
457 @(cd test && echo "testing..." && \
458 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on OPENSSL_CONF=../apps/openssl.cnf tests );
459 OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
460
461report:
462 @$(PERL) util/selftest.pl
463
464depend:
465 @set -e; target=depend; $(RECURSIVE_BUILD_CMD)
466
467lint:
468 @set -e; target=lint; $(RECURSIVE_BUILD_CMD)
469
470tags:
471 rm -f TAGS
472 find . -name '[^.]*.[ch]' | xargs etags -a
473
474errors:
475 $(PERL) util/ck_errf.pl -strict */*.c */*/*.c
476 $(PERL) util/mkerr.pl -recurse -write
477 (cd engines; $(MAKE) PERL=$(PERL) errors)
478
479stacks:
480 $(PERL) util/mkstack.pl -write
481
482util/libeay.num::
483 $(PERL) util/mkdef.pl crypto update
484
485util/ssleay.num::
486 $(PERL) util/mkdef.pl ssl update
487
488crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
489 $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
490crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
491 $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
492crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
493 $(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h
494
495apps/openssl-vms.cnf: apps/openssl.cnf
496 $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
497
498crypto/bn/bn_prime.h: crypto/bn/bn_prime.pl
499 $(PERL) crypto/bn/bn_prime.pl >crypto/bn/bn_prime.h
500
501
502TABLE: Configure
503 (echo 'Output of `Configure TABLE'"':"; \
504 $(PERL) Configure TABLE) > TABLE
505
506update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
507
508# Build distribution tar-file. As the list of files returned by "find" is
509# pretty long, on several platforms a "too many arguments" error or similar
510# would occur. Therefore the list of files is temporarily stored into a file
511# and read directly, requiring GNU-Tar. Call "make TAR=gtar dist" if the normal
512# tar does not support the --files-from option.
513tar:
514 find . -type d -print | xargs chmod 755
515 find . -type f -print | xargs chmod a+r
516 find . -type f -perm -0100 -print | xargs chmod a+x
517 find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE | sort > ../$(TARFILE).list; \
518 $(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \
519 tardy --user_number=0 --user_name=openssl \
520 --group_number=0 --group_name=openssl \
521 --prefix=openssl-$(VERSION) - |\
522 gzip --best >../$(TARFILE).gz; \
523 rm -f ../$(TARFILE).list; \
524 ls -l ../$(TARFILE).gz
525
526tar-snap:
527 @$(TAR) $(TARFLAGS) -cvf - \
528 `find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE \! -name '*.o' \! -name '*.a' \! -name '*.so' \! -name '*.so.*' \! -name 'openssl' \! -name '*test' \! -name '.#*' \! -name '*~' | sort` |\
529 tardy --user_number=0 --user_name=openssl \
530 --group_number=0 --group_name=openssl \
531 --prefix=openssl-$(VERSION) - > ../$(TARFILE);\
532 ls -l ../$(TARFILE)
533
534dist:
535 $(PERL) Configure dist
536 @$(MAKE) dist_pem_h
537 @$(MAKE) SDIRS='$(SDIRS)' clean
538 @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' tar
539
540dist_pem_h:
541 (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
542
543install: all install_docs install_sw
544
545install_sw:
546 @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
547 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \
548 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \
549 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig \
550 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
551 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
552 $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
553 $(INSTALL_PREFIX)$(OPENSSLDIR)/private
554 @set -e; headerlist="$(EXHEADER)"; for i in $$headerlist;\
555 do \
556 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
557 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
558 done;
559 @set -e; target=install; $(RECURSIVE_BUILD_CMD)
560 @set -e; liblist="$(LIBS)"; for i in $$liblist ;\
561 do \
562 if [ -f "$$i" ]; then \
563 ( echo installing $$i; \
564 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
565 $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
566 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
567 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i ); \
568 fi; \
569 done;
570 @set -e; if [ -n "$(SHARED_LIBS)" ]; then \
571 tmp="$(SHARED_LIBS)"; \
572 for i in $${tmp:-x}; \
573 do \
574 if [ -f "$$i" -o -f "$$i.a" ]; then \
575 ( echo installing $$i; \
576 if [ "$(PLATFORM)" != "Cygwin" ]; then \
577 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
578 chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
579 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
580 else \
581 c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
582 cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
583 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
584 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
585 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
586 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
587 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
588 fi ); \
589 if expr $(PLATFORM) : 'mingw' > /dev/null; then \
590 ( case $$i in \
591 *crypto*) i=libeay32.dll;; \
592 *ssl*) i=ssleay32.dll;; \
593 esac; \
594 echo installing $$i; \
595 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
596 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
597 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
598 fi; \
599 fi; \
600 done; \
601 ( here="`pwd`"; \
602 cd $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR); \
603 $(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \
604 if [ "$(INSTALLTOP)" != "/usr" ]; then \
605 echo 'OpenSSL shared libraries have been installed in:'; \
606 echo ' $(INSTALLTOP)'; \
607 echo ''; \
608 sed -e '1,/^$$/d' doc/openssl-shared.txt; \
609 fi; \
610 fi
611 cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
612 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc
613 cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
614 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc
615 cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
616 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc
617
618install_html_docs:
619 here="`pwd`"; \
620 for subdir in apps crypto ssl; do \
621 mkdir -p $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
622 for i in doc/$$subdir/*.pod; do \
623 fn=`basename $$i .pod`; \
624 echo "installing html/$$fn.$(HTMLSUFFIX)"; \
625 cat $$i \
626 | sed -r 's/L<([^)]*)(\([0-9]\))?\|([^)]*)(\([0-9]\))?>/L<\1|\3>/g' \
627 | pod2html --podroot=doc --htmlroot=.. --podpath=apps:crypto:ssl \
628 | sed -r 's/<!DOCTYPE.*//g' \
629 > $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir/$$fn.$(HTMLSUFFIX); \
630 $(PERL) util/extract-names.pl < $$i | \
631 grep -v $$filecase "^$$fn\$$" | \
632 (cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
633 while read n; do \
634 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
635 done); \
636 done; \
637 done
638
639install_docs:
640 @$(PERL) $(TOP)/util/mkdir-p.pl \
641 $(INSTALL_PREFIX)$(MANDIR)/man1 \
642 $(INSTALL_PREFIX)$(MANDIR)/man3 \
643 $(INSTALL_PREFIX)$(MANDIR)/man5 \
644 $(INSTALL_PREFIX)$(MANDIR)/man7
645 @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
646 here="`pwd`"; \
647 filecase=; \
648 if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
649 filecase=-i; \
650 fi; \
651 set -e; for i in doc/apps/*.pod; do \
652 fn=`basename $$i .pod`; \
653 sec=`$(PERL) util/extract-section.pl 1 < $$i`; \
654 echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
655 (cd `$(PERL) util/dirname.pl $$i`; \
656 sh -c "$$pod2man \
657 --section=$$sec --center=OpenSSL \
658 --release=$(VERSION) `basename $$i`") \
659 > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
660 $(PERL) util/extract-names.pl < $$i | \
661 (grep -v $$filecase "^$$fn\$$"; true) | \
662 (grep -v "[ ]"; true) | \
663 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
664 while read n; do \
665 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
666 done); \
667 done; \
668 set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \
669 fn=`basename $$i .pod`; \
670 sec=`$(PERL) util/extract-section.pl 3 < $$i`; \
671 echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
672 (cd `$(PERL) util/dirname.pl $$i`; \
673 sh -c "$$pod2man \
674 --section=$$sec --center=OpenSSL \
675 --release=$(VERSION) `basename $$i`") \
676 > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
677 $(PERL) util/extract-names.pl < $$i | \
678 (grep -v $$filecase "^$$fn\$$"; true) | \
679 (grep -v "[ ]"; true) | \
680 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
681 while read n; do \
682 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
683 done); \
684 done
685
686# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/src/lib/libssl/src/Makefile.org b/src/lib/libssl/src/Makefile.org
deleted file mode 100644
index c92806f920..0000000000
--- a/src/lib/libssl/src/Makefile.org
+++ /dev/null
@@ -1,684 +0,0 @@
1##
2## Makefile for OpenSSL
3##
4
5VERSION=
6MAJOR=
7MINOR=
8SHLIB_VERSION_NUMBER=
9SHLIB_VERSION_HISTORY=
10SHLIB_MAJOR=
11SHLIB_MINOR=
12SHLIB_EXT=
13PLATFORM=dist
14OPTIONS=
15CONFIGURE_ARGS=
16SHLIB_TARGET=
17
18# HERE indicates where this Makefile lives. This can be used to indicate
19# where sub-Makefiles are expected to be. Currently has very limited usage,
20# and should probably not be bothered with at all.
21HERE=.
22
23# INSTALL_PREFIX is for package builders so that they can configure
24# for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
25# Normally it is left empty.
26INSTALL_PREFIX=
27INSTALLTOP=/usr/local/ssl
28
29# Do not edit this manually. Use Configure --openssldir=DIR do change this!
30OPENSSLDIR=/usr/local/ssl
31
32# NO_IDEA - Define to build without the IDEA algorithm
33# NO_RC4 - Define to build without the RC4 algorithm
34# NO_RC2 - Define to build without the RC2 algorithm
35# THREADS - Define when building with threads, you will probably also need any
36# system defines as well, i.e. _REENTERANT for Solaris 2.[34]
37# TERMIO - Define the termio terminal subsystem, needed if sgtty is missing.
38# TERMIOS - Define the termios terminal subsystem, Silicon Graphics.
39# LONGCRYPT - Define to use HPUX 10.x's long password modification to crypt(3).
40# DEVRANDOM - Give this the value of the 'random device' if your OS supports
41# one. 32 bytes will be read from this when the random
42# number generator is initalised.
43# SSL_FORBID_ENULL - define if you want the server to be not able to use the
44# NULL encryption ciphers.
45#
46# LOCK_DEBUG - turns on lots of lock debug output :-)
47# REF_CHECK - turn on some xyz_free() assertions.
48# REF_PRINT - prints some stuff on structure free.
49# CRYPTO_MDEBUG - turns on my 'memory leak' detecting stuff
50# MFUNC - Make all Malloc/Free/Realloc calls call
51# CRYPTO_malloc/CRYPTO_free/CRYPTO_realloc which can be setup to
52# call application defined callbacks via CRYPTO_set_mem_functions()
53# MD5_ASM needs to be defined to use the x86 assembler for MD5
54# SHA1_ASM needs to be defined to use the x86 assembler for SHA1
55# RMD160_ASM needs to be defined to use the x86 assembler for RIPEMD160
56# Do not define B_ENDIAN or L_ENDIAN if 'unsigned long' == 8. It must
57# equal 4.
58# PKCS1_CHECK - pkcs1 tests.
59
60CC= cc
61CFLAG= -O
62DEPFLAG=
63PEX_LIBS=
64EX_LIBS=
65EXE_EXT=
66ARFLAGS=
67AR=ar $(ARFLAGS) r
68RANLIB= ranlib
69NM= nm
70PERL= perl
71TAR= tar
72TARFLAGS= --no-recursion --record-size=10240
73MAKEDEPPROG=makedepend
74LIBDIR=lib
75
76# We let the C compiler driver to take care of .s files. This is done in
77# order to be excused from maintaining a separate set of architecture
78# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
79# gcc, then the driver will automatically translate it to -xarch=v8plus
80# and pass it down to assembler.
81AS=$(CC) -c
82ASFLAG=$(CFLAG)
83
84# For x86 assembler: Set PROCESSOR to 386 if you want to support
85# the 80386.
86PROCESSOR=
87
88# CPUID module collects small commonly used assembler snippets
89CPUID_OBJ=
90BN_ASM= bn_asm.o
91DES_ENC= des_enc.o fcrypt_b.o
92AES_ENC= aes_core.o aes_cbc.o
93BF_ENC= bf_enc.o
94CAST_ENC= c_enc.o
95RC4_ENC= rc4_enc.o
96RC5_ENC= rc5_enc.o
97MD5_ASM_OBJ=
98SHA1_ASM_OBJ=
99RMD160_ASM_OBJ=
100WP_ASM_OBJ=
101CMLL_ENC=
102MODES_ASM_OBJ=
103ENGINES_ASM_OBJ=
104PERLASM_SCHEME=
105
106# KRB5 stuff
107KRB5_INCLUDES=
108LIBKRB5=
109
110# Zlib stuff
111ZLIB_INCLUDE=
112LIBZLIB=
113
114# TOP level FIPS install directory.
115FIPSDIR=
116
117# This is the location of fipscanister.o and friends.
118# The FIPS module build will place it $(INSTALLTOP)/lib
119# but since $(INSTALLTOP) can only take the default value
120# when the module is built it will be in /usr/local/ssl/lib
121# $(INSTALLTOP) for this build may be different so hard
122# code the path.
123
124FIPSLIBDIR=
125
126# The location of the library which contains fipscanister.o
127# normally it will be libcrypto unless fipsdso is set in which
128# case it will be libfips. If not compiling in FIPS mode at all
129# this is empty making it a useful test for a FIPS compile.
130
131FIPSCANLIB=
132
133# Shared library base address. Currently only used on Windows.
134#
135
136BASEADDR=
137
138DIRS= crypto ssl engines apps test tools
139ENGDIRS= ccgost
140SHLIBDIRS= crypto ssl
141
142# dirs in crypto to build
143SDIRS= \
144 objects \
145 md2 md4 md5 sha mdc2 hmac ripemd whrlpool \
146 des aes rc2 rc4 rc5 idea bf cast camellia seed modes \
147 bn ec rsa dsa ecdsa dh ecdh dso engine \
148 buffer bio stack lhash rand err \
149 evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
150 cms pqueue ts jpake srp store cmac
151# keep in mind that the above list is adjusted by ./Configure
152# according to no-xxx arguments...
153
154# tests to perform. "alltests" is a special word indicating that all tests
155# should be performed.
156TESTS = alltests
157
158MAKEFILE= Makefile
159
160MANDIR=$(OPENSSLDIR)/man
161MAN1=1
162MAN3=3
163MANSUFFIX=
164HTMLSUFFIX=html
165HTMLDIR=$(OPENSSLDIR)/html
166SHELL=/bin/sh
167
168TOP= .
169ONEDIRS=out tmp
170EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS
171WDIRS= windows
172LIBS= libcrypto.a libssl.a
173SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
174SHARED_SSL=libssl$(SHLIB_EXT)
175SHARED_LIBS=
176SHARED_LIBS_LINK_EXTS=
177SHARED_LDFLAGS=
178
179GENERAL= Makefile
180BASENAME= openssl
181NAME= $(BASENAME)-$(VERSION)
182TARFILE= $(NAME).tar
183WTARFILE= $(NAME)-win.tar
184EXHEADER= e_os2.h
185HEADER= e_os.h
186
187all: Makefile build_all openssl.pc libssl.pc libcrypto.pc
188
189# as we stick to -e, CLEARENV ensures that local variables in lower
190# Makefiles remain local and variable. $${VAR+VAR} is tribute to Korn
191# shell, which [annoyingly enough] terminates unset with error if VAR
192# is not present:-( TOP= && unset TOP is tribute to HP-UX /bin/sh,
193# which terminates unset with error if no variable was present:-(
194CLEARENV= TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS} \
195 $${INCLUDE+INCLUDE} $${INCLUDES+INCLUDES} \
196 $${DIR+DIR} $${DIRS+DIRS} $${SRC+SRC} \
197 $${LIBSRC+LIBSRC} $${LIBOBJ+LIBOBJ} $${ALL+ALL} \
198 $${EXHEADER+EXHEADER} $${HEADER+HEADER} \
199 $${GENERAL+GENERAL} $${CFLAGS+CFLAGS} \
200 $${ASFLAGS+ASFLAGS} $${AFLAGS+AFLAGS} \
201 $${LDCMD+LDCMD} $${LDFLAGS+LDFLAGS} $${SCRIPTS+SCRIPTS} \
202 $${SHAREDCMD+SHAREDCMD} $${SHAREDFLAGS+SHAREDFLAGS} \
203 $${SHARED_LIB+SHARED_LIB} $${LIBEXTRAS+LIBEXTRAS}
204
205BUILDENV= PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
206 CC='$(CC)' CFLAG='$(CFLAG)' \
207 AS='$(CC)' ASFLAG='$(CFLAG) -c' \
208 AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)' \
209 CROSS_COMPILE='$(CROSS_COMPILE)' \
210 PERL='$(PERL)' ENGDIRS='$(ENGDIRS)' \
211 SDIRS='$(SDIRS)' LIBRPATH='$(INSTALLTOP)/$(LIBDIR)' \
212 INSTALL_PREFIX='$(INSTALL_PREFIX)' \
213 INSTALLTOP='$(INSTALLTOP)' OPENSSLDIR='$(OPENSSLDIR)' \
214 LIBDIR='$(LIBDIR)' \
215 MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD $(MAKEDEPPROG)' \
216 DEPFLAG='-DOPENSSL_NO_DEPRECATED $(DEPFLAG)' \
217 MAKEDEPPROG='$(MAKEDEPPROG)' \
218 SHARED_LDFLAGS='$(SHARED_LDFLAGS)' \
219 KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)' \
220 ZLIB_INCLUDE='$(ZLIB_INCLUDE)' LIBZLIB='$(LIBZLIB)' \
221 EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)' \
222 SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)' \
223 PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)' \
224 CPUID_OBJ='$(CPUID_OBJ)' \
225 BN_ASM='$(BN_ASM)' DES_ENC='$(DES_ENC)' \
226 AES_ENC='$(AES_ENC)' CMLL_ENC='$(CMLL_ENC)' \
227 BF_ENC='$(BF_ENC)' CAST_ENC='$(CAST_ENC)' \
228 RC4_ENC='$(RC4_ENC)' RC5_ENC='$(RC5_ENC)' \
229 SHA1_ASM_OBJ='$(SHA1_ASM_OBJ)' \
230 MD5_ASM_OBJ='$(MD5_ASM_OBJ)' \
231 RMD160_ASM_OBJ='$(RMD160_ASM_OBJ)' \
232 WP_ASM_OBJ='$(WP_ASM_OBJ)' \
233 MODES_ASM_OBJ='$(MODES_ASM_OBJ)' \
234 ENGINES_ASM_OBJ='$(ENGINES_ASM_OBJ)' \
235 PERLASM_SCHEME='$(PERLASM_SCHEME)' \
236 FIPSLIBDIR='${FIPSLIBDIR}' \
237 FIPSDIR='${FIPSDIR}' \
238 FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}" \
239 THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
240# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
241# which in turn eliminates ambiguities in variable treatment with -e.
242
243# BUILD_CMD is a generic macro to build a given target in a given
244# subdirectory. The target must be given through the shell variable
245# `target' and the subdirectory to build in must be given through `dir'.
246# This macro shouldn't be used directly, use RECURSIVE_BUILD_CMD or
247# BUILD_ONE_CMD instead.
248#
249# BUILD_ONE_CMD is a macro to build a given target in a given
250# subdirectory if that subdirectory is part of $(DIRS). It requires
251# exactly the same shell variables as BUILD_CMD.
252#
253# RECURSIVE_BUILD_CMD is a macro to build a given target in all
254# subdirectories defined in $(DIRS). It requires that the target
255# is given through the shell variable `target'.
256BUILD_CMD= if [ -d "$$dir" ]; then \
257 ( cd $$dir && echo "making $$target in $$dir..." && \
258 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \
259 ) || exit 1; \
260 fi
261RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done
262BUILD_ONE_CMD=\
263 if expr " $(DIRS) " : ".* $$dir " >/dev/null 2>&1; then \
264 $(BUILD_CMD); \
265 fi
266
267reflect:
268 @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
269
270sub_all: build_all
271build_all: build_libs build_apps build_tests build_tools
272
273build_libs: build_crypto build_ssl build_engines
274
275build_crypto:
276 @dir=crypto; target=all; $(BUILD_ONE_CMD)
277build_ssl:
278 @dir=ssl; target=all; $(BUILD_ONE_CMD)
279build_engines:
280 @dir=engines; target=all; $(BUILD_ONE_CMD)
281build_apps:
282 @dir=apps; target=all; $(BUILD_ONE_CMD)
283build_tests:
284 @dir=test; target=all; $(BUILD_ONE_CMD)
285build_tools:
286 @dir=tools; target=all; $(BUILD_ONE_CMD)
287
288all_testapps: build_libs build_testapps
289build_testapps:
290 @dir=crypto; target=testapps; $(BUILD_ONE_CMD)
291
292fips_premain_dso$(EXE_EXT): libcrypto.a
293 [ -z "$(FIPSCANLIB)" ] || $(CC) $(CFLAG) -Iinclude \
294 -DFINGERPRINT_PREMAIN_DSO_LOAD -o $@ \
295 $(FIPSLIBDIR)fips_premain.c $(FIPSLIBDIR)fipscanister.o \
296 libcrypto.a $(EX_LIBS)
297
298libcrypto$(SHLIB_EXT): libcrypto.a fips_premain_dso$(EXE_EXT)
299 @if [ "$(SHLIB_TARGET)" != "" ]; then \
300 if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
301 FIPSLD_LIBCRYPTO=libcrypto.a ; \
302 FIPSLD_CC="$(CC)"; CC=$(FIPSDIR)/bin/fipsld; \
303 export CC FIPSLD_CC FIPSLD_LIBCRYPTO; \
304 fi; \
305 $(MAKE) -e SHLIBDIRS=crypto CC="$${CC:-$(CC)}" build-shared && \
306 (touch -c fips_premain_dso$(EXE_EXT) || :); \
307 else \
308 echo "There's no support for shared libraries on this platform" >&2; \
309 exit 1; \
310 fi
311
312libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
313 @if [ "$(SHLIB_TARGET)" != "" ]; then \
314 $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
315 else \
316 echo "There's no support for shared libraries on this platform" >&2; \
317 exit 1; \
318 fi
319
320clean-shared:
321 @set -e; for i in $(SHLIBDIRS); do \
322 if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
323 tmp="$(SHARED_LIBS_LINK_EXTS)"; \
324 for j in $${tmp:-x}; do \
325 ( set -x; rm -f lib$$i$$j ); \
326 done; \
327 fi; \
328 ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \
329 if [ "$(PLATFORM)" = "Cygwin" ]; then \
330 ( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \
331 fi; \
332 done
333
334link-shared:
335 @ set -e; for i in $(SHLIBDIRS); do \
336 $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
337 LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
338 LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
339 symlink.$(SHLIB_TARGET); \
340 libs="$$libs -l$$i"; \
341 done
342
343build-shared: do_$(SHLIB_TARGET) link-shared
344
345do_$(SHLIB_TARGET):
346 @ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \
347 if [ "$$i" = "ssl" -a -n "$(LIBKRB5)" ]; then \
348 libs="$(LIBKRB5) $$libs"; \
349 fi; \
350 $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
351 LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
352 LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
353 LIBDEPS="$$libs $(EX_LIBS)" \
354 link_a.$(SHLIB_TARGET); \
355 libs="-l$$i $$libs"; \
356 done
357
358libcrypto.pc: Makefile
359 @ ( echo 'prefix=$(INSTALLTOP)'; \
360 echo 'exec_prefix=$${prefix}'; \
361 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
362 echo 'includedir=$${prefix}/include'; \
363 echo ''; \
364 echo 'Name: OpenSSL-libcrypto'; \
365 echo 'Description: OpenSSL cryptography library'; \
366 echo 'Version: '$(VERSION); \
367 echo 'Requires: '; \
368 echo 'Libs: -L$${libdir} -lcrypto'; \
369 echo 'Libs.private: $(EX_LIBS)'; \
370 echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > libcrypto.pc
371
372libssl.pc: Makefile
373 @ ( echo 'prefix=$(INSTALLTOP)'; \
374 echo 'exec_prefix=$${prefix}'; \
375 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
376 echo 'includedir=$${prefix}/include'; \
377 echo ''; \
378 echo 'Name: OpenSSL'; \
379 echo 'Description: Secure Sockets Layer and cryptography libraries'; \
380 echo 'Version: '$(VERSION); \
381 echo 'Requires: '; \
382 echo 'Libs: -L$${libdir} -lssl -lcrypto'; \
383 echo 'Libs.private: $(EX_LIBS)'; \
384 echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > libssl.pc
385
386openssl.pc: Makefile
387 @ ( echo 'prefix=$(INSTALLTOP)'; \
388 echo 'exec_prefix=$${prefix}'; \
389 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
390 echo 'includedir=$${prefix}/include'; \
391 echo ''; \
392 echo 'Name: OpenSSL'; \
393 echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \
394 echo 'Version: '$(VERSION); \
395 echo 'Requires: '; \
396 echo 'Libs: -L$${libdir} -lssl -lcrypto'; \
397 echo 'Libs.private: $(EX_LIBS)'; \
398 echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > openssl.pc
399
400Makefile: Makefile.org Configure config
401 @echo "Makefile is older than Makefile.org, Configure or config."
402 @echo "Reconfigure the source tree (via './config' or 'perl Configure'), please."
403 @false
404
405libclean:
406 rm -f *.map *.so *.so.* *.dylib *.dll engines/*.so engines/*.dll engines/*.dylib *.a engines/*.a */lib */*/lib
407
408clean: libclean
409 rm -f shlib/*.o *.o core a.out fluff rehash.time testlog make.log cctest cctest.c
410 @set -e; target=clean; $(RECURSIVE_BUILD_CMD)
411 rm -f $(LIBS)
412 rm -f openssl.pc libssl.pc libcrypto.pc
413 rm -f speed.* .pure
414 rm -f $(TARFILE)
415 @set -e; for i in $(ONEDIRS) ;\
416 do \
417 rm -fr $$i/*; \
418 done
419
420makefile.one: files
421 $(PERL) util/mk1mf.pl >makefile.one; \
422 sh util/do_ms.sh
423
424files:
425 $(PERL) $(TOP)/util/files.pl Makefile > $(TOP)/MINFO
426 @set -e; target=files; $(RECURSIVE_BUILD_CMD)
427
428links:
429 @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
430 @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
431 @set -e; target=links; $(RECURSIVE_BUILD_CMD)
432
433gentests:
434 @(cd test && echo "generating dummy tests (if needed)..." && \
435 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on generate );
436
437dclean:
438 rm -rf *.bak include/openssl certs/.0
439 @set -e; target=dclean; $(RECURSIVE_BUILD_CMD)
440
441rehash: rehash.time
442rehash.time: certs apps
443 @if [ -z "$(CROSS_COMPILE)" ]; then \
444 (OPENSSL="`pwd`/util/opensslwrap.sh"; \
445 [ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe" || :; \
446 OPENSSL_DEBUG_MEMORY=on; \
447 export OPENSSL OPENSSL_DEBUG_MEMORY; \
448 $(PERL) tools/c_rehash certs/demo) && \
449 touch rehash.time; \
450 else :; fi
451
452test: tests
453
454tests: rehash
455 @(cd test && echo "testing..." && \
456 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on OPENSSL_CONF=../apps/openssl.cnf tests );
457 OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
458
459report:
460 @$(PERL) util/selftest.pl
461
462depend:
463 @set -e; target=depend; $(RECURSIVE_BUILD_CMD)
464
465lint:
466 @set -e; target=lint; $(RECURSIVE_BUILD_CMD)
467
468tags:
469 rm -f TAGS
470 find . -name '[^.]*.[ch]' | xargs etags -a
471
472errors:
473 $(PERL) util/ck_errf.pl -strict */*.c */*/*.c
474 $(PERL) util/mkerr.pl -recurse -write
475 (cd engines; $(MAKE) PERL=$(PERL) errors)
476
477stacks:
478 $(PERL) util/mkstack.pl -write
479
480util/libeay.num::
481 $(PERL) util/mkdef.pl crypto update
482
483util/ssleay.num::
484 $(PERL) util/mkdef.pl ssl update
485
486crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
487 $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
488crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
489 $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
490crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
491 $(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h
492
493apps/openssl-vms.cnf: apps/openssl.cnf
494 $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
495
496crypto/bn/bn_prime.h: crypto/bn/bn_prime.pl
497 $(PERL) crypto/bn/bn_prime.pl >crypto/bn/bn_prime.h
498
499
500TABLE: Configure
501 (echo 'Output of `Configure TABLE'"':"; \
502 $(PERL) Configure TABLE) > TABLE
503
504update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
505
506# Build distribution tar-file. As the list of files returned by "find" is
507# pretty long, on several platforms a "too many arguments" error or similar
508# would occur. Therefore the list of files is temporarily stored into a file
509# and read directly, requiring GNU-Tar. Call "make TAR=gtar dist" if the normal
510# tar does not support the --files-from option.
511tar:
512 find . -type d -print | xargs chmod 755
513 find . -type f -print | xargs chmod a+r
514 find . -type f -perm -0100 -print | xargs chmod a+x
515 find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE | sort > ../$(TARFILE).list; \
516 $(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \
517 tardy --user_number=0 --user_name=openssl \
518 --group_number=0 --group_name=openssl \
519 --prefix=openssl-$(VERSION) - |\
520 gzip --best >../$(TARFILE).gz; \
521 rm -f ../$(TARFILE).list; \
522 ls -l ../$(TARFILE).gz
523
524tar-snap:
525 @$(TAR) $(TARFLAGS) -cvf - \
526 `find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE \! -name '*.o' \! -name '*.a' \! -name '*.so' \! -name '*.so.*' \! -name 'openssl' \! -name '*test' \! -name '.#*' \! -name '*~' | sort` |\
527 tardy --user_number=0 --user_name=openssl \
528 --group_number=0 --group_name=openssl \
529 --prefix=openssl-$(VERSION) - > ../$(TARFILE);\
530 ls -l ../$(TARFILE)
531
532dist:
533 $(PERL) Configure dist
534 @$(MAKE) dist_pem_h
535 @$(MAKE) SDIRS='$(SDIRS)' clean
536 @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' tar
537
538dist_pem_h:
539 (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
540
541install: all install_docs install_sw
542
543install_sw:
544 @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
545 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \
546 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \
547 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig \
548 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
549 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
550 $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
551 $(INSTALL_PREFIX)$(OPENSSLDIR)/private
552 @set -e; headerlist="$(EXHEADER)"; for i in $$headerlist;\
553 do \
554 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
555 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
556 done;
557 @set -e; target=install; $(RECURSIVE_BUILD_CMD)
558 @set -e; liblist="$(LIBS)"; for i in $$liblist ;\
559 do \
560 if [ -f "$$i" ]; then \
561 ( echo installing $$i; \
562 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
563 $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
564 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
565 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i ); \
566 fi; \
567 done;
568 @set -e; if [ -n "$(SHARED_LIBS)" ]; then \
569 tmp="$(SHARED_LIBS)"; \
570 for i in $${tmp:-x}; \
571 do \
572 if [ -f "$$i" -o -f "$$i.a" ]; then \
573 ( echo installing $$i; \
574 if [ "$(PLATFORM)" != "Cygwin" ]; then \
575 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
576 chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
577 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
578 else \
579 c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
580 cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
581 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
582 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
583 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
584 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
585 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
586 fi ); \
587 if expr $(PLATFORM) : 'mingw' > /dev/null; then \
588 ( case $$i in \
589 *crypto*) i=libeay32.dll;; \
590 *ssl*) i=ssleay32.dll;; \
591 esac; \
592 echo installing $$i; \
593 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
594 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
595 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
596 fi; \
597 fi; \
598 done; \
599 ( here="`pwd`"; \
600 cd $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR); \
601 $(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \
602 if [ "$(INSTALLTOP)" != "/usr" ]; then \
603 echo 'OpenSSL shared libraries have been installed in:'; \
604 echo ' $(INSTALLTOP)'; \
605 echo ''; \
606 sed -e '1,/^$$/d' doc/openssl-shared.txt; \
607 fi; \
608 fi
609 cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
610 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc
611 cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
612 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc
613 cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
614 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc
615
616install_html_docs:
617 here="`pwd`"; \
618 for subdir in apps crypto ssl; do \
619 mkdir -p $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
620 for i in doc/$$subdir/*.pod; do \
621 fn=`basename $$i .pod`; \
622 echo "installing html/$$fn.$(HTMLSUFFIX)"; \
623 cat $$i \
624 | sed -r 's/L<([^)]*)(\([0-9]\))?\|([^)]*)(\([0-9]\))?>/L<\1|\3>/g' \
625 | pod2html --podroot=doc --htmlroot=.. --podpath=apps:crypto:ssl \
626 | sed -r 's/<!DOCTYPE.*//g' \
627 > $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir/$$fn.$(HTMLSUFFIX); \
628 $(PERL) util/extract-names.pl < $$i | \
629 grep -v $$filecase "^$$fn\$$" | \
630 (cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
631 while read n; do \
632 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
633 done); \
634 done; \
635 done
636
637install_docs:
638 @$(PERL) $(TOP)/util/mkdir-p.pl \
639 $(INSTALL_PREFIX)$(MANDIR)/man1 \
640 $(INSTALL_PREFIX)$(MANDIR)/man3 \
641 $(INSTALL_PREFIX)$(MANDIR)/man5 \
642 $(INSTALL_PREFIX)$(MANDIR)/man7
643 @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
644 here="`pwd`"; \
645 filecase=; \
646 if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
647 filecase=-i; \
648 fi; \
649 set -e; for i in doc/apps/*.pod; do \
650 fn=`basename $$i .pod`; \
651 sec=`$(PERL) util/extract-section.pl 1 < $$i`; \
652 echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
653 (cd `$(PERL) util/dirname.pl $$i`; \
654 sh -c "$$pod2man \
655 --section=$$sec --center=OpenSSL \
656 --release=$(VERSION) `basename $$i`") \
657 > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
658 $(PERL) util/extract-names.pl < $$i | \
659 (grep -v $$filecase "^$$fn\$$"; true) | \
660 (grep -v "[ ]"; true) | \
661 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
662 while read n; do \
663 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
664 done); \
665 done; \
666 set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \
667 fn=`basename $$i .pod`; \
668 sec=`$(PERL) util/extract-section.pl 3 < $$i`; \
669 echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
670 (cd `$(PERL) util/dirname.pl $$i`; \
671 sh -c "$$pod2man \
672 --section=$$sec --center=OpenSSL \
673 --release=$(VERSION) `basename $$i`") \
674 > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
675 $(PERL) util/extract-names.pl < $$i | \
676 (grep -v $$filecase "^$$fn\$$"; true) | \
677 (grep -v "[ ]"; true) | \
678 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
679 while read n; do \
680 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
681 done); \
682 done
683
684# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/src/lib/libssl/src/Makefile.shared b/src/lib/libssl/src/Makefile.shared
deleted file mode 100644
index e753f44e18..0000000000
--- a/src/lib/libssl/src/Makefile.shared
+++ /dev/null
@@ -1,655 +0,0 @@
1#
2# Helper makefile to link shared libraries in a portable way.
3# This is much simpler than libtool, and hopefully not too error-prone.
4#
5# The following variables need to be set on the command line to build
6# properly
7
8# CC contains the current compiler. This one MUST be defined
9CC=cc
10CFLAGS=$(CFLAG)
11# LDFLAGS contains flags to be used when temporary object files (when building
12# shared libraries) are created, or when an application is linked.
13# SHARED_LDFLAGS contains flags to be used when the shared library is created.
14LDFLAGS=
15SHARED_LDFLAGS=
16
17NM=nm
18
19# LIBNAME contains just the name of the library, without prefix ("lib"
20# on Unix, "cyg" for certain forms under Cygwin...) or suffix (.a, .so,
21# .dll, ...). This one MUST have a value when using this makefile to
22# build shared libraries.
23# For example, to build libfoo.so, you need to do the following:
24#LIBNAME=foo
25LIBNAME=
26
27# APPNAME contains just the name of the application, without suffix (""
28# on Unix, ".exe" on Windows, ...). This one MUST have a value when using
29# this makefile to build applications.
30# For example, to build foo, you need to do the following:
31#APPNAME=foo
32APPNAME=
33
34# OBJECTS contains all the object files to link together into the application.
35# This must contain at least one object file.
36#OBJECTS=foo.o
37OBJECTS=
38
39# LIBEXTRAS contains extra modules to link together with the library.
40# For example, if a second library, say libbar.a needs to be linked into
41# libfoo.so, you need to do the following:
42#LIBEXTRAS=libbar.a
43# Note that this MUST be used when using the link_o targets, to hold the
44# names of all object files that go into the target library.
45LIBEXTRAS=
46
47# LIBVERSION contains the current version of the library.
48# For example, to build libfoo.so.1.2, you need to do the following:
49#LIBVERSION=1.2
50LIBVERSION=
51
52# LIBCOMPATVERSIONS contains the compatibility versions (a list) of
53# the library. They MUST be in decreasing order.
54# For example, if libfoo.so.1.2.1 is backward compatible with libfoo.so.1.2
55# and libfoo.so.1, you need to do the following:
56#LIBCOMPATVERSIONS=1.2 1
57# Note that on systems that use sonames, the last number will appear as
58# part of it.
59# It's also possible, for systems that support it (Tru64, for example),
60# to add extra compatibility info with more precision, by adding a second
61# list of versions, separated from the first with a semicolon, like this:
62#LIBCOMPATVERSIONS=1.2 1;1.2.0 1.1.2 1.1.1 1.1.0 1.0.0
63LIBCOMPATVERSIONS=
64
65# LIBDEPS contains all the flags necessary to cover all necessary
66# dependencies to other libraries.
67LIBDEPS=
68
69#------------------------------------------------------------------------------
70# The rest is private to this makefile.
71
72SET_X=:
73#SET_X=set -x
74
75top:
76 echo "Trying to use this makefile interactively? Don't."
77
78CALC_VERSIONS= \
79 SHLIB_COMPAT=; SHLIB_SOVER=; \
80 if [ -n "$(LIBVERSION)$(LIBCOMPATVERSIONS)" ]; then \
81 prev=""; \
82 for v in `echo "$(LIBVERSION) $(LIBCOMPATVERSIONS)" | cut -d';' -f1`; do \
83 SHLIB_SOVER_NODOT=$$v; \
84 SHLIB_SOVER=.$$v; \
85 if [ -n "$$prev" ]; then \
86 SHLIB_COMPAT="$$SHLIB_COMPAT .$$prev"; \
87 fi; \
88 prev=$$v; \
89 done; \
90 fi
91
92LINK_APP= \
93 ( $(SET_X); \
94 LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
95 LDCMD="$${LDCMD:-$(CC)}"; LDFLAGS="$${LDFLAGS:-$(CFLAGS)}"; \
96 LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
97 LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
98 LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
99 $${LDCMD} $${LDFLAGS} -o $${APPNAME:=$(APPNAME)} $(OBJECTS) $${LIBDEPS} )
100
101LINK_SO= \
102 ( $(SET_X); \
103 LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
104 SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
105 SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
106 LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
107 LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
108 LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
109 $${SHAREDCMD} $${SHAREDFLAGS} \
110 -o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
111 $$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS \
112 ) && $(SYMLINK_SO)
113
114SYMLINK_SO= \
115 if [ -n "$$INHIBIT_SYMLINKS" ]; then :; else \
116 prev=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
117 if [ -n "$$SHLIB_COMPAT" ]; then \
118 for x in $$SHLIB_COMPAT; do \
119 ( $(SET_X); rm -f $$SHLIB$$x$$SHLIB_SUFFIX; \
120 ln -s $$prev $$SHLIB$$x$$SHLIB_SUFFIX ); \
121 prev=$$SHLIB$$x$$SHLIB_SUFFIX; \
122 done; \
123 fi; \
124 if [ -n "$$SHLIB_SOVER" ]; then \
125 ( $(SET_X); rm -f $$SHLIB$$SHLIB_SUFFIX; \
126 ln -s $$prev $$SHLIB$$SHLIB_SUFFIX ); \
127 fi; \
128 fi
129
130LINK_SO_A= SHOBJECTS="lib$(LIBNAME).a $(LIBEXTRAS)"; $(LINK_SO)
131LINK_SO_O= SHOBJECTS="$(LIBEXTRAS)"; $(LINK_SO)
132
133LINK_SO_A_VIA_O= \
134 SHOBJECTS=lib$(LIBNAME).o; \
135 ALL=$$ALLSYMSFLAGS; ALLSYMSFLAGS=; NOALLSYMSFLAGS=; \
136 ( $(SET_X); \
137 ld $(LDFLAGS) -r -o lib$(LIBNAME).o $$ALL lib$(LIBNAME).a $(LIBEXTRAS) ); \
138 $(LINK_SO) && rm -f lib$(LIBNAME).o
139
140LINK_SO_A_UNPACKED= \
141 UNPACKDIR=link_tmp.$$$$; rm -rf $$UNPACKDIR; mkdir $$UNPACKDIR; \
142 (cd $$UNPACKDIR; ar x ../lib$(LIBNAME).a) && \
143 ([ -z "$(LIBEXTRAS)" ] || cp $(LIBEXTRAS) $$UNPACKDIR) && \
144 SHOBJECTS=$$UNPACKDIR/*.o; \
145 $(LINK_SO) && rm -rf $$UNPACKDIR
146
147DETECT_GNU_LD=($(CC) -Wl,-V /dev/null 2>&1 | grep '^GNU ld' )>/dev/null
148
149DO_GNU_SO=$(CALC_VERSIONS); \
150 SHLIB=lib$(LIBNAME).so; \
151 SHLIB_SUFFIX=; \
152 ALLSYMSFLAGS='-Wl,--whole-archive'; \
153 NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
154 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"
155
156DO_GNU_APP=LDFLAGS="$(CFLAGS) -Wl,-rpath,$(LIBRPATH)"
157
158#This is rather special. It's a special target with which one can link
159#applications without bothering with any features that have anything to
160#do with shared libraries, for example when linking against static
161#libraries. It's mostly here to avoid a lot of conditionals everywhere
162#else...
163link_app.:
164 $(LINK_APP)
165
166link_o.gnu:
167 @ $(DO_GNU_SO); $(LINK_SO_O)
168link_a.gnu:
169 @ $(DO_GNU_SO); $(LINK_SO_A)
170link_app.gnu:
171 @ $(DO_GNU_APP); $(LINK_APP)
172
173DO_BEOS_SO= SHLIB=lib$(LIBNAME).so; \
174 SHLIB_SUFFIX=; \
175 ALLSYMSFLAGS='-Wl,--whole-archive'; \
176 NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
177 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SUFFIX"
178
179link_o.beos:
180 @ $(DO_BEOS_SO); $(LINK_SO_O)
181link_a.beos:
182 @ $(DO_BEOS_SO); $(LINK_SO_A)
183
184link_o.bsd:
185 @if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
186 $(CALC_VERSIONS); \
187 SHLIB=lib$(LIBNAME).so; \
188 SHLIB_SUFFIX=; \
189 LIBDEPS=" "; \
190 ALLSYMSFLAGS="-Wl,-Bforcearchive"; \
191 NOALLSYMSFLAGS=; \
192 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -nostdlib"; \
193 fi; $(LINK_SO_O)
194link_a.bsd:
195 @if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
196 $(CALC_VERSIONS); \
197 SHLIB=lib$(LIBNAME).so; \
198 SHLIB_SUFFIX=; \
199 LIBDEPS=" "; \
200 ALLSYMSFLAGS="-Wl,-Bforcearchive"; \
201 NOALLSYMSFLAGS=; \
202 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -nostdlib"; \
203 fi; $(LINK_SO_A)
204link_app.bsd:
205 @if $(DETECT_GNU_LD); then $(DO_GNU_APP); else \
206 LDFLAGS="$(CFLAGS) -Wl,-rpath,$(LIBPATH)"; \
207 fi; $(LINK_APP)
208
209# For Darwin AKA Mac OS/X (dyld)
210# Originally link_o.darwin produced .so, because it was hard-coded
211# in dso_dlfcn module. At later point dso_dlfcn switched to .dylib
212# extension in order to allow for run-time linking with vendor-
213# supplied shared libraries such as libz, so that link_o.darwin had
214# to be harmonized with it. This caused minor controversy, because
215# it was believed that dlopen can't be used to dynamically load
216# .dylib-s, only so called bundle modules (ones linked with -bundle
217# flag). The belief seems to be originating from pre-10.4 release,
218# where dlfcn functionality was emulated by dlcompat add-on. In
219# 10.4 dlopen was rewritten as native part of dyld and is documented
220# to be capable of loading both dynamic libraries and bundles. In
221# order to provide compatibility with pre-10.4 dlopen, modules are
222# linked with -bundle flag, which makes .dylib extension misleading.
223# It works, because dlopen is [and always was] extension-agnostic.
224# Alternative to this heuristic approach is to develop specific
225# MacOS X dso module relying on whichever "native" dyld interface.
226link_o.darwin:
227 @ $(CALC_VERSIONS); \
228 SHLIB=lib$(LIBNAME); \
229 SHLIB_SUFFIX=.dylib; \
230 ALLSYMSFLAGS='-all_load'; \
231 NOALLSYMSFLAGS=''; \
232 SHAREDFLAGS="$(CFLAGS) `echo $(SHARED_LDFLAGS) | sed s/dynamiclib/bundle/`"; \
233 if [ -n "$(LIBVERSION)" ]; then \
234 SHAREDFLAGS="$$SHAREDFLAGS -current_version $(LIBVERSION)"; \
235 fi; \
236 if [ -n "$$SHLIB_SOVER_NODOT" ]; then \
237 SHAREDFLAGS="$$SHAREDFLAGS -compatibility_version $$SHLIB_SOVER_NODOT"; \
238 fi; \
239 $(LINK_SO_O)
240link_a.darwin:
241 @ $(CALC_VERSIONS); \
242 SHLIB=lib$(LIBNAME); \
243 SHLIB_SUFFIX=.dylib; \
244 ALLSYMSFLAGS='-all_load'; \
245 NOALLSYMSFLAGS=''; \
246 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS)"; \
247 if [ -n "$(LIBVERSION)" ]; then \
248 SHAREDFLAGS="$$SHAREDFLAGS -current_version $(LIBVERSION)"; \
249 fi; \
250 if [ -n "$$SHLIB_SOVER_NODOT" ]; then \
251 SHAREDFLAGS="$$SHAREDFLAGS -compatibility_version $$SHLIB_SOVER_NODOT"; \
252 fi; \
253 SHAREDFLAGS="$$SHAREDFLAGS -install_name $(INSTALLTOP)/$(LIBDIR)/$$SHLIB$(SHLIB_EXT)"; \
254 $(LINK_SO_A)
255link_app.darwin: # is there run-path on darwin?
256 $(LINK_APP)
257
258link_o.cygwin:
259 @ $(CALC_VERSIONS); \
260 INHIBIT_SYMLINKS=yes; \
261 SHLIB=cyg$(LIBNAME); \
262 base=-Wl,--enable-auto-image-base; \
263 deffile=; \
264 if expr $(PLATFORM) : 'mingw' > /dev/null; then \
265 SHLIB=$(LIBNAME)eay32; base=; \
266 if test -f $(LIBNAME)eay32.def; then \
267 deffile=$(LIBNAME)eay32.def; \
268 fi; \
269 fi; \
270 SHLIB_SUFFIX=.dll; \
271 LIBVERSION="$(LIBVERSION)"; \
272 SHLIB_SOVER=${LIBVERSION:+"-$(LIBVERSION)"}; \
273 ALLSYMSFLAGS='-Wl,--whole-archive'; \
274 NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
275 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base $$deffile -Wl,-s,-Bsymbolic"; \
276 $(LINK_SO_O)
277#for mingw target if def-file is in use dll-name should match library-name
278link_a.cygwin:
279 @ $(CALC_VERSIONS); \
280 INHIBIT_SYMLINKS=yes; \
281 SHLIB=cyg$(LIBNAME); SHLIB_SOVER=-$(LIBVERSION); SHLIB_SUFFIX=.dll; \
282 dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; extras=; \
283 base=-Wl,--enable-auto-image-base; \
284 if expr $(PLATFORM) : 'mingw' > /dev/null; then \
285 case $(LIBNAME) in \
286 crypto) SHLIB=libeay;; \
287 ssl) SHLIB=ssleay;; \
288 esac; \
289 SHLIB_SOVER=32; \
290 extras="$(LIBNAME).def"; \
291 $(PERL) util/mkdef.pl 32 $$SHLIB > $$extras; \
292 base=; [ $(LIBNAME) = "crypto" ] && base=-Wl,--image-base,0x63000000; \
293 fi; \
294 dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
295 $(PERL) util/mkrc.pl $$dll_name | \
296 $(CROSS_COMPILE)windres -o rc.o; \
297 extras="$$extras rc.o"; \
298 ALLSYMSFLAGS='-Wl,--whole-archive'; \
299 NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
300 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-s,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $$extras"; \
301 [ -f apps/$$dll_name ] && rm apps/$$dll_name; \
302 [ -f test/$$dll_name ] && rm test/$$dll_name; \
303 $(LINK_SO_A) || exit 1; \
304 rm $$extras; \
305 cp -p $$dll_name apps/; \
306 cp -p $$dll_name test/
307link_app.cygwin:
308 @if expr "$(CFLAGS)" : '.*OPENSSL_USE_APPLINK' > /dev/null; then \
309 LIBDEPS="$(TOP)/crypto/applink.o $${LIBDEPS:-$(LIBDEPS)}"; \
310 export LIBDEPS; \
311 fi; \
312 $(LINK_APP)
313
314link_o.alpha-osf1:
315 @ if $(DETECT_GNU_LD); then \
316 $(DO_GNU_SO); \
317 else \
318 SHLIB=lib$(LIBNAME).so; \
319 SHLIB_SUFFIX=; \
320 SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
321 if [ -n "$$SHLIB_HIST" ]; then \
322 SHLIB_HIST="$${SHLIB_HIST}:$(LIBVERSION)"; \
323 else \
324 SHLIB_HIST="$(LIBVERSION)"; \
325 fi; \
326 SHLIB_SOVER=; \
327 ALLSYMSFLAGS='-all'; \
328 NOALLSYMSFLAGS='-none'; \
329 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-B,symbolic"; \
330 if [ -n "$$SHLIB_HIST" ]; then \
331 SHAREDFLAGS="$$SHAREDFLAGS -set_version $$SHLIB_HIST"; \
332 fi; \
333 fi; \
334 $(LINK_SO_O)
335link_a.alpha-osf1:
336 @ if $(DETECT_GNU_LD); then \
337 $(DO_GNU_SO); \
338 else \
339 SHLIB=lib$(LIBNAME).so; \
340 SHLIB_SUFFIX=; \
341 SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
342 if [ -n "$$SHLIB_HIST" ]; then \
343 SHLIB_HIST="$${SHLIB_HIST}:$(LIBVERSION)"; \
344 else \
345 SHLIB_HIST="$(LIBVERSION)"; \
346 fi; \
347 SHLIB_SOVER=; \
348 ALLSYMSFLAGS='-all'; \
349 NOALLSYMSFLAGS='-none'; \
350 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-B,symbolic"; \
351 if [ -n "$$SHLIB_HIST" ]; then \
352 SHAREDFLAGS="$$SHAREDFLAGS -set_version $$SHLIB_HIST"; \
353 fi; \
354 fi; \
355 $(LINK_SO_A)
356link_app.alpha-osf1:
357 @if $(DETECT_GNU_LD); then \
358 $(DO_GNU_APP); \
359 else \
360 LDFLAGS="$(CFLAGS) -rpath $(LIBRPATH)"; \
361 fi; \
362 $(LINK_APP)
363
364link_o.solaris:
365 @ if $(DETECT_GNU_LD); then \
366 $(DO_GNU_SO); \
367 else \
368 $(CALC_VERSIONS); \
369 MINUSZ='-z '; \
370 ($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
371 SHLIB=lib$(LIBNAME).so; \
372 SHLIB_SUFFIX=; \
373 ALLSYMSFLAGS="$${MINUSZ}allextract"; \
374 NOALLSYMSFLAGS="$${MINUSZ}defaultextract"; \
375 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX -Wl,-Bsymbolic"; \
376 fi; \
377 $(LINK_SO_O)
378link_a.solaris:
379 @ if $(DETECT_GNU_LD); then \
380 $(DO_GNU_SO); \
381 else \
382 $(CALC_VERSIONS); \
383 MINUSZ='-z '; \
384 ($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
385 SHLIB=lib$(LIBNAME).so; \
386 SHLIB_SUFFIX=;\
387 ALLSYMSFLAGS="$${MINUSZ}allextract"; \
388 NOALLSYMSFLAGS="$${MINUSZ}defaultextract"; \
389 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX -Wl,-Bsymbolic"; \
390 fi; \
391 $(LINK_SO_A)
392link_app.solaris:
393 @ if $(DETECT_GNU_LD); then \
394 $(DO_GNU_APP); \
395 else \
396 LDFLAGS="$(CFLAGS) -R $(LIBRPATH)"; \
397 fi; \
398 $(LINK_APP)
399
400# OpenServer 5 native compilers used
401link_o.svr3:
402 @ if $(DETECT_GNU_LD); then \
403 $(DO_GNU_SO); \
404 else \
405 $(CALC_VERSIONS); \
406 SHLIB=lib$(LIBNAME).so; \
407 SHLIB_SUFFIX=; \
408 ALLSYMSFLAGS=''; \
409 NOALLSYMSFLAGS=''; \
410 SHAREDFLAGS="$(CFLAGS) -G -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
411 fi; \
412 $(LINK_SO_O)
413link_a.svr3:
414 @ if $(DETECT_GNU_LD); then \
415 $(DO_GNU_SO); \
416 else \
417 $(CALC_VERSIONS); \
418 SHLIB=lib$(LIBNAME).so; \
419 SHLIB_SUFFIX=; \
420 ALLSYMSFLAGS=''; \
421 NOALLSYMSFLAGS=''; \
422 SHAREDFLAGS="$(CFLAGS) -G -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
423 fi; \
424 $(LINK_SO_A_UNPACKED)
425link_app.svr3:
426 @$(DETECT_GNU_LD) && $(DO_GNU_APP); \
427 $(LINK_APP)
428
429# UnixWare 7 and OpenUNIX 8 native compilers used
430link_o.svr5:
431 @ if $(DETECT_GNU_LD); then \
432 $(DO_GNU_SO); \
433 else \
434 $(CALC_VERSIONS); \
435 SHARE_FLAG='-G'; \
436 ($(CC) -v 2>&1 | grep gcc) > /dev/null && SHARE_FLAG='-shared'; \
437 SHLIB=lib$(LIBNAME).so; \
438 SHLIB_SUFFIX=; \
439 ALLSYMSFLAGS=''; \
440 NOALLSYMSFLAGS=''; \
441 SHAREDFLAGS="$(CFLAGS) $${SHARE_FLAG} -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
442 fi; \
443 $(LINK_SO_O)
444link_a.svr5:
445 @ if $(DETECT_GNU_LD); then \
446 $(DO_GNU_SO); \
447 else \
448 $(CALC_VERSIONS); \
449 SHARE_FLAG='-G'; \
450 ($(CC) -v 2>&1 | grep gcc) > /dev/null && SHARE_FLAG='-shared'; \
451 SHLIB=lib$(LIBNAME).so; \
452 SHLIB_SUFFIX=; \
453 ALLSYMSFLAGS=''; \
454 NOALLSYMSFLAGS=''; \
455 SHAREDFLAGS="$(CFLAGS) $${SHARE_FLAG} -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
456 fi; \
457 $(LINK_SO_A_UNPACKED)
458link_app.svr5:
459 @$(DETECT_GNU_LD) && $(DO_GNU_APP); \
460 $(LINK_APP)
461
462link_o.irix:
463 @ if $(DETECT_GNU_LD); then \
464 $(DO_GNU_SO); \
465 else \
466 $(CALC_VERSIONS); \
467 SHLIB=lib$(LIBNAME).so; \
468 SHLIB_SUFFIX=; \
469 MINUSWL=""; \
470 ($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSWL="-Wl,"; \
471 ALLSYMSFLAGS="$${MINUSWL}-all"; \
472 NOALLSYMSFLAGS="$${MINUSWL}-none"; \
473 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,-B,symbolic"; \
474 fi; \
475 $(LINK_SO_O)
476link_a.irix:
477 @ if $(DETECT_GNU_LD); then \
478 $(DO_GNU_SO); \
479 else \
480 $(CALC_VERSIONS); \
481 SHLIB=lib$(LIBNAME).so; \
482 SHLIB_SUFFIX=; \
483 MINUSWL=""; \
484 ($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSWL="-Wl,"; \
485 ALLSYMSFLAGS="$${MINUSWL}-all"; \
486 NOALLSYMSFLAGS="$${MINUSWL}-none"; \
487 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,-B,symbolic"; \
488 fi; \
489 $(LINK_SO_A)
490link_app.irix:
491 @LDFLAGS="$(CFLAGS) -Wl,-rpath,$(LIBRPATH)"; \
492 $(LINK_APP)
493
494# 32-bit PA-RISC HP-UX embeds the -L pathname of libs we link with, so
495# we compensate for it with +cdp ../: and +cdp ./:. Yes, these rewrite
496# rules imply that we can only link one level down in catalog structure,
497# but that's what takes place for the moment of this writing. +cdp option
498# was introduced in HP-UX 11.x and applies in 32-bit PA-RISC link
499# editor context only [it's simply ignored in other cases, which are all
500# ELFs by the way].
501#
502link_o.hpux:
503 @if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
504 $(CALC_VERSIONS); \
505 SHLIB=lib$(LIBNAME).sl; \
506 expr "$(CFLAGS)" : '.*DSO_DLFCN' > /dev/null && SHLIB=lib$(LIBNAME).so; \
507 SHLIB_SUFFIX=; \
508 ALLSYMSFLAGS='-Wl,-Fl'; \
509 NOALLSYMSFLAGS=''; \
510 expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
511 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,+cdp,../:,+cdp,./:"; \
512 fi; \
513 rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
514 $(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
515link_a.hpux:
516 @if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
517 $(CALC_VERSIONS); \
518 SHLIB=lib$(LIBNAME).sl; \
519 expr $(PLATFORM) : '.*ia64' > /dev/null && SHLIB=lib$(LIBNAME).so; \
520 SHLIB_SUFFIX=; \
521 ALLSYMSFLAGS='-Wl,-Fl'; \
522 NOALLSYMSFLAGS=''; \
523 expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
524 SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,+cdp,../:,+cdp,./:"; \
525 fi; \
526 rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
527 $(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
528link_app.hpux:
529 @if $(DETECT_GNU_LD); then $(DO_GNU_APP); else \
530 LDFLAGS="$(CFLAGS) -Wl,+s,+cdp,../:,+cdp,./:,+b,$(LIBRPATH)"; \
531 fi; \
532 $(LINK_APP)
533
534link_o.aix:
535 @ $(CALC_VERSIONS); \
536 OBJECT_MODE=`expr "x$(SHARED_LDFLAGS)" : 'x\-[a-z]*\(64\)'` || :; \
537 OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
538 SHLIB=lib$(LIBNAME).so; \
539 SHLIB_SUFFIX=; \
540 ALLSYMSFLAGS=''; \
541 NOALLSYMSFLAGS=''; \
542 SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-bexpall,-bnolibpath,-bM:SRE'; \
543 $(LINK_SO_O);
544link_a.aix:
545 @ $(CALC_VERSIONS); \
546 OBJECT_MODE=`expr "x$(SHARED_LDFLAGS)" : 'x\-[a-z]*\(64\)'` || : ; \
547 OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
548 SHLIB=lib$(LIBNAME).so; \
549 SHLIB_SUFFIX=; \
550 ALLSYMSFLAGS='-bnogc'; \
551 NOALLSYMSFLAGS=''; \
552 SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-bexpall,-bnolibpath,-bM:SRE'; \
553 $(LINK_SO_A_VIA_O)
554link_app.aix:
555 LDFLAGS="$(CFLAGS) -Wl,-brtl,-blibpath:$(LIBRPATH):$${LIBPATH:-/usr/lib:/lib}"; \
556 $(LINK_APP)
557
558link_o.reliantunix:
559 @ $(CALC_VERSIONS); \
560 SHLIB=lib$(LIBNAME).so; \
561 SHLIB_SUFFIX=; \
562 ALLSYMSFLAGS=; \
563 NOALLSYMSFLAGS=''; \
564 SHAREDFLAGS='$(CFLAGS) -G'; \
565 $(LINK_SO_O)
566link_a.reliantunix:
567 @ $(CALC_VERSIONS); \
568 SHLIB=lib$(LIBNAME).so; \
569 SHLIB_SUFFIX=; \
570 ALLSYMSFLAGS=; \
571 NOALLSYMSFLAGS=''; \
572 SHAREDFLAGS='$(CFLAGS) -G'; \
573 $(LINK_SO_A_UNPACKED)
574link_app.reliantunix:
575 $(LINK_APP)
576
577# Targets to build symbolic links when needed
578symlink.gnu symlink.solaris symlink.svr3 symlink.svr5 symlink.irix \
579symlink.aix symlink.reliantunix:
580 @ $(CALC_VERSIONS); \
581 SHLIB=lib$(LIBNAME).so; \
582 $(SYMLINK_SO)
583symlink.darwin:
584 @ $(CALC_VERSIONS); \
585 SHLIB=lib$(LIBNAME); \
586 SHLIB_SUFFIX=.dylib; \
587 $(SYMLINK_SO)
588symlink.hpux:
589 @ $(CALC_VERSIONS); \
590 SHLIB=lib$(LIBNAME).sl; \
591 expr $(PLATFORM) : '.*ia64' > /dev/null && SHLIB=lib$(LIBNAME).so; \
592 $(SYMLINK_SO)
593# The following lines means those specific architectures do no symlinks
594symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath symlink.beos:
595
596# Compatibility targets
597link_o.bsd-gcc-shared link_o.linux-shared link_o.gnu-shared: link_o.gnu
598link_a.bsd-gcc-shared link_a.linux-shared link_a.gnu-shared: link_a.gnu
599link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared: link_app.gnu
600symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared: symlink.gnu
601link_o.bsd-shared: link_o.bsd
602link_a.bsd-shared: link_a.bsd
603link_app.bsd-shared: link_app.bsd
604link_o.darwin-shared: link_o.darwin
605link_a.darwin-shared: link_a.darwin
606link_app.darwin-shared: link_app.darwin
607symlink.darwin-shared: symlink.darwin
608link_o.cygwin-shared: link_o.cygwin
609link_a.cygwin-shared: link_a.cygwin
610link_app.cygwin-shared: link_app.cygwin
611symlink.cygwin-shared: symlink.cygwin
612link_o.alpha-osf1-shared: link_o.alpha-osf1
613link_a.alpha-osf1-shared: link_a.alpha-osf1
614link_app.alpha-osf1-shared: link_app.alpha-osf1
615symlink.alpha-osf1-shared: symlink.alpha-osf1
616link_o.tru64-shared: link_o.tru64
617link_a.tru64-shared: link_a.tru64
618link_app.tru64-shared: link_app.tru64
619symlink.tru64-shared: symlink.tru64
620link_o.tru64-shared-rpath: link_o.tru64-rpath
621link_a.tru64-shared-rpath: link_a.tru64-rpath
622link_app.tru64-shared-rpath: link_app.tru64-rpath
623symlink.tru64-shared-rpath: symlink.tru64-rpath
624link_o.solaris-shared: link_o.solaris
625link_a.solaris-shared: link_a.solaris
626link_app.solaris-shared: link_app.solaris
627symlink.solaris-shared: symlink.solaris
628link_o.svr3-shared: link_o.svr3
629link_a.svr3-shared: link_a.svr3
630link_app.svr3-shared: link_app.svr3
631symlink.svr3-shared: symlink.svr3
632link_o.svr5-shared: link_o.svr5
633link_a.svr5-shared: link_a.svr5
634link_app.svr5-shared: link_app.svr5
635symlink.svr5-shared: symlink.svr5
636link_o.irix-shared: link_o.irix
637link_a.irix-shared: link_a.irix
638link_app.irix-shared: link_app.irix
639symlink.irix-shared: symlink.irix
640link_o.hpux-shared: link_o.hpux
641link_a.hpux-shared: link_a.hpux
642link_app.hpux-shared: link_app.hpux
643symlink.hpux-shared: symlink.hpux
644link_o.aix-shared: link_o.aix
645link_a.aix-shared: link_a.aix
646link_app.aix-shared: link_app.aix
647symlink.aix-shared: symlink.aix
648link_o.reliantunix-shared: link_o.reliantunix
649link_a.reliantunix-shared: link_a.reliantunix
650link_app.reliantunix-shared: link_app.reliantunix
651symlink.reliantunix-shared: symlink.reliantunix
652link_o.beos-shared: link_o.beos
653link_a.beos-shared: link_a.beos
654link_app.beos-shared: link_app.gnu
655symlink.beos-shared: symlink.beos