!endif\r
OBJ_DIR = obj\r
\r
-\r
!ifdef DEBUG\r
-DCFLAGS = /Od /DDEBUG /Z7\r
+OPT = /Od\r
+DCFLAGS = /DDEBUG /Z7\r
DAFLAGS = -gcv8\r
DLFLAGS = /DEBUG\r
!else\r
-DCFLAGS = /O2 /Oi\r
+OPT = /O2 /Oi\r
+DCFLAGS =\r
DAFLAGS =\r
DLFLAGS = /RELEASE\r
!endif\r
\r
CC = cl\r
-CFLAGS = $(EXTRA_CFLAGS) $(DCFLAGS) /I. /Iinclude \\r
+CFLAGS_ALL = $(EXTRA_CFLAGS) /I. /Iinclude /Ino-aesni \\r
/nologo /Y- /W3 /WX- /Gm- /fp:precise /EHsc\r
\r
+CFLAGS = $(CFLAGS_ALL) $(OPT) $(DCFLAGS)\r
+CFLAGS_NO_SIMD = $(CFLAGS_ALL) /Od $(DCFLAGS)\r
+\r
LIB_TOOL = lib\r
LIBFLAGS = /nologo /machine:X64 /nodefaultlib\r
\r
\r
lib_objs1 = \\r
$(OBJ_DIR)\aes128_cbc_dec_by4_sse.obj \\r
+ $(OBJ_DIR)\aes128_cbc_dec_by4_sse_no_aesni.obj \\r
$(OBJ_DIR)\aes128_cbc_dec_by8_avx.obj \\r
$(OBJ_DIR)\aes128_cntr_by4_sse.obj \\r
+ $(OBJ_DIR)\aes128_cntr_by4_sse_no_aesni.obj \\r
$(OBJ_DIR)\aes128_cntr_by8_avx.obj \\r
$(OBJ_DIR)\aes128_ecbenc_x3.obj \\r
$(OBJ_DIR)\aes192_cbc_dec_by4_sse.obj \\r
+ $(OBJ_DIR)\aes192_cbc_dec_by4_sse_no_aesni.obj \\r
$(OBJ_DIR)\aes192_cbc_dec_by8_avx.obj \\r
$(OBJ_DIR)\aes192_cntr_by4_sse.obj \\r
+ $(OBJ_DIR)\aes192_cntr_by4_sse_no_aesni.obj \\r
$(OBJ_DIR)\aes192_cntr_by8_avx.obj \\r
$(OBJ_DIR)\aes256_cbc_dec_by4_sse.obj \\r
+ $(OBJ_DIR)\aes256_cbc_dec_by4_sse_no_aesni.obj \\r
$(OBJ_DIR)\aes256_cbc_dec_by8_avx.obj \\r
$(OBJ_DIR)\aes256_cntr_by4_sse.obj \\r
+ $(OBJ_DIR)\aes256_cntr_by4_sse_no_aesni.obj \\r
$(OBJ_DIR)\aes256_cntr_by8_avx.obj \\r
$(OBJ_DIR)\aes_cfb_128_sse.obj \\r
+ $(OBJ_DIR)\aes_cfb_128_sse_no_aesni.obj \\r
$(OBJ_DIR)\aes_cfb_128_avx.obj \\r
$(OBJ_DIR)\aes128_cbc_mac_x4.obj \\r
+ $(OBJ_DIR)\aes128_cbc_mac_x4_no_aesni.obj \\r
$(OBJ_DIR)\aes128_cbc_mac_x8.obj \\r
$(OBJ_DIR)\aes_cbc_enc_128_x4.obj \\r
+ $(OBJ_DIR)\aes_cbc_enc_128_x4_no_aesni.obj \\r
$(OBJ_DIR)\aes_cbc_enc_128_x8.obj \\r
$(OBJ_DIR)\aes_cbc_enc_192_x4.obj \\r
+ $(OBJ_DIR)\aes_cbc_enc_192_x4_no_aesni.obj \\r
$(OBJ_DIR)\aes_cbc_enc_192_x8.obj \\r
$(OBJ_DIR)\aes_cbc_enc_256_x4.obj \\r
+ $(OBJ_DIR)\aes_cbc_enc_256_x4_no_aesni.obj \\r
$(OBJ_DIR)\aes_cbc_enc_256_x8.obj \\r
$(OBJ_DIR)\aes_keyexp_128.obj \\r
$(OBJ_DIR)\aes_keyexp_192.obj \\r
$(OBJ_DIR)\aes_keyexp_256.obj \\r
$(OBJ_DIR)\aes_cmac_subkey_gen.obj \\r
$(OBJ_DIR)\aes_xcbc_mac_128_x4.obj \\r
+ $(OBJ_DIR)\aes_xcbc_mac_128_x4_no_aesni.obj \\r
$(OBJ_DIR)\aes_xcbc_mac_128_x8.obj \\r
$(OBJ_DIR)\md5_x4x2_avx.obj \\r
$(OBJ_DIR)\md5_x4x2_sse.obj \\r
$(OBJ_DIR)\sha_256_mult_sse.obj \\r
$(OBJ_DIR)\aes_xcbc_expand_key.obj \\r
$(OBJ_DIR)\md5_one_block.obj \\r
+ $(OBJ_DIR)\sha_one_block.obj \\r
$(OBJ_DIR)\des_key.obj \\r
$(OBJ_DIR)\des_basic.obj \\r
- $(OBJ_DIR)\des_x16_avx512.obj\r
+ $(OBJ_DIR)\des_x16_avx512.obj \\r
+ $(OBJ_DIR)\const.obj\r
\r
lib_objs2 = \\r
$(OBJ_DIR)\mb_mgr_aes192_flush_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes192_flush_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes192_flush_sse_no_aesni.obj \\r
$(OBJ_DIR)\mb_mgr_aes192_submit_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes192_submit_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes192_submit_sse_no_aesni.obj \\r
$(OBJ_DIR)\mb_mgr_aes256_flush_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes256_flush_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes256_flush_sse_no_aesni.obj \\r
$(OBJ_DIR)\mb_mgr_aes256_submit_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes256_submit_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes256_submit_sse_no_aesni.obj \\r
$(OBJ_DIR)\mb_mgr_aes_flush_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes_flush_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes_flush_sse_no_aesni.obj \\r
$(OBJ_DIR)\mb_mgr_aes_submit_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes_submit_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes_submit_sse_no_aesni.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes_cmac_submit_flush_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes_cmac_submit_flush_sse_no_aesni.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes_cmac_submit_flush_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes_xcbc_flush_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes_xcbc_flush_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes_xcbc_flush_sse_no_aesni.obj \\r
$(OBJ_DIR)\mb_mgr_aes_xcbc_submit_avx.obj \\r
$(OBJ_DIR)\mb_mgr_aes_xcbc_submit_sse.obj \\r
+ $(OBJ_DIR)\mb_mgr_aes_xcbc_submit_sse_no_aesni.obj \\r
$(OBJ_DIR)\mb_mgr_hmac_flush_avx.obj \\r
$(OBJ_DIR)\mb_mgr_hmac_flush_avx2.obj \\r
$(OBJ_DIR)\mb_mgr_hmac_flush_sse.obj \\r
$(OBJ_DIR)\mb_mgr_avx512.obj \\r
$(OBJ_DIR)\mb_mgr_des_avx512.obj \\r
$(OBJ_DIR)\mb_mgr_sse.obj \\r
- $(OBJ_DIR)\alloc.obj\r
+ $(OBJ_DIR)\mb_mgr_sse_no_aesni.obj \\r
+ $(OBJ_DIR)\alloc.obj \\r
+ $(OBJ_DIR)\version.obj \\r
+ $(OBJ_DIR)\cpu_feature.obj \\r
+ $(OBJ_DIR)\aesni_emu.obj\r
\r
gcm_objs = \\r
+ $(OBJ_DIR)\gcm.obj \\r
$(OBJ_DIR)\gcm128_sse.obj \\r
$(OBJ_DIR)\gcm128_avx_gen2.obj \\r
$(OBJ_DIR)\gcm128_avx_gen4.obj \\r
+ $(OBJ_DIR)\gcm128_avx512.obj \\r
+ $(OBJ_DIR)\gcm128_vaes_avx512.obj \\r
$(OBJ_DIR)\gcm192_sse.obj \\r
$(OBJ_DIR)\gcm192_avx_gen2.obj \\r
$(OBJ_DIR)\gcm192_avx_gen4.obj \\r
+ $(OBJ_DIR)\gcm192_avx512.obj \\r
+ $(OBJ_DIR)\gcm192_vaes_avx512.obj \\r
$(OBJ_DIR)\gcm256_sse.obj \\r
$(OBJ_DIR)\gcm256_avx_gen2.obj \\r
- $(OBJ_DIR)\gcm256_avx_gen4.obj\r
+ $(OBJ_DIR)\gcm256_avx_gen4.obj \\r
+ $(OBJ_DIR)\gcm256_avx512.obj \\r
+ $(OBJ_DIR)\gcm256_vaes_avx512.obj \\r
+ $(OBJ_DIR)\gcm128_sse_no_aesni.obj \\r
+ $(OBJ_DIR)\gcm192_sse_no_aesni.obj \\r
+ $(OBJ_DIR)\gcm256_sse_no_aesni.obj\r
\r
!ifdef NO_GCM\r
all_objs = $(lib_objs1) $(lib_objs2)\r
$(AS) -o $@ $(AFLAGS) $<\r
\r
{avx\}.c{$(OBJ_DIR)}.obj:\r
- $(CC) /Fo$@ /c $(CFLAGS) $<\r
+ $(CC) /arch:AVX /Fo$@ /c $(CFLAGS) $<\r
\r
{avx\}.asm{$(OBJ_DIR)}.obj:\r
$(AS) -o $@ $(AFLAGS) $<\r
\r
{avx2\}.c{$(OBJ_DIR)}.obj:\r
- $(CC) /Fo$@ /c $(CFLAGS) $<\r
+ $(CC) /arch:AVX /Fo$@ /c $(CFLAGS) $<\r
\r
{avx2\}.asm{$(OBJ_DIR)}.obj:\r
$(AS) -o $@ $(AFLAGS) $<\r
\r
{avx512\}.c{$(OBJ_DIR)}.obj:\r
- $(CC) /Fo$@ /c $(CFLAGS) $<\r
+ $(CC) /arch:AVX /Fo$@ /c $(CFLAGS) $<\r
\r
{avx512\}.asm{$(OBJ_DIR)}.obj:\r
$(AS) -o $@ $(AFLAGS) $<\r
\r
+{no-aesni\}.c{$(OBJ_DIR)}.obj:\r
+ $(CC) /Fo$@ /c $(CFLAGS_NO_SIMD) $<\r
+\r
+{no-aesni\}.asm{$(OBJ_DIR)}.obj:\r
+ $(AS) -o $@ $(AFLAGS) $<\r
+\r
{include\}.asm{$(OBJ_DIR)}.obj:\r
$(AS) -o $@ $(AFLAGS) $<\r
\r