1# $NetBSD: Makefile,v 1.7 2023/08/08 06:27:32 mrg Exp $ 2 3.include <bsd.own.mk> 4 5TESTSDIR= ${TESTSBASE}/sys/crypto/aes 6 7TESTS_C= t_aes 8 9AFLAGS+= -D_LOCORE 10 11.PATH: ${NETBSDSRCDIR}/sys/crypto/aes 12CPPFLAGS+= -I${NETBSDSRCDIR}/sys 13 14SRCS.t_aes+= t_aes.c 15 16SRCS.t_aes+= aes_bear.c 17SRCS.t_aes+= aes_ct.c 18SRCS.t_aes+= aes_ct_dec.c 19SRCS.t_aes+= aes_ct_enc.c 20SRCS.t_aes+= aes_selftest.c 21 22.if !empty(MACHINE_ARCH:Mearmv7*) || !empty(MACHINE_ARCH:Maarch64*) 23 24.PATH: ${NETBSDSRCDIR}/sys/crypto/aes/arch/arm 25CPPFLAGS+= -I${NETBSDSRCDIR}/sys/crypto/aes/arch/arm 26 27.if !empty(MACHINE_ARCH:Maarch64*) # XXX no AESE/AESD in 32-bit mode yet 28SRCS.t_aes+= aes_armv8.c 29SRCS.t_aes+= aes_armv8_64.S 30.endif 31 32CLANG_NO_NONPORTABLE_VECTOR_INITIALIZATION= ${${ACTIVE_CC} == "clang":? -Wno-nonportable-vector-initialization :} 33 34SRCS.t_aes+= aes_neon.c 35COPTS.aes_neon.c+=${CLANG_NO_NONPORTABLE_VECTOR_INITIALIZATION} 36SRCS.t_aes+= aes_neon_impl.c 37SRCS.t_aes+= aes_neon_subr.c 38COPTS.aes_neon_subr.c+=${CLANG_NO_NONPORTABLE_VECTOR_INITIALIZATION} 39.if !empty(MACHINE_ARCH:Mearmv7*) 40SRCS.t_aes+= aes_neon_32.S 41.endif 42 43.if !empty(MACHINE_ARCH:Mearmv7*) && empty(MACHINE_ARCH:Mearmv7hf*) 44COPTS.aes_neon.c+= -mfloat-abi=softfp -mfpu=neon 45COPTS.aes_neon_subr.c+= -mfloat-abi=softfp -mfpu=neon 46AOPTS.aes_neon_32.S+= -D__SOFTFP__ 47.endif 48 49.endif # earmv7/aarch64 50 51.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 52 53.PATH: ${NETBSDSRCDIR}/sys/crypto/aes/arch/x86 54CPPFLAGS+= -I${NETBSDSRCDIR}/sys/crypto/aes/arch/x86 55 56.if ${MACHINE_ARCH} == "x86_64" # XXX no AES-NI in 32-bit mode yet 57SRCS.t_aes+= aes_ni.c 58SRCS.t_aes+= aes_ni_64.S 59.endif 60 61SRCS.t_aes+= aes_sse2.c 62SRCS.t_aes+= aes_sse2_dec.c 63SRCS.t_aes+= aes_sse2_enc.c 64SRCS.t_aes+= aes_sse2_impl.c 65SRCS.t_aes+= aes_sse2_subr.c 66COPTS.aes_sse2.c+= -msse -msse2 67COPTS.aes_sse2_dec.c+= -msse -msse2 68COPTS.aes_sse2_enc.c+= -msse -msse2 69COPTS.aes_sse2_subr.c+= -msse -msse2 70 71SRCS.t_aes+= aes_ssse3.c 72SRCS.t_aes+= aes_ssse3_impl.c 73SRCS.t_aes+= aes_ssse3_subr.c 74COPTS.aes_ssse3.c+= -msse -msse2 -msse3 -mssse3 75COPTS.aes_ssse3_subr.c+= -msse -msse2 -msse3 -mssse3 76 77SRCS.t_aes+= aes_via.c 78 79.endif # x86 80 81WARNS= 5 82 83# Many of these are probably GCC bugs, see 84# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110878 85COPTS.aes_armv8.c+= ${CC_WNO_STRINGOP_OVERREAD} ${CC_WNO_STRINGOP_OVERFLOW} 86COPTS.aes_bear.c+= ${CC_WNO_STRINGOP_OVERFLOW} ${CC_WNO_ARRAY_BOUNDS} 87COPTS.aes_neon_subr.c+= ${CC_WNO_ARRAY_BOUNDS} 88 89COPTS.aes_ni.c+= ${CC_WNO_STRINGOP_OVERREAD} ${CC_WNO_STRINGOP_OVERFLOW} 90COPTS.aes_sse2_subr.c+= ${CC_WNO_ARRAY_BOUNDS} 91COPTS.aes_ssse3_subr.c+=${CC_WNO_ARRAY_BOUNDS} 92COPTS.aes_via.c+= ${CC_WNO_ARRAY_BOUNDS} 93 94.include <bsd.test.mk> 95