2 # Copyright (c) 2017-2019, Intel Corporation
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are met:
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.
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.
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)
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)
46 # Available installation options:
47 # PREFIX=<path> - path to install the library (c:\program files\ is default)
50 PREFIX
= c
:\Program Files
52 INSTDIR
= $(PREFIX
)\intel-ipsec-mb
55 !if
"$(SHARED)" == "y"
56 LIBNAME
= $(LIBBASE
).dll
58 LIBNAME
= $(LIBBASE
).lib
74 !if
"$(SAFE_DATA)" == "y"
75 DCFLAGS
= $(DCFLAGS
) /DSAFE_DATA
76 DAFLAGS
= $(DAFLAGS
) -DSAFE_DATA
79 !if
"$(SAFE_PARAM)" == "y"
80 DCFLAGS
= $(DCFLAGS
) /DSAFE_PARAM
81 DAFLAGS
= $(DAFLAGS
) -DSAFE_PARAM
84 !if
"$(SAFE_LOOKUP)" != "n"
85 DCFLAGS
= $(DCFLAGS
) /DSAFE_LOOKUP
86 DAFLAGS
= $(DAFLAGS
) -DSAFE_LOOKUP
89 !if
"$(GCM_BIG_DATA)" == "y"
90 GCM_AFLAGS
= -DGCM_BIG_DATA
91 GCM_CFLAGS
= /DGCM_BIG_DATA
98 CFLAGS_ALL
= $(EXTRA_CFLAGS
) $(GCM_CFLAGS
) /I.
/Iinclude
/Ino-aesni \
99 /nologo
/Y-
/W3
/WX-
/Gm-
/fp
:precise
/EHsc
101 CFLAGS
= $(CFLAGS_ALL
) $(OPT
) $(DCFLAGS
)
102 CFLAGS_NO_SIMD
= $(CFLAGS_ALL
) /Od
$(DCFLAGS
)
105 LIBFLAGS
= /nologo
/machine
:X64
/nodefaultlib
108 LINKFLAGS
= $(DLFLAGS
) /nologo
/machine
:X64
111 AFLAGS
= $(DAFLAGS
) $(GCM_AFLAGS
) -fwin64
-Xvc
-DWIN_ABI
-Iinclude
/ \
112 -I.
/ -Iavx
/ -Iavx2
/ -Iavx512
/ -Isse
/
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.
127 $(OBJ_DIR
)\aes
128_cbc_dec_by
4_sse.obj \
128 $(OBJ_DIR
)\aes
128_cbc_dec_by
4_sse_no_aesni.obj \
129 $(OBJ_DIR
)\aes
128_cbc_dec_by
8_avx.obj \
130 $(OBJ_DIR
)\aes_ecb_by
4_sse.obj \
131 $(OBJ_DIR
)\aes_ecb_by
4_sse_no_aesni.obj \
132 $(OBJ_DIR
)\aes_ecb_by
4_avx.obj \
133 $(OBJ_DIR
)\pon_sse.obj \
134 $(OBJ_DIR
)\pon_sse_no_aesni.obj \
135 $(OBJ_DIR
)\aes
128_cntr_by
4_sse.obj \
136 $(OBJ_DIR
)\aes
128_cntr_by
4_sse_no_aesni.obj \
137 $(OBJ_DIR
)\pon_avx.obj \
138 $(OBJ_DIR
)\aes
128_cntr_by
8_avx.obj \
139 $(OBJ_DIR
)\aes
128_cntr_ccm_by
4_sse.obj \
140 $(OBJ_DIR
)\aes
128_cntr_ccm_by
4_sse_no_aesni.obj \
141 $(OBJ_DIR
)\aes
128_cntr_ccm_by
8_avx.obj \
142 $(OBJ_DIR
)\aes
128_ecbenc_x
3.obj \
143 $(OBJ_DIR
)\aes
192_cbc_dec_by
4_sse.obj \
144 $(OBJ_DIR
)\aes
192_cbc_dec_by
4_sse_no_aesni.obj \
145 $(OBJ_DIR
)\aes
192_cbc_dec_by
8_avx.obj \
146 $(OBJ_DIR
)\aes
192_cntr_by
4_sse.obj \
147 $(OBJ_DIR
)\aes
192_cntr_by
4_sse_no_aesni.obj \
148 $(OBJ_DIR
)\aes
192_cntr_by
8_avx.obj \
149 $(OBJ_DIR
)\aes
256_cbc_dec_by
4_sse.obj \
150 $(OBJ_DIR
)\aes
256_cbc_dec_by
4_sse_no_aesni.obj \
151 $(OBJ_DIR
)\aes
256_cbc_dec_by
8_avx.obj \
152 $(OBJ_DIR
)\aes
256_cntr_by
4_sse.obj \
153 $(OBJ_DIR
)\aes
256_cntr_by
4_sse_no_aesni.obj \
154 $(OBJ_DIR
)\aes
256_cntr_by
8_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
)\aes
128_cbc_mac_x
4.obj \
159 $(OBJ_DIR
)\aes
128_cbc_mac_x
4_no_aesni.obj \
160 $(OBJ_DIR
)\aes
128_cbc_mac_x
8.obj \
161 $(OBJ_DIR
)\aes_cbc_enc_
128_x
4.obj \
162 $(OBJ_DIR
)\aes_cbc_enc_
128_x
4_no_aesni.obj \
163 $(OBJ_DIR
)\aes_cbc_enc_
128_x
8.obj \
164 $(OBJ_DIR
)\aes_cbc_enc_
192_x
4.obj \
165 $(OBJ_DIR
)\aes_cbc_enc_
192_x
4_no_aesni.obj \
166 $(OBJ_DIR
)\aes_cbc_enc_
192_x
8.obj \
167 $(OBJ_DIR
)\aes_cbc_enc_
256_x
4.obj \
168 $(OBJ_DIR
)\aes_cbc_enc_
256_x
4_no_aesni.obj \
169 $(OBJ_DIR
)\aes_cbc_enc_
256_x
8.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_x
4.obj \
175 $(OBJ_DIR
)\aes_xcbc_mac_
128_x
4_no_aesni.obj \
176 $(OBJ_DIR
)\aes_xcbc_mac_
128_x
8.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_avx
512.obj \
229 $(OBJ_DIR
)\aes_cbc_enc_vaes_avx
512.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
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
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
356 all_objs
= $(lib_objs1
) $(lib_objs2
)
357 CFLAGS
= $(CFLAGS
) -DNO_GCM
359 all_objs
= $(lib_objs1
) $(lib_objs2
) $(gcm_objs
)
364 $(LIBNAME
): $(all_objs
)
365 !if
"$(SHARED)" == "y"
366 $(LINK_TOOL
) $(LINKFLAGS
) /DLL
/DEF
:libIPSec_MB.def
/OUT
:$@
$(all_objs
)
368 $(LIB_TOOL
) $(LIBFLAGS
) /out
:$@
$(all_objs
)
370 !if
"$(SAFE_PARAM)" != "y"
371 @echo NOTE
: $(SAFE_PARAM_MSG1
) $(SAFE_PARAM_MSG2
)
373 !if
"$(SAFE_DATA)" != "y"
374 @echo NOTE
: $(SAFE_DATA_MSG1
) $(SAFE_DATA_MSG2
)
377 !if
"$(SAFE_LOOKUP)" == "n"
378 @echo NOTE
: $(SAFE_LOOKUP_MSG1
) $(SAFE_LOOKUP_MSG2
)
381 $(all_objs
): $(OBJ_DIR
)
383 {.\
}.c
{$(OBJ_DIR
)}.obj
:
384 $(CC
) /Fo
$@
/c
$(CFLAGS
) $<
386 {.\
}.asm
{$(OBJ_DIR
)}.obj
:
387 $(AS
) -o
$@
$(AFLAGS
) $<
389 {sse\
}.c
{$(OBJ_DIR
)}.obj
:
390 $(CC
) /Fo
$@
/c
$(CFLAGS
) $<
392 {sse\
}.asm
{$(OBJ_DIR
)}.obj
:
393 $(AS
) -o
$@
$(AFLAGS
) $<
395 {avx\
}.c
{$(OBJ_DIR
)}.obj
:
396 $(CC
) /arch
:AVX
/Fo
$@
/c
$(CFLAGS
) $<
398 {avx\
}.asm
{$(OBJ_DIR
)}.obj
:
399 $(AS
) -o
$@
$(AFLAGS
) $<
401 {avx2\
}.c
{$(OBJ_DIR
)}.obj
:
402 $(CC
) /arch
:AVX
/Fo
$@
/c
$(CFLAGS
) $<
404 {avx2\
}.asm
{$(OBJ_DIR
)}.obj
:
405 $(AS
) -o
$@
$(AFLAGS
) $<
407 {avx512\
}.c
{$(OBJ_DIR
)}.obj
:
408 $(CC
) /arch
:AVX
/Fo
$@
/c
$(CFLAGS
) $<
410 {avx512\
}.asm
{$(OBJ_DIR
)}.obj
:
411 $(AS
) -o
$@
$(AFLAGS
) $<
413 {no-aesni\
}.c
{$(OBJ_DIR
)}.obj
:
414 $(CC
) /Fo
$@
/c
$(CFLAGS_NO_SIMD
) $<
416 {no-aesni\
}.asm
{$(OBJ_DIR
)}.obj
:
417 $(AS
) -o
$@
$(AFLAGS
) $<
419 {include\
}.asm
{$(OBJ_DIR
)}.obj
:
420 $(AS
) -o
$@
$(AFLAGS
) $<
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"
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"
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."
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"
477 !if
"$(SHARED)" == "y"
478 -del
/Q
"%windir%\system32\$(LIBBASE).dll"
479 -del
/Q
"$(INSTDIR)\$(LIBBASE).dll"
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"