VirtualBox

source: vbox/trunk/src/libs/openssl-1.1.0g/Config.kmk@ 69881

Last change on this file since 69881 was 69881, checked in by vboxsync, 7 years ago

Update OpenSSL to 1.1.0g.
bugref:8070: src/libs maintenance

  • Property svn:eol-style set to native
File size: 10.4 KB
Line 
1# $Id: Config.kmk 118412 2017-10-17 14:26:02Z bird $
2## @file
3# OpenSSL kBuild Configuration file.
4#
5
6#
7# Copyright (C) 2006-2017 Oracle Corporation
8#
9# Oracle Corporation confidential
10# All rights reserved
11#
12
13# Include the top-level configure file.
14ifndef VBOX_ROOT_CONFIG_KMK_INCLUDED
15 include $(PATH_ROOT)/Config.kmk
16endif
17
18# Enable open ssl testcases.
19if defined(VBOX_WITH_TESTCASES) \
20 && !defined(VBOX_ONLY_ADDITIONS) \
21 && !defined(VBOX_ONLY_DOCS) \
22 && !defined(VBOX_ONLY_EXTPACKS) \
23 && !defined(VBOX_ONLY_SDK) \
24 && !defined(VBOX_ONLY_VALIDATIONKIT)
25VBOX_WITH_OPENSSL_TESTCASES = 1
26endif
27
28# Figure out openssl perl asm style for the target
29VBOX_CRYPTO_ASM_SCHEME := portme
30if1of ($(KBUILD_TARGET), linux solaris)
31 VBOX_CRYPTO_ASM_SCHEME := elf
32else ifeq ($(KBUILD_TARGET), darwin)
33 VBOX_CRYPTO_ASM_SCHEME := macosx
34else ifeq ($(KBUILD_TARGET), win)
35 VBOX_CRYPTO_ASM_SCHEME := nasm
36endif
37
38# Can't use relative paths when dealing with sub-makefiles.
39VBOX_PATH_OPENSSL := $(PATH_ROOT)/src/libs/openssl-1.1.0g
40VBOX_PATH_CRYPTO := $(VBOX_PATH_OPENSSL)/crypto
41VBOX_PATH_CRYPTO_GENASM := $(VBOX_PATH_CRYPTO)/genasm-$(VBOX_CRYPTO_ASM_SCHEME)
42VBOX_PATH_CRYPTO_AES := $(VBOX_PATH_CRYPTO)/aes
43VBOX_PATH_CRYPTO_SHA := $(VBOX_PATH_CRYPTO)/sha
44VBOX_PATH_CRYPTO_MODES := $(VBOX_PATH_CRYPTO)/modes
45VBOX_INST_CRYPTO_HEADERS := obj/$(if-expr "$(CURSUBDIR)" == ".",,$(CURSUBDIR)/)crypto-1.1.0-headers/include/openssl/
46VBOX_PATH_CRYPTO_HEADERS := $(abspath $(PATH_OUT))/$(patsubst %/,%,$(VBOX_INST_CRYPTO_HEADERS))
47
48# Enable asm implementation of crypto (for now selectively, needs testing)
49if1of ($(KBUILD_TARGET), linux darwin solaris win)
50 VBOX_WITH_CRYPTO_ASM = 1
51endif
52
53#
54# A target for installer the header files into a include directory
55# for the build. We have to put this in the Config.kmk because it
56# is required when running make from a sub directory too.
57#
58INSTALLS += crypto-headers
59crypto-headers_INST = $(VBOX_INST_CRYPTO_HEADERS)
60crypto-headers_MODE = a+r,u+w
61crypto-headers_DEFPATH = $(VBOX_PATH_OPENSSL)
62crypto-headers_SOURCES = \
63 include/openssl/aes.h=>aes.h \
64 include/openssl/asn1.h=>asn1.h \
65 include/openssl/asn1t.h=>asn1t.h \
66 include/openssl/asn1_mac.h=>asn1_mac.h \
67 include/openssl/async.h=>async.h \
68 include/openssl/bio.h=>bio.h \
69 include/openssl/blowfish.h=>blowfish.h \
70 include/openssl/bn.h=>bn.h \
71 include/openssl/buffer.h=>buffer.h \
72 include/openssl/camellia.h=>camellia.h \
73 include/openssl/cast.h=>cast.h \
74 include/openssl/cmac.h=>cmac.h \
75 include/openssl/cms.h=>cms.h \
76 include/openssl/comp.h=>comp.h \
77 include/openssl/conf.h=>conf.h \
78 include/openssl/conf_api.h=>conf_api.h \
79 include/openssl/crypto.h=>crypto.h \
80 include/openssl/ct.h=>ct.h \
81 include/openssl/des.h=>des.h \
82 include/openssl/dh.h=>dh.h \
83 include/openssl/dsa.h=>dsa.h \
84 include/openssl/dtls1.h=>dtls1.h \
85 include/openssl/ebcdic.h=>ebcdic.h \
86 include/openssl/ec.h=>ec.h \
87 include/openssl/ecdh.h=>ecdh.h \
88 include/openssl/ecdsa.h=>ecdsa.h \
89 include/openssl/engine.h=>engine.h \
90 include/openssl/err.h=>err.h \
91 include/openssl/evp.h=>evp.h \
92 include/openssl/e_os2.h=>e_os2.h \
93 include/openssl/hmac.h=>hmac.h \
94 include/openssl/idea.h=>idea.h \
95 include/openssl/lhash.h=>lhash.h \
96 include/openssl/md2.h=>md2.h \
97 include/openssl/md4.h=>md4.h \
98 include/openssl/md5.h=>md5.h \
99 include/openssl/mdc2.h=>mdc2.h \
100 include/openssl/modes.h=>modes.h \
101 include/openssl/objects.h=>objects.h \
102 include/openssl/obj_mac.h=>obj_mac.h \
103 include/openssl/ocsp.h=>ocsp.h \
104 openssl-mangling.h=>openssl-mangling.h \
105 include/openssl/opensslconf.h=>opensslconf.h \
106 include/openssl/opensslv.h=>opensslv.h \
107 include/openssl/ossl_typ.h=>ossl_typ.h \
108 include/openssl/pem.h=>pem.h \
109 include/openssl/pem2.h=>pem2.h \
110 include/openssl/pkcs12.h=>pkcs12.h \
111 include/openssl/pkcs7.h=>pkcs7.h \
112 include/openssl/rand.h=>rand.h \
113 include/openssl/rc2.h=>rc2.h \
114 include/openssl/rc4.h=>rc4.h \
115 include/openssl/ripemd.h=>ripemd.h \
116 include/openssl/rsa.h=>rsa.h \
117 include/openssl/safestack.h=>safestack.h \
118 include/openssl/seed.h=>seed.h \
119 include/openssl/sha.h=>sha.h \
120 include/openssl/srp.h=>srp.h \
121 include/openssl/srtp.h=>srtp.h \
122 include/openssl/ssl.h=>ssl.h \
123 include/openssl/ssl2.h=>ssl2.h \
124 include/openssl/ssl3.h=>ssl3.h \
125 include/openssl/stack.h=>stack.h \
126 include/openssl/symhacks.h=>symhacks.h \
127 include/openssl/tls1.h=>tls1.h \
128 include/openssl/ts.h=>ts.h \
129 include/openssl/txt_db.h=>txt_db.h \
130 include/openssl/ui.h=>ui.h \
131 include/openssl/x509.h=>x509.h \
132 include/openssl/x509v3.h=>x509v3.h \
133 include/openssl/x509_vfy.h=>x509_vfy.h
134
135
136
137#
138# The templates used for the crypo lib and all its sublibraries.
139#
140TEMPLATE_LIBCRYPTO = Template for the OpenSSL crypto library.
141TEMPLATE_LIBCRYPTO_EXTENDS = VBoxR3RuntimeDllNonPedantic
142ifneq ($(KBUILD_TARGET), win)
143 ## @todo correct inheritance here to make it use all the VBOXR3NP settings instead of overriding all of them.
144 TEMPLATE_LIBCRYPTO_ASTOOL = $(TEMPLATE_VBoxR3RuntimeDllNonPedantic_TOOL)
145 TEMPLATE_LIBCRYPTO_ASFLAGS = -include $(VBOX_PATH_OPENSSL)/openssl-mangling.h
146 TEMPLATE_LIBCRYPTO_ASFLAGS.x86 = -m32
147 TEMPLATE_LIBCRYPTO_ASFLAGS.amd64 = -m64
148 TEMPLATE_LIBCRYPTO_ASDEFS = $(NO_SUCH_VARIABLE)
149 TEMPLATE_LIBCRYPTO_ASDEFS.darwin = OPENSSL_MANGLE_ASM
150endif
151TEMPLATE_LIBCRYPTO_DEFS = \
152 $(TEMPLATE_VBoxR3RuntimeDllNonPedantic_DEFS) \
153 VBOX_SUFF_DLL=$(VBOX_SUFF_DLL) \
154 OPENSSL_USE_NODELETE \
155 OPENSSL_NO_CAST \
156 OPENSSL_NO_CAMELLIA \
157 OPENSSL_NO_COMP \
158 OPENSSL_NO_ERR \
159 OPENSSL_NO_DES \
160 OPENSSL_NO_EC \
161 OPENSSL_NO_ECDH \
162 OPENSSL_NO_ECDSA \
163 OPENSSL_NO_ENGINE \
164 OPENSSL_NO_IDEA \
165 OPENSSL_NO_RC2 \
166 OPENSSL_NO_RIPEMD \
167 OPENSSL_NO_MDC2 \
168 OPENSSL_NO_MD4 \
169 OPENSSL_NO_SHA0 \
170 OPENSSL_NO_SSL3 \
171 OPENSSL_NO_WHIRLPOOL \
172 OPENSSL_NO_DSO \
173 OPENSSL_NO_KRB5 \
174 OPENSSL_NO_POLY1305
175# OPENSSL_THREADS
176
177# enable for running with valgrind
178# TEMPLATE_LIBCRYPTO_DEFS += PURIFY
179
180ifdef VBOX_WITH_CRYPTO_ASM
181TEMPLATE_LIBCRYPTO_DEFS += \
182 AES_ASM \
183 SHA1_ASM \
184 SHA256_ASM \
185 SHA512_ASM
186endif
187if1of ($(KBUILD_TARGET), linux solaris)
188TEMPLATE_LIBCRYPTO_DEFS += \
189 _REENTRANT
190endif
191ifeq ($(sort $(filter -fPIC,$(TEMPLATE_VBoxR3RuntimeDllNonPedantic_CFLAGS))),-fPIC)
192TEMPLATE_LIBCRYPTO_DEFS += \
193 OPENSSL_PIC
194endif
195TEMPLATE_LIBCRYPTO_DEFS.amd64 += \
196 MD32_REG_T=int
197ifeq ($(KBUILD_TARGET),win)
198TEMPLATE_LIBCRYPTO_DEFS += \
199 OPENSSL_SYSNAME_WIN32
200# Exclude WinCrypt.h, causes trouble all over the place
201TEMPLATE_LIBCRYPTO_DEFS += \
202 NOCRYPT
203endif
204if1of ($(KBUILD_TARGET_ARCH), x86 amd64)
205TEMPLATE_LIBCRYPTO_DEFS += \
206 L_ENDIAN
207else
208TEMPLATE_LIBCRYPTO_DEFS += \
209 B_ENDIAN
210endif
211TEMPLATE_LIBCRYPTO_CFLAGS = $(filter-out $(VBOX_GCC_fvisibility-hidden),$(TEMPLATE_VBoxR3RuntimeDllNonPedantic_CFLAGS))
212TEMPLATE_LIBCRYPTO_CFLAGS.win = $(TEMPLATE_VBoxR3RuntimeDllNonPedantic_CFLAGS.win)
213TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4305 # asn1_lib.c(455) : warning C4305: 'type cast' : truncation from 'const unsigned char *' to 'unsigned long'
214TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4306 # tasn_new.c(338) : warning C4306: 'type cast' : conversion from 'int' to 'ASN1_VALUE *' of greater size
215TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4701 # tasn_dec.c(840) : warning C4701: potentially uninitialized local variable 'buf' used
216TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4101 # bn_asm.c(619) : warning C4101: 'bh' : unreferenced local variable
217TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4206 # e_camellia.c(120) : warning C4206: nonstandard extension used : translation unit is empty
218TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4232 # warning C4232: nonstandard extension used : 'malloc_func' : address of dllimport 'malloc' is not stati c, identity not guaranteed
219TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4210 # cryptlib.c(679) : warning C4210: nonstandard extension used : function given file scope
220TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4146 # x_long.c(79) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
221TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4130 # b_addr.c(750) : warning C4130: '==' : logical operation on address of string constant
222TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4090 # ssl_lib.c(229) : warning C4090: 'function' : different 'const' qualifiers
223TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4310 # bss_acpt.c(223) : warning C4310: cast truncates constant value [(int)INVALID_SOCKET]
224if1of ($(VBOX_VCC_TOOL_STEM), VCC120)
225 TEMPLATE_LIBCRYPTO_CFLAGS.win += -wd4005 # sdk\v7.1\include\sal_supp.h(57) : warning C4005: '__useHeader' : macro redefinition
226endif
227
228TEMPLATE_LIBCRYPTO_INCS := \
229 $(VBOX_PATH_OPENSSL) \
230 $(VBOX_PATH_OPENSSL)/include \
231 $(VBOX_PATH_CRYPTO)/include \
232 $(patsubst %/openssl,%,$(VBOX_PATH_CRYPTO_HEADERS))
233
234#TEMPLATE_LIBCRYPTO_INTERMEDIATES = $($(crypto-headers)_1_STAGE_TARGET)
235TEMPLATE_LIBCRYPTO_INTERMEDIATES := \
236 $(foreach f,$(crypto-headers_SOURCES),$(VBOX_PATH_CRYPTO_HEADERS)/$(lastword $(subst =>, ,$(f))))
237
238# Same as LIBCRYPTO except that we don't install these libraries.
239TEMPLATE_SUBLIBCRYPTO = Template for the OpenSSL crypto sub-libraries.
240TEMPLATE_SUBLIBCRYPTO_EXTENDS = LIBCRYPTO
241TEMPLATE_SUBLIBCRYPTO_INSTTYPE = none
242
243# Somewhat similar to LIBCRYPTO.
244TEMPLATE_LIBCRYPTOTST = Template for the OpenSSL crypto testcases.
245TEMPLATE_LIBCRYPTOTST_EXTENDS = VBOXR3TSTEXE
246TEMPLATE_LIBCRYPTOTST_DEFS = $(TEMPLATE_VBOXR3TSTEXE_DEFS) $(filter-out $(TEMPLATE_VBoxR3RuntimeDllNonPedantic_DEFS),$(TEMPLATE_LIBCRYPTO_DEFS))
247TEMPLATE_LIBCRYPTOTST_INCS = $(TEMPLATE_LIBCRYPTO_INCS) $(TEMPLATE_VBOXR3TSTEXE_INCS)
248ifeq ($(KBUILD_TARGET),win)
249TEMPLATE_LIBCRYPTOTST_CFLAGS = $(filter-out $(VBOX_VCC_WERR), $(TEMPLATE_VBOXR3TSTEXE_CXXFLAGS)) $(VBOX_VCC_NON_PEDANTIC)
250else
251TEMPLATE_LIBCRYPTOTST_CFLAGS = $(filter-out $(VBOX_GCC_PEDANTIC_C), $(TEMPLATE_VBOXR3TSTEXE_CFLAGS)) $(VBOX_GCC_NON_PEDANTIC_C)
252endif
253TEMPLATE_LIBCRYPTOTST_LIBS = $(PATH_STAGE_LIB)/VBox-libcrypto$(VBOX_SUFF_LIB) $(TEMPLATE_VBOXR3TSTEXE_LIBS)
254
255#
256# 32-bit version of LIBCRYPTO and SUBLIBCRYPTO.
257#
258TEMPLATE_VBoxLibCrypto-x86 = 32-bit template for the OpenSSL crypto library.
259TEMPLATE_VBoxLibCrypto-x86_EXTENDS = LIBCRYPTO
260TEMPLATE_VBoxLibCrypto-x86_BLD_TRG_ARCH = x86
261TEMPLATE_VBoxLibCrypto-x86_DEFS = $(filter-out HC_ARCH_BITS%,$(TEMPLATE_LIBCRYPTO_DEFS)) HC_ARCH_BITS=32 ARCH_BITS=32
262
263TEMPLATE_VBoxSubLibCrypto-x86 = 32-bit template for the OpenSSL crypto sub-library.
264TEMPLATE_VBoxSubLibCrypto-x86_EXTENDS = VBoxLibCrypto-x86
265TEMPLATE_VBoxSubLibCrypto-x86_INSTTYPE = none
266
267ifdef VBOX_WITH_32_ON_64_MAIN_API # 32-bit edition.
268 define VBOX_OPENSSL_X86
269 $(eval LIBRARIES += $(1)-x86)
270 $(1)-x86_TEMPLATE := VBoxSubLibCrypto-x86
271 $(1)-x86_EXTENDS := $(1)
272 endef
273else
274 define VBOX_OPENSSL_X86
275 endef
276endif
277
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette