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