]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/intel-ipsec-mb/win_x64.mak
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / intel-ipsec-mb / win_x64.mak
1 #
2 # Copyright (c) 2017-2019, Intel Corporation
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are met:
6 #
7 # * Redistributions of source code must retain the above copyright notice,
8 # this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above copyright
10 # notice, this list of conditions and the following disclaimer in the
11 # documentation and/or other materials provided with the distribution.
12 # * Neither the name of Intel Corporation nor the names of its contributors
13 # may be used to endorse or promote products derived from this software
14 # without specific prior written permission.
15 #
16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #
27
28 # Available build options:
29 # DEBUG=y - this option will produce library fit for debugging
30 # DEBUG=n - this option will produce library not fit for debugging (default)
31 # SHARED=y - this option will produce shared library (DLL) (default)
32 # SHARED=n - this option will produce static library (lib)
33 # SAFE_DATA=y - this option will clear memory and registers containing
34 # sensitive information (e.g. keys, IVs)
35 # SAFE_PARAM=y - this option will add extra input parameter checks
36 # SAFE_LOOKUP=y - this option will perform constant-time lookups depending on
37 # sensitive data (default)
38 # GCM_BIG_DATA=y
39 # - Better performing VAES GCM on big buffers using more ghash keys (~5% up).
40 # This option results in a much bigger gcm_key structure (>2K)
41
42 !if !defined(SHARED)
43 SHARED = y
44 !endif
45
46 # Available installation options:
47 # PREFIX=<path> - path to install the library (c:\program files\ is default)
48
49 !if !defined(PREFIX)
50 PREFIX = c:\Program Files
51 !endif
52 INSTDIR = $(PREFIX)\intel-ipsec-mb
53
54 LIBBASE = libIPSec_MB
55 !if "$(SHARED)" == "y"
56 LIBNAME = $(LIBBASE).dll
57 !else
58 LIBNAME = $(LIBBASE).lib
59 !endif
60 OBJ_DIR = obj
61
62 !ifdef DEBUG
63 OPT = /Od
64 DCFLAGS = /DDEBUG /Z7
65 DAFLAGS = -gcv8
66 DLFLAGS = /DEBUG
67 !else
68 OPT = /O2 /Oi
69 DCFLAGS =
70 DAFLAGS =
71 DLFLAGS = /RELEASE
72 !endif
73
74 !if "$(SAFE_DATA)" == "y"
75 DCFLAGS = $(DCFLAGS) /DSAFE_DATA
76 DAFLAGS = $(DAFLAGS) -DSAFE_DATA
77 !endif
78
79 !if "$(SAFE_PARAM)" == "y"
80 DCFLAGS = $(DCFLAGS) /DSAFE_PARAM
81 DAFLAGS = $(DAFLAGS) -DSAFE_PARAM
82 !endif
83
84 !if "$(SAFE_LOOKUP)" != "n"
85 DCFLAGS = $(DCFLAGS) /DSAFE_LOOKUP
86 DAFLAGS = $(DAFLAGS) -DSAFE_LOOKUP
87 !endif
88
89 !if "$(GCM_BIG_DATA)" == "y"
90 GCM_AFLAGS = -DGCM_BIG_DATA
91 GCM_CFLAGS = /DGCM_BIG_DATA
92 !else
93 GCM_AFLAGS =
94 GCM_CFLAGS =
95 !endif
96
97 CC = cl
98 CFLAGS_ALL = $(EXTRA_CFLAGS) $(GCM_CFLAGS) /I. /Iinclude /Ino-aesni \
99 /nologo /Y- /W3 /WX- /Gm- /fp:precise /EHsc
100
101 CFLAGS = $(CFLAGS_ALL) $(OPT) $(DCFLAGS)
102 CFLAGS_NO_SIMD = $(CFLAGS_ALL) /Od $(DCFLAGS)
103
104 LIB_TOOL = lib
105 LIBFLAGS = /nologo /machine:X64 /nodefaultlib
106
107 LINK_TOOL = link
108 LINKFLAGS = $(DLFLAGS) /nologo /machine:X64
109
110 AS = nasm
111 AFLAGS = $(DAFLAGS) $(GCM_AFLAGS) -fwin64 -Xvc -DWIN_ABI -Iinclude/ \
112 -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/
113
114 # warning messages
115
116 SAFE_PARAM_MSG1=SAFE_PARAM option not set.
117 SAFE_PARAM_MSG2=Input parameters will not be checked.
118 SAFE_DATA_MSG1=SAFE_DATA option not set.
119 SAFE_DATA_MSG2=Stack and registers containing sensitive information, \
120 such keys or IV will not be cleared \
121 at the end of function calls.
122 SAFE_LOOKUP_MSG1=SAFE_LOOKUP option not set.
123 SAFE_LOOKUP_MSG2=Lookups which depend on sensitive information \
124 are not guaranteed to be done in constant time.
125
126 lib_objs1 = \
127 $(OBJ_DIR)\aes128_cbc_dec_by4_sse.obj \
128 $(OBJ_DIR)\aes128_cbc_dec_by4_sse_no_aesni.obj \
129 $(OBJ_DIR)\aes128_cbc_dec_by8_avx.obj \
130 $(OBJ_DIR)\aes_ecb_by4_sse.obj \
131 $(OBJ_DIR)\aes_ecb_by4_sse_no_aesni.obj \
132 $(OBJ_DIR)\aes_ecb_by4_avx.obj \
133 $(OBJ_DIR)\pon_sse.obj \
134 $(OBJ_DIR)\pon_sse_no_aesni.obj \
135 $(OBJ_DIR)\aes128_cntr_by4_sse.obj \
136 $(OBJ_DIR)\aes128_cntr_by4_sse_no_aesni.obj \
137 $(OBJ_DIR)\pon_avx.obj \
138 $(OBJ_DIR)\aes128_cntr_by8_avx.obj \
139 $(OBJ_DIR)\aes128_cntr_ccm_by4_sse.obj \
140 $(OBJ_DIR)\aes128_cntr_ccm_by4_sse_no_aesni.obj \
141 $(OBJ_DIR)\aes128_cntr_ccm_by8_avx.obj \
142 $(OBJ_DIR)\aes128_ecbenc_x3.obj \
143 $(OBJ_DIR)\aes192_cbc_dec_by4_sse.obj \
144 $(OBJ_DIR)\aes192_cbc_dec_by4_sse_no_aesni.obj \
145 $(OBJ_DIR)\aes192_cbc_dec_by8_avx.obj \
146 $(OBJ_DIR)\aes192_cntr_by4_sse.obj \
147 $(OBJ_DIR)\aes192_cntr_by4_sse_no_aesni.obj \
148 $(OBJ_DIR)\aes192_cntr_by8_avx.obj \
149 $(OBJ_DIR)\aes256_cbc_dec_by4_sse.obj \
150 $(OBJ_DIR)\aes256_cbc_dec_by4_sse_no_aesni.obj \
151 $(OBJ_DIR)\aes256_cbc_dec_by8_avx.obj \
152 $(OBJ_DIR)\aes256_cntr_by4_sse.obj \
153 $(OBJ_DIR)\aes256_cntr_by4_sse_no_aesni.obj \
154 $(OBJ_DIR)\aes256_cntr_by8_avx.obj \
155 $(OBJ_DIR)\aes_cfb_128_sse.obj \
156 $(OBJ_DIR)\aes_cfb_128_sse_no_aesni.obj \
157 $(OBJ_DIR)\aes_cfb_128_avx.obj \
158 $(OBJ_DIR)\aes128_cbc_mac_x4.obj \
159 $(OBJ_DIR)\aes128_cbc_mac_x4_no_aesni.obj \
160 $(OBJ_DIR)\aes128_cbc_mac_x8.obj \
161 $(OBJ_DIR)\aes_cbc_enc_128_x4.obj \
162 $(OBJ_DIR)\aes_cbc_enc_128_x4_no_aesni.obj \
163 $(OBJ_DIR)\aes_cbc_enc_128_x8.obj \
164 $(OBJ_DIR)\aes_cbc_enc_192_x4.obj \
165 $(OBJ_DIR)\aes_cbc_enc_192_x4_no_aesni.obj \
166 $(OBJ_DIR)\aes_cbc_enc_192_x8.obj \
167 $(OBJ_DIR)\aes_cbc_enc_256_x4.obj \
168 $(OBJ_DIR)\aes_cbc_enc_256_x4_no_aesni.obj \
169 $(OBJ_DIR)\aes_cbc_enc_256_x8.obj \
170 $(OBJ_DIR)\aes_keyexp_128.obj \
171 $(OBJ_DIR)\aes_keyexp_192.obj \
172 $(OBJ_DIR)\aes_keyexp_256.obj \
173 $(OBJ_DIR)\aes_cmac_subkey_gen.obj \
174 $(OBJ_DIR)\aes_xcbc_mac_128_x4.obj \
175 $(OBJ_DIR)\aes_xcbc_mac_128_x4_no_aesni.obj \
176 $(OBJ_DIR)\aes_xcbc_mac_128_x8.obj \
177 $(OBJ_DIR)\md5_x4x2_avx.obj \
178 $(OBJ_DIR)\md5_x4x2_sse.obj \
179 $(OBJ_DIR)\md5_x8x2_avx2.obj \
180 $(OBJ_DIR)\save_xmms.obj \
181 $(OBJ_DIR)\clear_regs_mem_fns.obj \
182 $(OBJ_DIR)\sha1_mult_avx.obj \
183 $(OBJ_DIR)\sha1_mult_sse.obj \
184 $(OBJ_DIR)\sha1_ni_x2_sse.obj \
185 $(OBJ_DIR)\sha1_one_block_avx.obj \
186 $(OBJ_DIR)\sha1_one_block_sse.obj \
187 $(OBJ_DIR)\sha1_x8_avx2.obj \
188 $(OBJ_DIR)\sha1_x16_avx512.obj \
189 $(OBJ_DIR)\sha224_one_block_avx.obj \
190 $(OBJ_DIR)\sha224_one_block_sse.obj \
191 $(OBJ_DIR)\sha256_oct_avx2.obj \
192 $(OBJ_DIR)\sha256_one_block_avx.obj \
193 $(OBJ_DIR)\sha256_one_block_sse.obj \
194 $(OBJ_DIR)\sha256_ni_x2_sse.obj \
195 $(OBJ_DIR)\sha256_x16_avx512.obj \
196 $(OBJ_DIR)\sha384_one_block_avx.obj \
197 $(OBJ_DIR)\sha384_one_block_sse.obj \
198 $(OBJ_DIR)\sha512_one_block_avx.obj \
199 $(OBJ_DIR)\sha512_one_block_sse.obj \
200 $(OBJ_DIR)\sha512_x2_avx.obj \
201 $(OBJ_DIR)\sha512_x2_sse.obj \
202 $(OBJ_DIR)\sha512_x4_avx2.obj \
203 $(OBJ_DIR)\sha512_x8_avx512.obj \
204 $(OBJ_DIR)\sha_256_mult_avx.obj \
205 $(OBJ_DIR)\sha_256_mult_sse.obj \
206 $(OBJ_DIR)\kasumi_avx.obj \
207 $(OBJ_DIR)\kasumi_iv.obj \
208 $(OBJ_DIR)\kasumi_sse.obj \
209 $(OBJ_DIR)\zuc_common.obj \
210 $(OBJ_DIR)\zuc_sse_top.obj \
211 $(OBJ_DIR)\zuc_avx_top.obj \
212 $(OBJ_DIR)\zuc_sse.obj \
213 $(OBJ_DIR)\zuc_avx.obj \
214 $(OBJ_DIR)\zuc_iv.obj \
215 $(OBJ_DIR)\snow3g_sse.obj \
216 $(OBJ_DIR)\snow3g_sse_no_aesni.obj \
217 $(OBJ_DIR)\snow3g_avx.obj \
218 $(OBJ_DIR)\snow3g_avx2.obj \
219 $(OBJ_DIR)\snow3g_tables.obj \
220 $(OBJ_DIR)\snow3g_iv.obj \
221 $(OBJ_DIR)\aes_xcbc_expand_key.obj \
222 $(OBJ_DIR)\md5_one_block.obj \
223 $(OBJ_DIR)\sha_one_block.obj \
224 $(OBJ_DIR)\des_key.obj \
225 $(OBJ_DIR)\des_basic.obj \
226 $(OBJ_DIR)\des_x16_avx512.obj \
227 $(OBJ_DIR)\cntr_vaes_avx512.obj \
228 $(OBJ_DIR)\aes_cbc_dec_vaes_avx512.obj \
229 $(OBJ_DIR)\aes_cbc_enc_vaes_avx512.obj \
230 $(OBJ_DIR)\mb_mgr_aes_submit_avx512.obj \
231 $(OBJ_DIR)\mb_mgr_aes_flush_avx512.obj \
232 $(OBJ_DIR)\mb_mgr_aes192_submit_avx512.obj \
233 $(OBJ_DIR)\mb_mgr_aes192_flush_avx512.obj \
234 $(OBJ_DIR)\mb_mgr_aes256_submit_avx512.obj \
235 $(OBJ_DIR)\mb_mgr_aes256_flush_avx512.obj \
236 $(OBJ_DIR)\const.obj \
237 $(OBJ_DIR)\wireless_common.obj \
238 $(OBJ_DIR)\constant_lookup.obj
239
240 lib_objs2 = \
241 $(OBJ_DIR)\mb_mgr_aes192_flush_avx.obj \
242 $(OBJ_DIR)\mb_mgr_aes192_flush_sse.obj \
243 $(OBJ_DIR)\mb_mgr_aes192_flush_sse_no_aesni.obj \
244 $(OBJ_DIR)\mb_mgr_aes192_submit_avx.obj \
245 $(OBJ_DIR)\mb_mgr_aes192_submit_sse.obj \
246 $(OBJ_DIR)\mb_mgr_aes192_submit_sse_no_aesni.obj \
247 $(OBJ_DIR)\mb_mgr_aes256_flush_avx.obj \
248 $(OBJ_DIR)\mb_mgr_aes256_flush_sse.obj \
249 $(OBJ_DIR)\mb_mgr_aes256_flush_sse_no_aesni.obj \
250 $(OBJ_DIR)\mb_mgr_aes256_submit_avx.obj \
251 $(OBJ_DIR)\mb_mgr_aes256_submit_sse.obj \
252 $(OBJ_DIR)\mb_mgr_aes256_submit_sse_no_aesni.obj \
253 $(OBJ_DIR)\mb_mgr_aes_flush_avx.obj \
254 $(OBJ_DIR)\mb_mgr_aes_flush_sse.obj \
255 $(OBJ_DIR)\mb_mgr_aes_flush_sse_no_aesni.obj \
256 $(OBJ_DIR)\mb_mgr_aes_submit_avx.obj \
257 $(OBJ_DIR)\mb_mgr_aes_submit_sse.obj \
258 $(OBJ_DIR)\mb_mgr_aes_submit_sse_no_aesni.obj \
259 $(OBJ_DIR)\mb_mgr_aes_cmac_submit_flush_sse.obj \
260 $(OBJ_DIR)\mb_mgr_aes_cmac_submit_flush_sse_no_aesni.obj \
261 $(OBJ_DIR)\mb_mgr_aes_cmac_submit_flush_avx.obj \
262 $(OBJ_DIR)\mb_mgr_aes_ccm_auth_submit_flush_sse.obj \
263 $(OBJ_DIR)\mb_mgr_aes_ccm_auth_submit_flush_sse_no_aesni.obj \
264 $(OBJ_DIR)\mb_mgr_aes_ccm_auth_submit_flush_avx.obj \
265 $(OBJ_DIR)\mb_mgr_aes_xcbc_flush_avx.obj \
266 $(OBJ_DIR)\mb_mgr_aes_xcbc_flush_sse.obj \
267 $(OBJ_DIR)\mb_mgr_aes_xcbc_flush_sse_no_aesni.obj \
268 $(OBJ_DIR)\mb_mgr_aes_xcbc_submit_avx.obj \
269 $(OBJ_DIR)\mb_mgr_aes_xcbc_submit_sse.obj \
270 $(OBJ_DIR)\mb_mgr_aes_xcbc_submit_sse_no_aesni.obj \
271 $(OBJ_DIR)\mb_mgr_hmac_flush_avx.obj \
272 $(OBJ_DIR)\mb_mgr_hmac_flush_avx2.obj \
273 $(OBJ_DIR)\mb_mgr_hmac_flush_sse.obj \
274 $(OBJ_DIR)\mb_mgr_hmac_flush_ni_sse.obj \
275 $(OBJ_DIR)\mb_mgr_hmac_flush_avx512.obj \
276 $(OBJ_DIR)\mb_mgr_hmac_md5_flush_avx.obj \
277 $(OBJ_DIR)\mb_mgr_hmac_md5_flush_avx2.obj \
278 $(OBJ_DIR)\mb_mgr_hmac_md5_flush_sse.obj \
279 $(OBJ_DIR)\mb_mgr_hmac_md5_submit_avx.obj \
280 $(OBJ_DIR)\mb_mgr_hmac_md5_submit_avx2.obj \
281 $(OBJ_DIR)\mb_mgr_hmac_md5_submit_sse.obj \
282 $(OBJ_DIR)\mb_mgr_hmac_sha_224_flush_avx.obj \
283 $(OBJ_DIR)\mb_mgr_hmac_sha_224_flush_avx2.obj \
284 $(OBJ_DIR)\mb_mgr_hmac_sha_224_flush_avx512.obj \
285 $(OBJ_DIR)\mb_mgr_hmac_sha_224_flush_sse.obj \
286 $(OBJ_DIR)\mb_mgr_hmac_sha_224_flush_ni_sse.obj \
287 $(OBJ_DIR)\mb_mgr_hmac_sha_224_submit_avx.obj \
288 $(OBJ_DIR)\mb_mgr_hmac_sha_224_submit_avx2.obj \
289 $(OBJ_DIR)\mb_mgr_hmac_sha_224_submit_avx512.obj \
290 $(OBJ_DIR)\mb_mgr_hmac_sha_224_submit_sse.obj \
291 $(OBJ_DIR)\mb_mgr_hmac_sha_224_submit_ni_sse.obj \
292 $(OBJ_DIR)\mb_mgr_hmac_sha_256_flush_avx.obj \
293 $(OBJ_DIR)\mb_mgr_hmac_sha_256_flush_avx2.obj \
294 $(OBJ_DIR)\mb_mgr_hmac_sha_256_flush_avx512.obj \
295 $(OBJ_DIR)\mb_mgr_hmac_sha_256_flush_sse.obj \
296 $(OBJ_DIR)\mb_mgr_hmac_sha_256_flush_ni_sse.obj \
297 $(OBJ_DIR)\mb_mgr_hmac_sha_256_submit_avx.obj \
298 $(OBJ_DIR)\mb_mgr_hmac_sha_256_submit_avx2.obj \
299 $(OBJ_DIR)\mb_mgr_hmac_sha_256_submit_avx512.obj \
300 $(OBJ_DIR)\mb_mgr_hmac_sha_256_submit_sse.obj \
301 $(OBJ_DIR)\mb_mgr_hmac_sha_256_submit_ni_sse.obj \
302 $(OBJ_DIR)\mb_mgr_hmac_sha_384_flush_avx.obj \
303 $(OBJ_DIR)\mb_mgr_hmac_sha_384_flush_avx2.obj \
304 $(OBJ_DIR)\mb_mgr_hmac_sha_384_flush_avx512.obj \
305 $(OBJ_DIR)\mb_mgr_hmac_sha_384_flush_sse.obj \
306 $(OBJ_DIR)\mb_mgr_hmac_sha_384_submit_avx.obj \
307 $(OBJ_DIR)\mb_mgr_hmac_sha_384_submit_avx2.obj \
308 $(OBJ_DIR)\mb_mgr_hmac_sha_384_submit_avx512.obj \
309 $(OBJ_DIR)\mb_mgr_hmac_sha_384_submit_sse.obj \
310 $(OBJ_DIR)\mb_mgr_hmac_sha_512_flush_avx.obj \
311 $(OBJ_DIR)\mb_mgr_hmac_sha_512_flush_avx2.obj \
312 $(OBJ_DIR)\mb_mgr_hmac_sha_512_flush_avx512.obj \
313 $(OBJ_DIR)\mb_mgr_hmac_sha_512_flush_sse.obj \
314 $(OBJ_DIR)\mb_mgr_hmac_sha_512_submit_avx.obj \
315 $(OBJ_DIR)\mb_mgr_hmac_sha_512_submit_avx2.obj \
316 $(OBJ_DIR)\mb_mgr_hmac_sha_512_submit_avx512.obj \
317 $(OBJ_DIR)\mb_mgr_hmac_sha_512_submit_sse.obj \
318 $(OBJ_DIR)\mb_mgr_hmac_submit_avx.obj \
319 $(OBJ_DIR)\mb_mgr_hmac_submit_avx2.obj \
320 $(OBJ_DIR)\mb_mgr_hmac_submit_sse.obj \
321 $(OBJ_DIR)\mb_mgr_hmac_submit_ni_sse.obj \
322 $(OBJ_DIR)\mb_mgr_hmac_submit_avx512.obj \
323 $(OBJ_DIR)\mb_mgr_avx.obj \
324 $(OBJ_DIR)\mb_mgr_avx2.obj \
325 $(OBJ_DIR)\mb_mgr_avx512.obj \
326 $(OBJ_DIR)\mb_mgr_des_avx512.obj \
327 $(OBJ_DIR)\mb_mgr_sse.obj \
328 $(OBJ_DIR)\mb_mgr_sse_no_aesni.obj \
329 $(OBJ_DIR)\alloc.obj \
330 $(OBJ_DIR)\version.obj \
331 $(OBJ_DIR)\cpu_feature.obj \
332 $(OBJ_DIR)\aesni_emu.obj
333
334 gcm_objs = \
335 $(OBJ_DIR)\gcm.obj \
336 $(OBJ_DIR)\gcm128_sse.obj \
337 $(OBJ_DIR)\gcm128_avx_gen2.obj \
338 $(OBJ_DIR)\gcm128_avx_gen4.obj \
339 $(OBJ_DIR)\gcm128_avx512.obj \
340 $(OBJ_DIR)\gcm128_vaes_avx512.obj \
341 $(OBJ_DIR)\gcm192_sse.obj \
342 $(OBJ_DIR)\gcm192_avx_gen2.obj \
343 $(OBJ_DIR)\gcm192_avx_gen4.obj \
344 $(OBJ_DIR)\gcm192_avx512.obj \
345 $(OBJ_DIR)\gcm192_vaes_avx512.obj \
346 $(OBJ_DIR)\gcm256_sse.obj \
347 $(OBJ_DIR)\gcm256_avx_gen2.obj \
348 $(OBJ_DIR)\gcm256_avx_gen4.obj \
349 $(OBJ_DIR)\gcm256_avx512.obj \
350 $(OBJ_DIR)\gcm256_vaes_avx512.obj \
351 $(OBJ_DIR)\gcm128_sse_no_aesni.obj \
352 $(OBJ_DIR)\gcm192_sse_no_aesni.obj \
353 $(OBJ_DIR)\gcm256_sse_no_aesni.obj
354
355 !ifdef NO_GCM
356 all_objs = $(lib_objs1) $(lib_objs2)
357 CFLAGS = $(CFLAGS) -DNO_GCM
358 !else
359 all_objs = $(lib_objs1) $(lib_objs2) $(gcm_objs)
360 !endif
361
362 all: $(LIBNAME)
363
364 $(LIBNAME): $(all_objs)
365 !if "$(SHARED)" == "y"
366 $(LINK_TOOL) $(LINKFLAGS) /DLL /DEF:libIPSec_MB.def /OUT:$@ $(all_objs)
367 !else
368 $(LIB_TOOL) $(LIBFLAGS) /out:$@ $(all_objs)
369 !endif
370 !if "$(SAFE_PARAM)" != "y"
371 @echo NOTE: $(SAFE_PARAM_MSG1) $(SAFE_PARAM_MSG2)
372 !endif
373 !if "$(SAFE_DATA)" != "y"
374 @echo NOTE: $(SAFE_DATA_MSG1) $(SAFE_DATA_MSG2)
375 !endif
376
377 !if "$(SAFE_LOOKUP)" == "n"
378 @echo NOTE: $(SAFE_LOOKUP_MSG1) $(SAFE_LOOKUP_MSG2)
379 !endif
380
381 $(all_objs): $(OBJ_DIR)
382
383 {.\}.c{$(OBJ_DIR)}.obj:
384 $(CC) /Fo$@ /c $(CFLAGS) $<
385
386 {.\}.asm{$(OBJ_DIR)}.obj:
387 $(AS) -o $@ $(AFLAGS) $<
388
389 {sse\}.c{$(OBJ_DIR)}.obj:
390 $(CC) /Fo$@ /c $(CFLAGS) $<
391
392 {sse\}.asm{$(OBJ_DIR)}.obj:
393 $(AS) -o $@ $(AFLAGS) $<
394
395 {avx\}.c{$(OBJ_DIR)}.obj:
396 $(CC) /arch:AVX /Fo$@ /c $(CFLAGS) $<
397
398 {avx\}.asm{$(OBJ_DIR)}.obj:
399 $(AS) -o $@ $(AFLAGS) $<
400
401 {avx2\}.c{$(OBJ_DIR)}.obj:
402 $(CC) /arch:AVX /Fo$@ /c $(CFLAGS) $<
403
404 {avx2\}.asm{$(OBJ_DIR)}.obj:
405 $(AS) -o $@ $(AFLAGS) $<
406
407 {avx512\}.c{$(OBJ_DIR)}.obj:
408 $(CC) /arch:AVX /Fo$@ /c $(CFLAGS) $<
409
410 {avx512\}.asm{$(OBJ_DIR)}.obj:
411 $(AS) -o $@ $(AFLAGS) $<
412
413 {no-aesni\}.c{$(OBJ_DIR)}.obj:
414 $(CC) /Fo$@ /c $(CFLAGS_NO_SIMD) $<
415
416 {no-aesni\}.asm{$(OBJ_DIR)}.obj:
417 $(AS) -o $@ $(AFLAGS) $<
418
419 {include\}.asm{$(OBJ_DIR)}.obj:
420 $(AS) -o $@ $(AFLAGS) $<
421
422 $(OBJ_DIR):
423 mkdir $(OBJ_DIR)
424
425 help:
426 @echo "Available build options:"
427 @echo "DEBUG=n (default)"
428 @echo " - this option will produce library not fit for debugging"
429 @echo "SHARED=y (default)"
430 @echo " - this option will produce shared library"
431 @echo "DEBUG=y - this option will produce library fit for debugging"
432 @echo "SHARED=n - this option will produce static library"
433 @echo "SAFE_DATA=n (default)"
434 @echo " - Sensitive data not cleared from registers and memory"
435 @echo " at operation end"
436 @echo "SAFE_DATA=y"
437 @echo " - Sensitive data cleared from registers and memory"
438 @echo " at operation end"
439 @echo "SAFE_PARAM=n (default)"
440 @echo " - API input parameters not checked"
441 @echo "SAFE_PARAM=y"
442 @echo " - API input parameters checked"
443 @echo "SAFE_LOOKUP=n"
444 @echo " - Lookups depending on sensitive data might not be constant time"
445 @echo "SAFE_LOOKUP=y (default)"
446 @echo " - Lookups depending on sensitive data are constant time"
447 @echo "GCM_BIG_DATA=n (default)"
448 @echo " - Smaller AVX512VAES GCM key structure with"
449 @echo " good performance level for buffers sizes below 2K."
450 @echo " - 8 ghash keys used on SSE, AVX, AVX2 and AVX512."
451 @echo " - 48 ghash keys used on AVX512VAES and AVX512VPCLMULQDQ."
452 @echo "GCM_BIG_DATA=y"
453 @echo " - Better performing AVX512VAES GCM on big buffers that"
454 @echo " uses more ghash keys, 128 instead of 48."
455 @echo " - This option results in a much bigger gcm_key structure, more than 2K."
456 @echo " - Performance improvement takes effect only on platforms with"
457 @echo " AVX512VAES and AVX512VPCLMULQDQ."
458
459 clean:
460 -del /q $(lib_objs1)
461 -del /q $(lib_objs2)
462 -del /q $(gcm_objs)
463 -del /q $(LIBNAME).*
464
465 install:
466 -md "$(INSTDIR)"
467 -copy /Y /V /A $(LIBBASE).def "$(INSTDIR)"
468 -copy /Y /V /B $(LIBBASE).exp "$(INSTDIR)"
469 -copy /Y /V /B $(LIBBASE).lib "$(INSTDIR)"
470 -copy /Y /V /A intel-ipsec-mb.h "$(INSTDIR)"
471 !if "$(SHARED)" == "y"
472 -copy /Y /V /B $(LIBBASE).dll "$(INSTDIR)"
473 -copy /Y /V /B $(LIBBASE).dll "%windir%\system32"
474 !endif
475
476 uninstall:
477 !if "$(SHARED)" == "y"
478 -del /Q "%windir%\system32\$(LIBBASE).dll"
479 -del /Q "$(INSTDIR)\$(LIBBASE).dll"
480 !endif
481 -del /Q "$(INSTDIR)\$(LIBBASE).def"
482 -del /Q "$(INSTDIR)\$(LIBBASE).exp"
483 -del /Q "$(INSTDIR)\$(LIBBASE).lib"
484 -del /Q "$(INSTDIR)\intel-ipsec-mb.h"
485 -rd "$(INSTDIR)"