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