xref: /linux/lib/crypto/Makefile (revision eec76ea5a7213c48529a46eed1b343e5cee3aaab)
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_HASH_INFO)			+= hash_info.o
12
13obj-$(CONFIG_CRYPTO_LIB_UTILS)			+= libcryptoutils.o
14libcryptoutils-y				:= memneq.o utils.o
15
16# chacha is used by the /dev/random driver which is always builtin
17obj-y						+= chacha.o
18obj-$(CONFIG_CRYPTO_LIB_CHACHA_GENERIC)		+= libchacha.o
19
20obj-$(CONFIG_CRYPTO_LIB_AES)			+= libaes.o
21libaes-y					:= aes.o
22
23obj-$(CONFIG_CRYPTO_LIB_AESCFB)			+= libaescfb.o
24libaescfb-y					:= aescfb.o
25
26obj-$(CONFIG_CRYPTO_LIB_AESGCM)			+= libaesgcm.o
27libaesgcm-y					:= aesgcm.o
28
29obj-$(CONFIG_CRYPTO_LIB_ARC4)			+= libarc4.o
30libarc4-y					:= arc4.o
31
32obj-$(CONFIG_CRYPTO_LIB_GF128MUL)		+= gf128mul.o
33
34# blake2s is used by the /dev/random driver which is always builtin
35obj-y						+= libblake2s.o
36libblake2s-y					:= blake2s.o
37libblake2s-$(CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC)	+= blake2s-generic.o
38libblake2s-$(CONFIG_CRYPTO_SELFTESTS)		+= blake2s-selftest.o
39
40obj-$(CONFIG_CRYPTO_LIB_CHACHA20POLY1305)	+= libchacha20poly1305.o
41libchacha20poly1305-y				+= chacha20poly1305.o
42libchacha20poly1305-$(CONFIG_CRYPTO_SELFTESTS)	+= chacha20poly1305-selftest.o
43
44obj-$(CONFIG_CRYPTO_LIB_CURVE25519_GENERIC)	+= libcurve25519-generic.o
45libcurve25519-generic-y				:= curve25519-fiat32.o
46libcurve25519-generic-$(CONFIG_ARCH_SUPPORTS_INT128)	:= curve25519-hacl64.o
47libcurve25519-generic-y				+= curve25519-generic.o
48# clang versions prior to 18 may blow out the stack with KASAN
49ifeq ($(call clang-min-version, 180000),)
50KASAN_SANITIZE_curve25519-hacl64.o := n
51endif
52
53obj-$(CONFIG_CRYPTO_LIB_CURVE25519)		+= libcurve25519.o
54libcurve25519-y					+= curve25519.o
55libcurve25519-$(CONFIG_CRYPTO_SELFTESTS)	+= curve25519-selftest.o
56
57obj-$(CONFIG_CRYPTO_LIB_DES)			+= libdes.o
58libdes-y					:= des.o
59
60obj-$(CONFIG_CRYPTO_LIB_POLY1305)		+= libpoly1305.o
61libpoly1305-y					+= poly1305.o
62
63obj-$(CONFIG_CRYPTO_LIB_POLY1305_GENERIC)	+= libpoly1305-generic.o
64libpoly1305-generic-y				:= poly1305-donna32.o
65libpoly1305-generic-$(CONFIG_ARCH_SUPPORTS_INT128) := poly1305-donna64.o
66libpoly1305-generic-y				+= poly1305-generic.o
67
68obj-$(CONFIG_CRYPTO_LIB_SHA1)			+= libsha1.o
69libsha1-y					:= sha1.o
70
71################################################################################
72
73obj-$(CONFIG_CRYPTO_LIB_SHA256) += libsha256.o
74libsha256-y := sha256.o
75ifeq ($(CONFIG_CRYPTO_LIB_SHA256_ARCH),y)
76CFLAGS_sha256.o += -I$(src)/$(SRCARCH)
77
78ifeq ($(CONFIG_ARM),y)
79libsha256-y += arm/sha256-ce.o arm/sha256-core.o
80$(obj)/arm/sha256-core.S: $(src)/arm/sha256-armv4.pl
81	$(call cmd,perlasm)
82clean-files += arm/sha256-core.S
83AFLAGS_arm/sha256-core.o += $(aflags-thumb2-y)
84endif
85
86ifeq ($(CONFIG_ARM64),y)
87libsha256-y += arm64/sha256-core.o
88$(obj)/arm64/sha256-core.S: $(src)/arm64/sha2-armv8.pl
89	$(call cmd,perlasm_with_args)
90clean-files += arm64/sha256-core.S
91libsha256-$(CONFIG_KERNEL_MODE_NEON) += arm64/sha256-ce.o
92endif
93
94libsha256-$(CONFIG_PPC) += powerpc/sha256-spe-asm.o
95libsha256-$(CONFIG_RISCV) += riscv/sha256-riscv64-zvknha_or_zvknhb-zvkb.o
96libsha256-$(CONFIG_SPARC) += sparc/sha256_asm.o
97libsha256-$(CONFIG_X86) += x86/sha256-ssse3-asm.o \
98			   x86/sha256-avx-asm.o \
99			   x86/sha256-avx2-asm.o \
100			   x86/sha256-ni-asm.o
101endif # CONFIG_CRYPTO_LIB_SHA256_ARCH
102
103################################################################################
104
105obj-$(CONFIG_CRYPTO_LIB_SHA512) += libsha512.o
106libsha512-y := sha512.o
107ifeq ($(CONFIG_CRYPTO_LIB_SHA512_ARCH),y)
108CFLAGS_sha512.o += -I$(src)/$(SRCARCH)
109
110ifeq ($(CONFIG_ARM),y)
111libsha512-y += arm/sha512-core.o
112$(obj)/arm/sha512-core.S: $(src)/arm/sha512-armv4.pl
113	$(call cmd,perlasm)
114clean-files += arm/sha512-core.S
115AFLAGS_arm/sha512-core.o += $(aflags-thumb2-y)
116endif
117
118ifeq ($(CONFIG_ARM64),y)
119libsha512-y += arm64/sha512-core.o
120$(obj)/arm64/sha512-core.S: $(src)/arm64/sha2-armv8.pl
121	$(call cmd,perlasm_with_args)
122clean-files += arm64/sha512-core.S
123libsha512-$(CONFIG_KERNEL_MODE_NEON) += arm64/sha512-ce-core.o
124endif
125
126libsha512-$(CONFIG_RISCV) += riscv/sha512-riscv64-zvknhb-zvkb.o
127libsha512-$(CONFIG_SPARC) += sparc/sha512_asm.o
128libsha512-$(CONFIG_X86) += x86/sha512-ssse3-asm.o \
129			   x86/sha512-avx-asm.o \
130			   x86/sha512-avx2-asm.o
131endif # CONFIG_CRYPTO_LIB_SHA512_ARCH
132
133################################################################################
134
135obj-$(CONFIG_MPILIB) += mpi/
136
137obj-$(CONFIG_CRYPTO_SELFTESTS_FULL)		+= simd.o
138
139obj-$(CONFIG_CRYPTO_LIB_SM3)			+= libsm3.o
140libsm3-y					:= sm3.o
141
142obj-$(CONFIG_ARM) += arm/
143obj-$(CONFIG_ARM64) += arm64/
144obj-$(CONFIG_MIPS) += mips/
145obj-$(CONFIG_PPC) += powerpc/
146obj-$(CONFIG_RISCV) += riscv/
147obj-$(CONFIG_S390) += s390/
148obj-$(CONFIG_X86) += x86/
149