Andrzej Szeszo
2013-06-04 453bf5a3004107204e1858532a38b3e703e32995
commit | author | age
51f5ec 1 #
JP 2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
5a76a7 21 # Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
51f5ec 22 #
7c3a7e 23 include ../../../make-rules/shared-macros.mk
51f5ec 24
28cc44 25 COMPONENT_NAME =    openssl
TK 26 # When new version of OpenSSL comes in, you must update both COMPONENT_VERSION
27 # and IPS_COMPONENT_VERSION.
28 # When upgrading OpenSSL, please, DON'T FORGET TO TEST WANBOOT too. 
29 # For more information about wanboot-openssl testing, please refer to
30 # ../README.
840b1b 31 COMPONENT_VERSION =    1.0.1e
28cc44 32 # Version for IPS. It is easier to do it manually than convert the letter to a
TK 33 # number while taking into account that there might be no letter at all.
840b1b 34 IPS_COMPONENT_VERSION = 1.0.1.5
28cc44 35 COMPONENT_PROJECT_URL=    http://www.openssl.org/
TK 36 COMPONENT_SRC =        $(COMPONENT_NAME)-$(COMPONENT_VERSION)
37 COMPONENT_ARCHIVE =    $(COMPONENT_SRC).tar.gz
dce6a0 38 COMPONENT_ARCHIVE_HASH=    \
840b1b 39     sha256:f74f15e8c8ff11aa3d5bb5f276d202ec18d7246e95f961db76054199c69c1ae3
28cc44 40 COMPONENT_ARCHIVE_URL =    $(COMPONENT_PROJECT_URL)source/$(COMPONENT_ARCHIVE)
3b89c9 41 COMPONENT_BUGDB=    utility/openssl
51f5ec 42
b69977 43 # Architecture-specific patches
fb6de2 44 EXTRA_PATCHES.sparc = $(PATCH_DIR)/openssl-t4-inline.sparc-patch
MM 45 EXTRA_PATCHES.sparc += $(PATCH_DIR)/openssl-1.0.1e-t4-engine.sparc-patch
b69977 46 EXTRA_PATCHES = $(EXTRA_PATCHES.$(MACH))
DA 47
51f5ec 48 include $(WS_TOP)/make-rules/prep.mk
JP 49 include $(WS_TOP)/make-rules/configure.mk
50 include $(WS_TOP)/make-rules/ips.mk
51 include $(WS_TOP)/make-rules/lint-libraries.mk
7c3a7e 52
NJ 53 PATH=$(SPRO_VROOT)/bin:/usr/bin:/usr/gnu/bin:/usr/perl5/bin
28cc44 54
TK 55 # Variant of OpenSSL for wanboot is built in build/sparcv9-wanboot.
56 BUILD_DIR_WANBOOT = $(BUILD_DIR)/$(MACH64)-wanboot
51f5ec 57
JP 58 # OpenSSL does not use autoconf but its own configure system.
59 CONFIGURE_SCRIPT = $(SOURCE_DIR)/Configure
c824f9 60
TK 61 # This is to force OpenSSL's Configure script to use gmake for 'make links'. 
62 # Otherwise it fails with:
63 #     mksh: Fatal error in reader: Unmatched `(' on line
64 CONFIGURE_ENV += MAKE="$(GMAKE)"
51f5ec 65
JP 66 # Used in the configure options below.
67 PKCS11_LIB32 = /usr/lib/libpkcs11.so.1
68 PKCS11_LIB64 = /usr/lib/64/libpkcs11.so.1
69 ENGINESDIR_32 = /lib/openssl/engines
70 ENGINESDIR_64 = /lib/openssl/engines/64
71
28cc44 72 # Configure options common to both regular OpenSSL and OpenSSL for wanboot.
51f5ec 73 CONFIGURE_OPTIONS =  -DSOLARIS_OPENSSL -DNO_WINDOWS_BRAINDEATH
JP 74 CONFIGURE_OPTIONS += --openssldir=/etc/openssl
75 CONFIGURE_OPTIONS += --prefix=/usr
76 # We use OpenSSL install code for installing only manual pages and we do that
77 # for 32-bit version only.
78 CONFIGURE_OPTIONS += --install_prefix=$(PROTO_DIR)
79 CONFIGURE_OPTIONS += no-ec
80 CONFIGURE_OPTIONS += no-ecdh
81 CONFIGURE_OPTIONS += no-ecdsa
82 CONFIGURE_OPTIONS += no-rc3
83 CONFIGURE_OPTIONS += no-rc5
84 CONFIGURE_OPTIONS += no-mdc2
85 CONFIGURE_OPTIONS += no-idea
86 CONFIGURE_OPTIONS += no-hw_4758_cca
87 CONFIGURE_OPTIONS += no-hw_aep
88 CONFIGURE_OPTIONS += no-hw_atalla
89 CONFIGURE_OPTIONS += no-hw_chil
90 CONFIGURE_OPTIONS += no-hw_gmp
91 CONFIGURE_OPTIONS += no-hw_ncipher
92 CONFIGURE_OPTIONS += no-hw_nuron
93 CONFIGURE_OPTIONS += no-hw_padlock
94 CONFIGURE_OPTIONS += no-hw_sureware
95 CONFIGURE_OPTIONS += no-hw_ubsec
96 CONFIGURE_OPTIONS += no-hw_cswift
840b1b 97
51f5ec 98 # MD2 is not enabled by default in OpensSSL but some software we have in
JP 99 # Userland needs it. One example is nmap.
100 CONFIGURE_OPTIONS += enable-md2
101 CONFIGURE_OPTIONS += no-seed
840b1b 102
51f5ec 103 # We use both no-whirlpool and no-whrlpool since there is an inconsistency in
JP 104 # the OpenSSL code and one needs both to build OpenSSL successfully with
105 # Whirlpool implementation removed.
106 CONFIGURE_OPTIONS += no-whirlpool
107 CONFIGURE_OPTIONS += no-whrlpool
840b1b 108
28cc44 109 # Some additional options needed for our engines.
TK 110 CONFIGURE_OPTIONS += --pk11-libname=$(PKCS11_LIB$(BITS))
111 CONFIGURE_OPTIONS += --enginesdir=$(ENGINESDIR_$(BITS))
51f5ec 112
JP 113 # We define our own compiler and linker option sets for Solaris. See Configure
114 # for more information.
115 CONFIGURE_OPTIONS32_i386 =    solaris-x86-cc-sunw
116 CONFIGURE_OPTIONS32_sparc =    solaris-sparcv9-cc-sunw
117 CONFIGURE_OPTIONS64_i386 =    solaris64-x86_64-cc-sunw
118 CONFIGURE_OPTIONS64_sparc =    solaris64-sparcv9-cc-sunw
119
28cc44 120 # Options specific to regular build.
TK 121 # They must not be specified as common, as they cannot be overridden.
122 $(BUILD_DIR)/$(MACH32)/.configured:    CONFIGURE_OPTIONS += threads
123 $(BUILD_DIR)/$(MACH64)/.configured:    CONFIGURE_OPTIONS += threads
124 $(BUILD_DIR)/$(MACH32)/.configured:    CONFIGURE_OPTIONS += shared
125 $(BUILD_DIR)/$(MACH64)/.configured:    CONFIGURE_OPTIONS += shared
126 $(BUILD_DIR)/$(MACH32)/.configured:    CONFIGURE_OPTIONS += shared
127 $(BUILD_DIR)/$(MACH64)/.configured:    CONFIGURE_OPTIONS += shared
128 $(BUILD_DIR)/$(MACH32)/.configured:    CONFIGURE_OPTIONS += \
129     $(CONFIGURE_OPTIONS32_$(MACH))
130 $(BUILD_DIR)/$(MACH64)/.configured:    CONFIGURE_OPTIONS += \
131     $(CONFIGURE_OPTIONS64_$(MACH))
132
133 # OpenSSL for wanboot specific options
134 $(BUILD_DIR_WANBOOT)/.configured:    BITS=64
135 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += -DNO_CHMOD
136 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += -D_BOOT
137 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += -DOPENSSL_NO_DTLS1
840b1b 138 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += -DOPENSSL_NO_HEARTBEATS
MM 139 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += -DOPENSSL_NO_SRP
28cc44 140 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += no-cast
TK 141 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += no-dso
142 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += no-rc4
143 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += no-ripemd
144 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += no-hw
145 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += no-threads
146 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += no-shared
147 $(BUILD_DIR_WANBOOT)/.configured:    CONFIGURE_OPTIONS += \
148     solaris64-sparcv9-cc-sunw-wanboot
51f5ec 149
JP 150 # OpenSSL has its own configure system which must be run from the fully
151 # populated source code directory. However, the Userland configuration phase is
152 # run from the build directory. So, we must get the full source code into the
153 # build directory.
154 COMPONENT_PRE_CONFIGURE_ACTION = \
155     ( $(CLONEY) $(SOURCE_DIR) $(BUILD_DIR)/$(MACH$(BITS)); )
28cc44 156
TK 157 $(BUILD_DIR_WANBOOT)/.configured:    COMPONENT_PRE_CONFIGURE_ACTION = \
158         ( $(CLONEY) $(SOURCE_DIR) $(BUILD_DIR_WANBOOT); )
51f5ec 159
JP 160 # We deliver only one opensslconf.h file which must be suitable for both 32 and
161 # 64 bits. Depending on the configuration option, OpenSSL's Configure script
162 # creates opensslconf.h for either 32 or 64 bits. A patch makes the resulting
163 # header file usable on both architectures. The patch was generated against the
164 # opensslconf.h version from the 32 bit build.
165 COMPONENT_POST_CONFIGURE_ACTION = \
166     ( [ $(BITS) -eq 32 ] && $(GPATCH) -p1 $(@D)/crypto/opensslconf.h \
167       patches-post-config/opensslconf.patch; cd $(@D); $(MAKE) depend; )
168
169 # We do not ship our engines as patches since it would be more difficult to
170 # update the files which have been under continuous development. We rather copy
171 # the files to the right directories.
28cc44 172 # Same holds for wanboot-stubs.c, which stubs out several functions, that are
TK 173 # not available in the stand-alone environment of wanboot.
51f5ec 174 COMPONENT_PRE_BUILD_ACTION = \
f31e3f 175     ( echo "Cloning engines..."; \
ZK 176       $(LN) -fs $(COMPONENT_DIR)/engines/devcrypto/*.[ch]    $(@D)/engines; \
177       $(LN) -fs $(COMPONENT_DIR)/engines/pkcs11/*.[ch]        $(@D)/crypto/engine; \
178       $(LN) -fs $(COMPONENT_DIR)/engines/t4/eng_t4*.[ch]    $(@D)/crypto/engine; \
179       $(LN) -fs $(COMPONENT_DIR)/engines/t4/t4_aes.S        $(@D)/crypto/aes/asm; \
180       $(LN) -fs $(COMPONENT_DIR)/engines/t4/t4_des.S        $(@D)/crypto/des/asm; \
181       $(LN) -fs $(COMPONENT_DIR)/engines/t4/t4_md5.S        $(@D)/crypto/md5/asm; \
182       $(LN) -fs $(COMPONENT_DIR)/engines/t4/t4_sha?.S        $(@D)/crypto/sha/asm; \
fb6de2 183       $(LN) -fs $(COMPONENT_DIR)/wanboot-openssl/wanboot-stubs.c    $(@D)/crypto; \
MM 184       $(LN) -fs $(COMPONENT_DIR)/inline-t4/sparc_arch.h        $(@D)/crypto/; \
185       $(LN) -fs $(COMPONENT_DIR)/inline-t4/md5-sparcv9.pl        $(@D)/crypto/md5/asm; )
28cc44 186
TK 187 # OpenSSL for wanboot is built on sparc only.
188 ifeq ($(MACH), sparc)
189 BUILD_64 +=    $(BUILD_DIR_WANBOOT)/.built
190 endif
51f5ec 191
JP 192 build:        $(BUILD_32_and_64)
28cc44 193
TK 194 # Object files for wanboot-openssl.o have to be listed explicitly.
195 WANBOOT_OBJS =  \
840b1b 196     crypto/aes/aes-sparcv9.o crypto/aes/aes_cbc.o crypto/aes/aes_core.o \
MM 197     crypto/aes/aes_misc.o crypto/aes/aes_wrap.o crypto/asn1/a_bitstr.o \
198     crypto/asn1/a_bool.o crypto/asn1/a_bytes.o crypto/asn1/a_d2i_fp.o \
199     crypto/asn1/a_digest.o crypto/asn1/a_dup.o crypto/asn1/a_enum.o \
200     crypto/asn1/a_gentm.o crypto/asn1/a_i2d_fp.o crypto/asn1/a_int.o \
201     crypto/asn1/a_mbstr.o crypto/asn1/a_object.o crypto/asn1/a_octet.o \
202     crypto/asn1/a_print.o crypto/asn1/a_set.o crypto/asn1/a_sign.o \
203     crypto/asn1/a_strex.o crypto/asn1/a_strnid.o crypto/asn1/a_time.o \
204     crypto/asn1/a_type.o crypto/asn1/a_utctm.o crypto/asn1/a_utf8.o \
205     crypto/asn1/a_verify.o crypto/asn1/ameth_lib.o crypto/asn1/asn1_err.o \
206     crypto/asn1/asn1_gen.o crypto/asn1/asn1_lib.o crypto/asn1/asn1_par.o \
207     crypto/asn1/asn_mime.o crypto/asn1/asn_pack.o crypto/asn1/bio_asn1.o \
208     crypto/asn1/bio_ndef.o crypto/asn1/d2i_pr.o crypto/asn1/evp_asn1.o \
209     crypto/asn1/f_int.o crypto/asn1/f_string.o crypto/asn1/i2d_pr.o \
210     crypto/asn1/nsseq.o crypto/asn1/p5_pbe.o crypto/asn1/p5_pbev2.o \
211     crypto/asn1/p8_pkey.o crypto/asn1/t_pkey.o crypto/asn1/t_x509.o \
212     crypto/asn1/t_x509a.o crypto/asn1/tasn_dec.o crypto/asn1/tasn_enc.o \
213     crypto/asn1/tasn_fre.o crypto/asn1/tasn_new.o crypto/asn1/tasn_prn.o \
214     crypto/asn1/tasn_typ.o crypto/asn1/tasn_utl.o crypto/asn1/x_algor.o \
215     crypto/asn1/x_attrib.o crypto/asn1/x_bignum.o crypto/asn1/x_crl.o \
216     crypto/asn1/x_exten.o crypto/asn1/x_info.o crypto/asn1/x_long.o \
217     crypto/asn1/x_name.o crypto/asn1/x_pkey.o crypto/asn1/x_pubkey.o \
218     crypto/asn1/x_req.o crypto/asn1/x_sig.o crypto/asn1/x_spki.o \
219     crypto/asn1/x_val.o crypto/asn1/x_x509.o crypto/asn1/x_x509a.o \
220     crypto/bf/bf_cfb64.o crypto/bf/bf_ecb.o crypto/bf/bf_enc.o \
221     crypto/bf/bf_ofb64.o crypto/bf/bf_skey.o crypto/bio/b_dump.o \
222     crypto/bio/b_print.o crypto/bio/bf_buff.o crypto/bio/bio_err.o \
223     crypto/bio/bio_lib.o crypto/bio/bss_file.o crypto/bio/bss_mem.o \
224     crypto/bio/bss_null.o crypto/bio/bss_sock.o crypto/bn/bn-sparcv9.o \
225     crypto/bn/bn_add.o crypto/bn/bn_blind.o crypto/bn/bn_ctx.o \
226     crypto/bn/bn_div.o crypto/bn/bn_err.o crypto/bn/bn_exp.o \
227     crypto/bn/bn_exp2.o crypto/bn/bn_gcd.o crypto/bn/bn_lib.o \
228     crypto/bn/bn_mod.o crypto/bn/bn_mont.o crypto/bn/bn_mul.o \
229     crypto/bn/bn_prime.o crypto/bn/bn_print.o crypto/bn/bn_rand.o \
230     crypto/bn/bn_recp.o crypto/bn/bn_shift.o crypto/bn/bn_sqr.o \
231     crypto/bn/bn_word.o crypto/bn/sparcv9-mont.o crypto/bn/sparcv9a-mont.o \
232     crypto/buffer/buf_err.o crypto/buffer/buf_str.o crypto/buffer/buffer.o \
233     crypto/camellia/camellia.o crypto/camellia/cmll_cbc.o \
234     crypto/camellia/cmll_cfb.o crypto/camellia/cmll_ecb.o \
235     crypto/camellia/cmll_misc.o crypto/camellia/cmll_ofb.o \
236     crypto/camellia/cmll_utl.o crypto/cmac/cm_ameth.o crypto/cmac/cm_pmeth.o \
237     crypto/cmac/cmac.o crypto/cms/cms_asn1.o crypto/cms/cms_att.o \
28cc44 238     crypto/cms/cms_dd.o crypto/cms/cms_enc.o crypto/cms/cms_env.o \
TK 239     crypto/cms/cms_err.o crypto/cms/cms_io.o crypto/cms/cms_lib.o \
840b1b 240     crypto/cms/cms_pwri.o crypto/cms/cms_sd.o crypto/comp/c_zlib.o \
MM 241     crypto/comp/comp_err.o crypto/comp/comp_lib.o crypto/conf/conf_api.o \
242     crypto/conf/conf_def.o crypto/conf/conf_err.o crypto/conf/conf_lib.o \
243     crypto/conf/conf_mod.o crypto/cpt_err.o crypto/cryptlib.o \
244     crypto/des/cfb64ede.o crypto/des/cfb64enc.o crypto/des/cfb_enc.o \
245     crypto/des/des_enc-sparc.o crypto/des/ecb3_enc.o crypto/des/ecb_enc.o \
246     crypto/des/ofb64ede.o crypto/des/ofb64enc.o crypto/des/set_key.o \
247     crypto/des/xcbc_enc.o crypto/dh/dh_ameth.o crypto/dh/dh_asn1.o \
248     crypto/dh/dh_check.o crypto/dh/dh_err.o crypto/dh/dh_gen.o \
249     crypto/dh/dh_key.o crypto/dh/dh_lib.o crypto/dh/dh_pmeth.o \
250     crypto/dsa/dsa_ameth.o crypto/dsa/dsa_asn1.o crypto/dsa/dsa_err.o \
251     crypto/dsa/dsa_gen.o crypto/dsa/dsa_key.o crypto/dsa/dsa_lib.o \
252     crypto/dsa/dsa_ossl.o crypto/dsa/dsa_pmeth.o crypto/dsa/dsa_sign.o \
253     crypto/dsa/dsa_vrf.o crypto/dso/dso_lib.o crypto/dso/dso_null.o \
254     crypto/dso/dso_openssl.o crypto/engine/eng_ctrl.o crypto/engine/eng_err.o \
255     crypto/engine/eng_init.o crypto/engine/eng_lib.o crypto/engine/eng_list.o \
256     crypto/engine/eng_pkey.o crypto/engine/eng_table.o \
257     crypto/engine/tb_asnmth.o crypto/engine/tb_cipher.o crypto/engine/tb_dh.o \
258     crypto/engine/tb_digest.o crypto/engine/tb_dsa.o \
259     crypto/engine/tb_pkmeth.o crypto/engine/tb_rand.o crypto/engine/tb_rsa.o \
260     crypto/err/err.o crypto/err/err_all.o crypto/err/err_prn.o \
261     crypto/evp/bio_b64.o crypto/evp/bio_enc.o crypto/evp/bio_md.o \
262     crypto/evp/c_all.o crypto/evp/c_allc.o crypto/evp/c_alld.o \
263     crypto/evp/digest.o crypto/evp/e_aes.o crypto/evp/e_aes_cbc_hmac_sha1.o \
28cc44 264     crypto/evp/e_bf.o crypto/evp/e_camellia.o crypto/evp/e_des.o \
TK 265     crypto/evp/e_des3.o crypto/evp/e_null.o crypto/evp/e_rc2.o \
266     crypto/evp/e_xcbc_d.o crypto/evp/encode.o crypto/evp/evp_enc.o \
267     crypto/evp/evp_err.o crypto/evp/evp_key.o crypto/evp/evp_lib.o \
268     crypto/evp/evp_pbe.o crypto/evp/evp_pkey.o crypto/evp/m_dss.o \
269     crypto/evp/m_dss1.o crypto/evp/m_md4.o crypto/evp/m_md5.o \
270     crypto/evp/m_sha.o crypto/evp/m_sha1.o crypto/evp/m_sigver.o \
271     crypto/evp/names.o crypto/evp/p5_crpt.o crypto/evp/p5_crpt2.o \
272     crypto/evp/p_lib.o crypto/evp/p_sign.o crypto/evp/p_verify.o \
273     crypto/evp/pmeth_fn.o crypto/evp/pmeth_gn.o crypto/evp/pmeth_lib.o \
274     crypto/ex_data.o crypto/hmac/hm_ameth.o crypto/hmac/hm_pmeth.o \
275     crypto/hmac/hmac.o crypto/lhash/lhash.o crypto/md4/md4_dgst.o \
c07dce 276     crypto/md5/md5-sparcv9.o \
28cc44 277     crypto/md5/md5_dgst.o crypto/mem.o crypto/mem_dbg.o crypto/modes/cbc128.o \
840b1b 278     crypto/modes/ccm128.o crypto/modes/cfb128.o crypto/modes/ctr128.o \
MM 279     crypto/modes/gcm128.o crypto/modes/ghash-sparcv9.o crypto/modes/ofb128.o \
280     crypto/modes/xts128.o crypto/o_dir.o crypto/o_init.o crypto/o_time.o \
281     crypto/objects/o_names.o crypto/objects/obj_dat.o \
28cc44 282     crypto/objects/obj_err.o crypto/objects/obj_lib.o \
TK 283     crypto/objects/obj_xref.o crypto/ocsp/ocsp_asn.o crypto/ocsp/ocsp_err.o \
284     crypto/pem/pem_all.o crypto/pem/pem_err.o crypto/pem/pem_info.o \
285     crypto/pem/pem_lib.o crypto/pem/pem_oth.o crypto/pem/pem_pk8.o \
286     crypto/pem/pem_pkey.o crypto/pem/pem_x509.o crypto/pem/pem_xaux.o \
287     crypto/pkcs12/p12_add.o crypto/pkcs12/p12_asn.o crypto/pkcs12/p12_attr.o \
288     crypto/pkcs12/p12_crpt.o crypto/pkcs12/p12_decr.o crypto/pkcs12/p12_key.o \
289     crypto/pkcs12/p12_mutl.o crypto/pkcs12/p12_p8d.o crypto/pkcs12/p12_p8e.o \
290     crypto/pkcs12/p12_utl.o crypto/pkcs12/pk12err.o crypto/pkcs7/pk7_asn1.o \
291     crypto/pkcs7/pk7_attr.o crypto/pkcs7/pk7_doit.o crypto/pkcs7/pk7_lib.o \
840b1b 292     crypto/pkcs7/pkcs7err.o crypto/pqueue/pqueue.o crypto/rand/md_rand.o \
MM 293     crypto/rand/rand_err.o crypto/rand/rand_lib.o crypto/rand/rand_unix.o \
294     crypto/rand/randfile.o crypto/rc2/rc2_cbc.o crypto/rc2/rc2_ecb.o \
295     crypto/rc2/rc2_skey.o crypto/rc2/rc2cfb64.o crypto/rc2/rc2ofb64.o \
296     crypto/rsa/rsa_ameth.o crypto/rsa/rsa_asn1.o crypto/rsa/rsa_crpt.o \
297     crypto/rsa/rsa_eay.o crypto/rsa/rsa_err.o crypto/rsa/rsa_gen.o \
298     crypto/rsa/rsa_lib.o crypto/rsa/rsa_none.o crypto/rsa/rsa_oaep.o \
299     crypto/rsa/rsa_pk1.o crypto/rsa/rsa_pmeth.o crypto/rsa/rsa_pss.o \
300     crypto/rsa/rsa_saos.o crypto/rsa/rsa_sign.o crypto/rsa/rsa_ssl.o \
28cc44 301     crypto/rsa/rsa_x931.o crypto/sha/sha1-sparcv9.o crypto/sha/sha1dgst.o \
TK 302     crypto/sha/sha256-sparcv9.o crypto/sha/sha256.o \
303     crypto/sha/sha512-sparcv9.o crypto/sha/sha512.o crypto/sha/sha_dgst.o \
840b1b 304     crypto/sparccpuid.o crypto/sparcv9cap.o crypto/srp/srp_lib.o \
MM 305     crypto/srp/srp_vfy.o crypto/stack/stack.o crypto/ts/ts_err.o \
306     crypto/txt_db/txt_db.o crypto/ui/ui_err.o crypto/wanboot-stubs.o \
307     crypto/x509/by_dir.o crypto/x509/by_file.o crypto/x509/x509_att.o \
308     crypto/x509/x509_cmp.o crypto/x509/x509_d2.o crypto/x509/x509_def.o \
309     crypto/x509/x509_err.o crypto/x509/x509_ext.o crypto/x509/x509_lu.o \
310     crypto/x509/x509_obj.o crypto/x509/x509_req.o crypto/x509/x509_trs.o \
311     crypto/x509/x509_txt.o crypto/x509/x509_v3.o crypto/x509/x509_vfy.o \
312     crypto/x509/x509_vpm.o crypto/x509/x509name.o crypto/x509/x509rset.o \
313     crypto/x509/x509type.o crypto/x509/x_all.o crypto/x509v3/pcy_cache.o \
314     crypto/x509v3/pcy_data.o crypto/x509v3/pcy_lib.o crypto/x509v3/pcy_map.o \
315     crypto/x509v3/pcy_node.o crypto/x509v3/pcy_tree.o crypto/x509v3/v3_akey.o \
316     crypto/x509v3/v3_akeya.o crypto/x509v3/v3_alt.o crypto/x509v3/v3_bcons.o \
317     crypto/x509v3/v3_bitst.o crypto/x509v3/v3_conf.o crypto/x509v3/v3_cpols.o \
318     crypto/x509v3/v3_crld.o crypto/x509v3/v3_enum.o crypto/x509v3/v3_extku.o \
319     crypto/x509v3/v3_genn.o crypto/x509v3/v3_ia5.o crypto/x509v3/v3_info.o \
320     crypto/x509v3/v3_int.o crypto/x509v3/v3_lib.o crypto/x509v3/v3_ncons.o \
321     crypto/x509v3/v3_ocsp.o crypto/x509v3/v3_pci.o crypto/x509v3/v3_pcia.o \
322     crypto/x509v3/v3_pcons.o crypto/x509v3/v3_pku.o crypto/x509v3/v3_pmaps.o \
323     crypto/x509v3/v3_prn.o crypto/x509v3/v3_purp.o crypto/x509v3/v3_skey.o \
324     crypto/x509v3/v3_sxnet.o crypto/x509v3/v3_utl.o crypto/x509v3/v3err.o \
325     ssl/s3_both.o ssl/s3_clnt.o ssl/s3_enc.o ssl/s3_lib.o ssl/s3_pkt.o \
326     ssl/ssl_algs.o ssl/ssl_asn1.o ssl/ssl_cert.o ssl/ssl_ciph.o ssl/ssl_err.o \
327     ssl/ssl_err2.o ssl/ssl_lib.o ssl/ssl_rsa.o ssl/ssl_sess.o ssl/t1_enc.o \
6823c4 328     ssl/t1_lib.o ssl/t1_reneg.o ssl/d1_srtp.o ssl/s3_cbc.o ssl/t1_clnt.o
28cc44 329
TK 330 # Linking of openssl bits for wanboot.
331 # Interface for wanboot is specified in mapfile.wanboot. Object files are
332 # compiled to have functions in separate sections, unused sections get
333 # discarded.
334 CREATE_BIG_OBJECT_FILE = ( \
335     cd $(BUILD_DIR_WANBOOT); \
336     $(LD) -o wanboot-openssl.o -r -M../../mapfile.wanboot -Breduce \
337         -zdiscard-unused=sections,files -zguidance \
338         $(WANBOOT_OBJS); \
339     )
340
341 $(BUILD_DIR_WANBOOT)/.built:    COMPONENT_POST_BUILD_ACTION = \
342     ($(CREATE_BIG_OBJECT_FILE); )
51f5ec 343
JP 344 # OpenSSL uses sections man[1357] by default so we must create the man
345 # directories we use for OpenSSL man pages in Solaris. Note that we patch the
346 # OpenSSL man page install script to use the correct directories.
347 MANDIR_SECTIONS =  $(PROTO_DIR)/usr/share/man/man1openssl
348 MANDIR_SECTIONS += $(PROTO_DIR)/usr/share/man/man3openssl
349 MANDIR_SECTIONS += $(PROTO_DIR)/usr/share/man/man5openssl
350 MANDIR_SECTIONS += $(PROTO_DIR)/usr/share/man/man7openssl
351
352 # We must create man page directories manually since we patched OpenSSL install
353 # code to install into manXopenssl instead of manX. Also, OpenSSL does not
354 # install into <dir>/$(MACH64) for 64-bit install so no such directory is
355 # created and Userland install code would fail when installing lint libraries.
356 COMPONENT_PRE_INSTALL_ACTION = ( $(MKDIR) $(MANDIR_SECTIONS); \
357     $(MKDIR) $(PROTO_DIR)/usr/lib/$(MACH64); )
358
359 # The install_docs target will install man pages into $(PROTO_DIR)/$(MANDIR). We
360 # also add /usr/perl5/bin to PATH so that OpenSSL install code can locate the
361 # system pod2man. If not set, OpenSSL make would use an internal implementation
362 # from the tarball which would corrupt some man pages.
7c3a7e 363 COMPONENT_INSTALL_ARGS += PATH=$(PATH) MANDIR=/usr/share/man
51f5ec 364
28cc44 365 WANBOOT_TO      = $(PROTO_DIR)/lib/openssl/wanboot/$(MACH64)
TK 366
51f5ec 367 # We could run OpenSSL install code for 32 bits only to process header files and
28cc44 368 # manual pages. However, lint libraries depend on install stamps so we run
51f5ec 369 # install for 64 bit as well. Note that we must take built binary files from
JP 370 # build directories, not from the proto area which contains whatever was
371 # installed first.
28cc44 372 # OpenSSL for wanboot is built on sparc only.
TK 373 ifeq ($(MACH), sparc)
374 install:    $(INSTALL_32_and_64) $(BUILD_DIR_WANBOOT)/.built
375     $(MKDIR) -p $(WANBOOT_TO);
376     $(CP) $(BUILD_DIR_WANBOOT)/wanboot-openssl.o $(WANBOOT_TO);
377 else
51f5ec 378 install:    $(INSTALL_32_and_64)
28cc44 379 endif
51f5ec 380
JP 381 # We need to modify the default lint flags to include patched opensslconf.h from
382 # the build directory. If we do not do that, lint will complain about md2.h
383 # which is not enabled by default but it is in our opensslconf.h.
aea366 384 LFLAGS_32 := -I$(BUILD_DIR_32)/include $(LINT_FLAGS) -lsoftcrypto
FR 385 LFLAGS_64 := -I$(BUILD_DIR_64)/include $(LINT_FLAGS) -lsoftcrypto
51f5ec 386
JP 387 # Set modified lint flags for our lint library targets.
840b1b 388 $(BUILD_DIR_32)/llib-lcrypto.ln: LINT_FLAGS=$(LFLAGS_32)
MM 389 $(BUILD_DIR_32)/llib-lssl.ln: LINT_FLAGS=$(LFLAGS_32)
390 $(BUILD_DIR_64)/llib-lcrypto.ln: LINT_FLAGS=$(LFLAGS_64)
391 $(BUILD_DIR_64)/llib-lssl.ln: LINT_FLAGS=$(LFLAGS_64)
51f5ec 392
JP 393 test:        $(NO_TESTS)
394
395 BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
396
397 include $(WS_TOP)/make-rules/depend.mk