1 | # $Id: Makefile.kmk 95676 2022-07-17 03:01:19Z vboxsync $
|
---|
2 | ## @file
|
---|
3 | # Sub-Makefile for OpenSSL crypto.
|
---|
4 | #
|
---|
5 |
|
---|
6 | #
|
---|
7 | # Copyright (C) 2006-2022 Oracle Corporation
|
---|
8 | #
|
---|
9 | # This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
10 | # available from http://www.alldomusa.eu.org. This file is free software;
|
---|
11 | # you can redistribute it and/or modify it under the terms of the GNU
|
---|
12 | # General Public License (GPL) as published by the Free Software
|
---|
13 | # Foundation, in version 2 as it comes in the "COPYING" file of the
|
---|
14 | # VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
---|
15 | # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
16 | #
|
---|
17 |
|
---|
18 | SUB_DEPTH = ../../../..
|
---|
19 | include $(KBUILD_PATH)/subheader.kmk
|
---|
20 |
|
---|
21 | #
|
---|
22 | # Include sub-makefiles.
|
---|
23 | #
|
---|
24 | # Note! For joining the sub libraries into a crypto lib, we do some trickery to
|
---|
25 | # collect the sub-library names here.
|
---|
26 | #
|
---|
27 | VBOX_LIBRARIES_BEFORE_CRYPTO_SUBDIRS := $(LIBRARIES)
|
---|
28 | if defined(VBOX_ONLY_VALIDATIONKIT) && !defined(VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING)
|
---|
29 | include $(VBOX_PATH_CRYPTO)/sha/Makefile.kmk
|
---|
30 | else # Validation Kit unit tests need this.
|
---|
31 | include $(sort $(wildcard $(VBOX_PATH_CRYPTO)/*/Makefile.kmk))
|
---|
32 | endif
|
---|
33 | VBOX_CRYPTO_SUBLIBS := $(filter-out $(VBOX_LIBRARIES_BEFORE_CRYPTO_SUBDIRS), $(LIBRARIES))
|
---|
34 | VBOX_CRYPTO_SUBLIBS_X86 := $(filter %-x86, $(VBOX_CRYPTO_SUBLIBS))
|
---|
35 | VBOX_CRYPTO_SUBLIBS := $(filter-out %-x86, $(VBOX_CRYPTO_SUBLIBS))
|
---|
36 | if defined(VBOX_ONLY_EXTPACKS_USE_IMPLIBS)
|
---|
37 | $(eval LIBRARIES = $(VBOX_LIBRARIES_BEFORE_CRYPTO_SUBDIRS) crypto_sha)
|
---|
38 | else if "$(SDK_VBOX_OPENSSL_INCS)" != "$(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS)"
|
---|
39 | $(eval LIBRARIES = $(VBOX_LIBRARIES_BEFORE_CRYPTO_SUBDIRS))
|
---|
40 | endif
|
---|
41 | VBOX_LIBRARIES_BEFORE_CRYPTO_SUBDIRS :=
|
---|
42 |
|
---|
43 |
|
---|
44 | #
|
---|
45 | # The VBoxRT libcrypto.
|
---|
46 | #
|
---|
47 | LIBRARIES += VBox-libcrypto
|
---|
48 | VBox-libcrypto_TEMPLATE = LIBCRYPTO
|
---|
49 | VBox-libcrypto_INCS = $(VBox-libcrypto_0_OUTDIR)
|
---|
50 | VBox-libcrypto_SOURCES = \
|
---|
51 | asn1_dsa.c \
|
---|
52 | bsearch.c \
|
---|
53 | context.c \
|
---|
54 | core_algorithm.c \
|
---|
55 | core_fetch.c \
|
---|
56 | core_namemap.c \
|
---|
57 | cpt_err.c \
|
---|
58 | cpuid.c \
|
---|
59 | cryptlib.c \
|
---|
60 | ctype.c \
|
---|
61 | cversion.c \
|
---|
62 | der_writer.c \
|
---|
63 | ebcdic.c \
|
---|
64 | ex_data.c \
|
---|
65 | getenv.c \
|
---|
66 | info.c \
|
---|
67 | init.c \
|
---|
68 | initthread.c \
|
---|
69 | mem.c \
|
---|
70 | mem_sec.c \
|
---|
71 | o_dir.c \
|
---|
72 | o_fopen.c \
|
---|
73 | o_init.c \
|
---|
74 | o_str.c \
|
---|
75 | o_time.c \
|
---|
76 | packet.c \
|
---|
77 | param_build.c \
|
---|
78 | param_build_set.c \
|
---|
79 | params.c \
|
---|
80 | params_dup.c \
|
---|
81 | params_from_text.c \
|
---|
82 | passphrase.c \
|
---|
83 | provider.c \
|
---|
84 | provider_child.c \
|
---|
85 | provider_conf.c \
|
---|
86 | provider_core.c \
|
---|
87 | provider_predefined.c \
|
---|
88 | punycode.c \
|
---|
89 | self_test_core.c \
|
---|
90 | sparse_array.c \
|
---|
91 | threads_iprt.c \
|
---|
92 | trace.c \
|
---|
93 | uid.c
|
---|
94 |
|
---|
95 | ifdef VBOX_WITH_CRYPTO_ASM
|
---|
96 | VBox-libcrypto_DEFS.x86 += OPENSSL_CPUID_OBJ=x86cpuid.o
|
---|
97 | VBox-libcrypto_SOURCES.x86 += $(VBOX_PATH_CRYPTO_GENASM)/x86cpuid.S
|
---|
98 | VBox-libcrypto_DEFS.amd64 += OPENSSL_CPUID_OBJ=x86_64cpuid.o
|
---|
99 | VBox-libcrypto_SOURCES.amd64 += $(VBOX_PATH_CRYPTO_GENASM)/x86_64cpuid.S
|
---|
100 | else
|
---|
101 | VBox-libcrypto_SOURCES += mem_clr.c
|
---|
102 | endif
|
---|
103 |
|
---|
104 | ifdef VBOX_WITH_OPENSSL_FIPS
|
---|
105 | VBox-libcrypto_SOURCES += o_fips.c fips_ers.c
|
---|
106 | endif
|
---|
107 |
|
---|
108 | VBox-libcrypto_SOURCES += $(PATH_STAGE_LIB)/VBox-libproviders$(VBOX_SUFF_LIB)
|
---|
109 |
|
---|
110 | if defined(VBOX_ONLY_EXTPACKS_USE_IMPLIBS)
|
---|
111 | VBox-libcrypto_SOURCES += $(crypto_sha_1_TARGET)
|
---|
112 | else if "$(SDK_VBOX_OPENSSL_INCS)" == "$(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS)"
|
---|
113 | VBox-libcrypto_SOURCES += $(foreach sublib,$(VBOX_CRYPTO_SUBLIBS), $($(sublib)_1_TARGET))
|
---|
114 | endif
|
---|
115 |
|
---|
116 | VBox-libcrypto_CLEAN = $(VBox-libcrypto_0_OUTDIR)/buildinf.h
|
---|
117 | VBox-libcrypto_INTERMEDIATES = $(VBox-libcrypto_0_OUTDIR)/buildinf.h
|
---|
118 |
|
---|
119 |
|
---|
120 | ifdef VBOX_WITH_32_ON_64_MAIN_API # 32-bit edition.
|
---|
121 | LIBRARIES += VBox-libcrypto-x86
|
---|
122 | VBox-libcrypto-x86_TEMPLATE = VBoxLibCrypto-x86
|
---|
123 | VBox-libcrypto-x86_EXTENDS = VBox-libcrypto
|
---|
124 | VBox-libcrypto-x86_SOURCES = $(filter %.c %.cpp,$(VBox-libcrypto_SOURCES)) \
|
---|
125 | $(PATH_STAGE_LIB)/VBox-libproviders-x86$(VBOX_SUFF_LIB) \
|
---|
126 | $(foreach sublib,$(VBOX_CRYPTO_SUBLIBS_X86), $($(sublib)_1_TARGET))
|
---|
127 | endif
|
---|
128 |
|
---|
129 |
|
---|
130 | if defined(VBOX_NEED_EXTPACK_OPENSSL) && !defined(VBOX_ONLY_VALIDATIONKIT) # Not needed for Validation Kit.
|
---|
131 | #
|
---|
132 | # The extension pack libcrypto.
|
---|
133 | #
|
---|
134 | LIBRARIES += VBoxExtPack-libcrypto
|
---|
135 | VBoxExtPack-libcrypto = For the Oracle Extension Pack
|
---|
136 | VBoxExtPack-libcrypto_EXTENDS = VBox-libcrypto
|
---|
137 | VBoxExtPack-libcrypto_DEFS = $(VBox-libcrypto_DEFS) VBOX_IN_EXTPACK
|
---|
138 | VBoxExtPack-libcrypto_SOURCES = \
|
---|
139 | $(filter %.c %.cpp,$(VBox-libcrypto_SOURCES)) \
|
---|
140 | $(foreach sublib,$(VBOX_CRYPTO_SUBLIBS), $(VBoxExtPack-$(sublib)_1_TARGET))
|
---|
141 | define def_VBoxExtPack_libcrypto_inherit
|
---|
142 | LIBRARIES += VBoxExtPack-$(sublib)
|
---|
143 | VBoxExtPack-$(sublib) = Oracle Extension Pack version of $(sublib)
|
---|
144 | VBoxExtPack-$(sublib)_EXTENDS = $(sublib)
|
---|
145 | VBoxExtPack-$(sublib)_EXTENDS_BY = appending
|
---|
146 | VBoxExtPack-$(sublib)_DEFS = VBOX_IN_EXTPACK
|
---|
147 | VBoxExtPack-$(sublib)_DEFPATH = $($(sublib)_DEFPATH)
|
---|
148 | ## @todo kBuild: DEFPATH isn't inherited! FIXME!
|
---|
149 | endef
|
---|
150 | $(foreach sublib,$(VBOX_CRYPTO_SUBLIBS), $(eval $(def_VBoxExtPack_libcrypto_inherit)))
|
---|
151 |
|
---|
152 | endif # VBOX_NEED_EXTPACK_OPENSSL
|
---|
153 |
|
---|
154 |
|
---|
155 | ifdef VBOX_WITH_BLD_RTSIGNTOOL_SIGNING
|
---|
156 | #
|
---|
157 | # The build program libcrypto version.
|
---|
158 | #
|
---|
159 | LIBRARIES += VBoxBldProg-libcrypto
|
---|
160 | VBoxBldProg-libcrypto = For bldRTSignTool
|
---|
161 | VBoxBldProg-libcrypto_EXTENDS = VBox-libcrypto
|
---|
162 | VBoxBldProg-libcrypto_TEMPLATE = VBoxLibCryptoBldProg
|
---|
163 | VBoxBldProg-libcrypto_DEFS = $(VBox-libcrypto_DEFS)
|
---|
164 | VBoxBldProg-libcrypto_SOURCES = \
|
---|
165 | $(filter %.c %.cpp,$(VBox-libcrypto_SOURCES)) \
|
---|
166 | $(PATH_STAGE_LIB)/VBoxBldProg-libproviders$(VBOX_SUFF_LIB) \
|
---|
167 | $(foreach sublib,$(VBOX_CRYPTO_SUBLIBS), $(VBoxBldProg-$(sublib)_1_TARGET))
|
---|
168 | define def_VBoxBldProg_libcrypto_inherit
|
---|
169 | LIBRARIES += VBoxBldProg-$(sublib)
|
---|
170 | VBoxBldProg-$(sublib) = bldRTSignTool version of $(sublib)
|
---|
171 | VBoxBldProg-$(sublib)_EXTENDS = $(sublib)
|
---|
172 | VBoxBldProg-$(sublib)_EXTENDS_BY = appending
|
---|
173 | VBoxBldProg-$(sublib)_TEMPLATE = VBoxSubLibCryptoBldProg
|
---|
174 | VBoxBldProg-$(sublib)_DEFPATH = $($(sublib)_DEFPATH)
|
---|
175 | ## @todo kBuild: DEFPATH isn't inherited! FIXME!
|
---|
176 | endef
|
---|
177 | $(foreach sublib,$(VBOX_CRYPTO_SUBLIBS), $(eval $(def_VBoxBldProg_libcrypto_inherit)))
|
---|
178 |
|
---|
179 | endif # VBOX_WITH_BLD_RTSIGNTOOL_SIGNING
|
---|
180 |
|
---|
181 |
|
---|
182 | #
|
---|
183 | # ...
|
---|
184 | #
|
---|
185 | recreate-openssl-asm: $(VBOX_PATH_CRYPTO)/perlasm/x86asm.pl \
|
---|
186 | $(VBOX_PATH_CRYPTO)/x86cpuid.pl \
|
---|
187 | $(VBOX_PATH_CRYPTO)/x86_64cpuid.pl \
|
---|
188 | recreate-aes-asm \
|
---|
189 | recreate-bn-asm \
|
---|
190 | recreate-chacha-asm \
|
---|
191 | recreate-ec-asm \
|
---|
192 | recreate-md5-asm \
|
---|
193 | recreate-modes-asm \
|
---|
194 | recreate-poly1305-asm \
|
---|
195 | recreate-rc4-asm \
|
---|
196 | recreate-sha-asm
|
---|
197 | perl $(VBOX_PATH_CRYPTO)/x86cpuid.pl elf -fPIC $(VBOX_PATH_CRYPTO)/genasm-elf/x86cpuid.S
|
---|
198 | perl $(VBOX_PATH_CRYPTO)/x86_64cpuid.pl elf $(VBOX_PATH_CRYPTO)/genasm-elf/x86_64cpuid.S
|
---|
199 | perl $(VBOX_PATH_CRYPTO)/x86cpuid.pl macosx $(VBOX_PATH_CRYPTO)/genasm-macosx/x86cpuid.S
|
---|
200 | perl $(VBOX_PATH_CRYPTO)/x86_64cpuid.pl macosx $(VBOX_PATH_CRYPTO)/genasm-macosx/x86_64cpuid.S
|
---|
201 | perl $(VBOX_PATH_CRYPTO)/x86cpuid.pl win32n $(VBOX_PATH_CRYPTO)/genasm-nasm/x86cpuid.S
|
---|
202 | perl $(VBOX_PATH_CRYPTO)/x86_64cpuid.pl nasm $(VBOX_PATH_CRYPTO)/genasm-nasm/x86_64cpuid.S
|
---|
203 |
|
---|
204 |
|
---|
205 | include $(FILE_KBUILD_SUB_FOOTER)
|
---|
206 |
|
---|
207 |
|
---|
208 | #
|
---|
209 | # Generate
|
---|
210 | #
|
---|
211 | $(VBox-libcrypto_0_OUTDIR)/buildinf.h: $(VBOX_PATH_CRYPTO)/Makefile.kmk | $$(dir $$@)
|
---|
212 | $(call MSG_GENERATE,,$@)
|
---|
213 | $(QUIET)$(RM) -f $@
|
---|
214 | $(QUIET)$(APPEND) $@ '/* auto-generated by crypto/Makefile.kmk for crypto/cversion.c */'
|
---|
215 | $(QUIET)$(APPEND) $@ '#ifndef MK1MF_BUILD'
|
---|
216 | $(QUIET)$(APPEND) $@ '# define PLATFORM "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)"'
|
---|
217 | $(QUIET)$(APPEND) $@ '# define DATE "$(date-utc )"'
|
---|
218 | $(QUIET)$(APPEND) $@ 'static const char compiler_flags[] ='
|
---|
219 | $(QUIET)$(APPEND) $@ ' "$(VBox-libcrypto_CFLAGS)";'
|
---|
220 | $(QUIET)$(APPEND) $@ '#endif'
|
---|