xref: /linux/lib/crypto/Makefile (revision 9f97707bdb1e479ea15e14e5525164f5f1128e97)
1# SPDX-License-Identifier: GPL-2.0
2
3aflags-thumb2-$(CONFIG_THUMB2_KERNEL)  := -U__thumb2__ -D__thumb2__=1
4
5quiet_cmd_perlasm = PERLASM $@
6      cmd_perlasm = $(PERL) $(<) > $(@)
7
8quiet_cmd_perlasm_with_args = PERLASM $@
9      cmd_perlasm_with_args = $(PERL) $(<) void $(@)
10
11obj-$(CONFIG_CRYPTO_LIB_UTILS)			+= libcryptoutils.o
12libcryptoutils-y				:= memneq.o utils.o
13
14# chacha is used by the /dev/random driver which is always builtin
15obj-y						+= chacha.o
16obj-$(CONFIG_CRYPTO_LIB_CHACHA_GENERIC)		+= libchacha.o
17
18obj-$(CONFIG_CRYPTO_LIB_AES)			+= libaes.o
19libaes-y					:= aes.o
20
21obj-$(CONFIG_CRYPTO_LIB_AESCFB)			+= libaescfb.o
22libaescfb-y					:= aescfb.o
23
24obj-$(CONFIG_CRYPTO_LIB_AESGCM)			+= libaesgcm.o
25libaesgcm-y					:= aesgcm.o
26
27obj-$(CONFIG_CRYPTO_LIB_ARC4)			+= libarc4.o
28libarc4-y					:= arc4.o
29
30obj-$(CONFIG_CRYPTO_LIB_GF128MUL)		+= gf128mul.o
31
32# blake2s is used by the /dev/random driver which is always builtin
33obj-y						+= libblake2s.o
34libblake2s-y					:= blake2s.o
35libblake2s-$(CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC)	+= blake2s-generic.o
36libblake2s-$(CONFIG_CRYPTO_SELFTESTS)		+= blake2s-selftest.o
37
38obj-$(CONFIG_CRYPTO_LIB_CHACHA20POLY1305)	+= libchacha20poly1305.o
39libchacha20poly1305-y				+= chacha20poly1305.o
40libchacha20poly1305-$(CONFIG_CRYPTO_SELFTESTS)	+= chacha20poly1305-selftest.o
41
42obj-$(CONFIG_CRYPTO_LIB_CURVE25519_GENERIC)	+= libcurve25519-generic.o
43libcurve25519-generic-y				:= curve25519-fiat32.o
44libcurve25519-generic-$(CONFIG_ARCH_SUPPORTS_INT128)	:= curve25519-hacl64.o
45libcurve25519-generic-y				+= curve25519-generic.o
46# clang versions prior to 18 may blow out the stack with KASAN
47ifeq ($(call clang-min-version, 180000),)
48KASAN_SANITIZE_curve25519-hacl64.o := n
49endif
50
51obj-$(CONFIG_CRYPTO_LIB_CURVE25519)		+= libcurve25519.o
52libcurve25519-y					+= curve25519.o
53libcurve25519-$(CONFIG_CRYPTO_SELFTESTS)	+= curve25519-selftest.o
54
55obj-$(CONFIG_CRYPTO_LIB_DES)			+= libdes.o
56libdes-y					:= des.o
57
58obj-$(CONFIG_CRYPTO_LIB_POLY1305)		+= libpoly1305.o
59libpoly1305-y					+= poly1305.o
60
61obj-$(CONFIG_CRYPTO_LIB_POLY1305_GENERIC)	+= libpoly1305-generic.o
62libpoly1305-generic-y				:= poly1305-donna32.o
63libpoly1305-generic-$(CONFIG_ARCH_SUPPORTS_INT128) := poly1305-donna64.o
64libpoly1305-generic-y				+= poly1305-generic.o
65
66obj-$(CONFIG_CRYPTO_LIB_SHA1)			+= libsha1.o
67libsha1-y					:= sha1.o
68
69obj-$(CONFIG_CRYPTO_LIB_SHA256)			+= libsha256.o
70libsha256-y					:= sha256.o
71
72obj-$(CONFIG_CRYPTO_LIB_SHA256_GENERIC)		+= libsha256-generic.o
73libsha256-generic-y				:= sha256-generic.o
74
75obj-$(CONFIG_CRYPTO_LIB_SHA512) += libsha512.o
76libsha512-y := sha512.o
77ifeq ($(CONFIG_CRYPTO_LIB_SHA512_ARCH),y)
78CFLAGS_sha512.o += -I$(src)/$(SRCARCH)
79
80ifeq ($(CONFIG_ARM),y)
81libsha512-y += arm/sha512-core.o
82$(obj)/arm/sha512-core.S: $(src)/arm/sha512-armv4.pl
83	$(call cmd,perlasm)
84clean-files += arm/sha512-core.S
85AFLAGS_arm/sha512-core.o += $(aflags-thumb2-y)
86endif
87
88ifeq ($(CONFIG_ARM64),y)
89libsha512-y += arm64/sha512-core.o
90$(obj)/arm64/sha512-core.S: $(src)/arm64/sha2-armv8.pl
91	$(call cmd,perlasm_with_args)
92clean-files += arm64/sha512-core.S
93libsha512-$(CONFIG_KERNEL_MODE_NEON) += arm64/sha512-ce-core.o
94endif
95
96libsha512-$(CONFIG_RISCV) += riscv/sha512-riscv64-zvknhb-zvkb.o
97libsha512-$(CONFIG_SPARC) += sparc/sha512_asm.o
98libsha512-$(CONFIG_X86) += x86/sha512-ssse3-asm.o \
99			   x86/sha512-avx-asm.o \
100			   x86/sha512-avx2-asm.o
101endif # CONFIG_CRYPTO_LIB_SHA512_ARCH
102
103obj-$(CONFIG_MPILIB) += mpi/
104
105obj-$(CONFIG_CRYPTO_SELFTESTS_FULL)		+= simd.o
106
107obj-$(CONFIG_CRYPTO_LIB_SM3)			+= libsm3.o
108libsm3-y					:= sm3.o
109
110obj-$(CONFIG_ARM) += arm/
111obj-$(CONFIG_ARM64) += arm64/
112obj-$(CONFIG_MIPS) += mips/
113obj-$(CONFIG_PPC) += powerpc/
114obj-$(CONFIG_RISCV) += riscv/
115obj-$(CONFIG_S390) += s390/
116obj-$(CONFIG_SPARC) += sparc/
117obj-$(CONFIG_X86) += x86/
118