xref: /freebsd/secure/lib/libcrypto/Makefile.asm (revision f1c4c3daccbaf3820f0e2224de53df12fc952fcc)
1# Use this to help generate the asm *.S files after an import.  It is not
2# perfect by any means, but does what is needed.
3# Do a 'make -f Makefile.asm all' and it will generate *.S.  Move them
4# to the arch subdir, and correct any exposed paths.
5
6.include "Makefile.inc"
7
8.if defined(ASM_aarch64)
9
10.PATH:	${LCRYPTO_SRC}/crypto \
11	${LCRYPTO_SRC}/crypto/aes/asm \
12	${LCRYPTO_SRC}/crypto/bn/asm \
13	${LCRYPTO_SRC}/crypto/chacha/asm \
14	${LCRYPTO_SRC}/crypto/ec/asm \
15	${LCRYPTO_SRC}/crypto/md5/asm \
16	${LCRYPTO_SRC}/crypto/modes/asm \
17	${LCRYPTO_SRC}/crypto/poly1305/asm \
18	${LCRYPTO_SRC}/crypto/sha/asm \
19	${LCRYPTO_SRC}/crypto/sm3/asm \
20	${LCRYPTO_SRC}/crypto/sm4/asm
21
22PERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
23
24# cpuid
25SRCS=	arm64cpuid.pl
26
27# aes
28SRCS+=	aesv8-armx.pl bsaes-armv8.pl vpaes-armv8.pl
29
30# bn
31SRCS+=	armv8-mont.pl
32
33# chacha
34SRCS+=	chacha-armv8.pl chacha-armv8-sve.pl
35
36# ec
37SRCS+=	ecp_nistz256-armv8.pl ecp_sm2p256-armv8.pl
38
39# md5
40SRCS+=	md5-aarch64.pl
41
42# modes
43SRCS+=	ghashv8-armx.pl aes-gcm-armv8_64.pl aes-gcm-armv8-unroll8_64.pl
44
45# poly1305
46SRCS+=	poly1305-armv8.pl
47
48# sha
49SRCS+=	keccak1600-armv8.pl sha1-armv8.pl sha512-armv8.pl
50
51# sm3
52SRCS+=	sm3-armv8.pl
53
54# sm4
55SRCS+=	sm4-armv8.pl vpsm4-armv8.pl vpsm4_ex-armv8.pl
56
57ASM=	${SRCS:R:S/$/.S/} sha256-armv8.S
58
59all:	${ASM}
60	rm -f ${ASM:R:S/$/.s/}
61	${CP} ${LCRYPTO_SRC}/crypto/arm_arch.h ../arm_arch.h
62
63CLEANFILES=	${ASM}
64.SUFFIXES:	.pl
65
66sha256-armv8.S:	sha512-armv8.pl
67	env CC=cc perl ${.ALLSRC} linux64 ${.TARGET:R:S/$/.s/}
68	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
69	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
70
71.pl.S:
72	env CC=cc perl ${.IMPSRC} linux64 ${.TARGET:R:S/$/.s/}
73	( echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
74	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
75
76.elif defined(ASM_amd64)
77
78.PATH:	${LCRYPTO_SRC}/crypto \
79	${LCRYPTO_SRC}/crypto/aes/asm \
80	${LCRYPTO_SRC}/crypto/bn/asm \
81	${LCRYPTO_SRC}/crypto/camellia/asm \
82	${LCRYPTO_SRC}/crypto/chacha/asm \
83	${LCRYPTO_SRC}/crypto/ec/asm \
84	${LCRYPTO_SRC}/crypto/md5/asm \
85	${LCRYPTO_SRC}/crypto/modes/asm \
86	${LCRYPTO_SRC}/crypto/poly1305/asm \
87	${LCRYPTO_SRC}/crypto/rc4/asm \
88	${LCRYPTO_SRC}/crypto/sha/asm \
89	${LCRYPTO_SRC}/crypto/whrlpool/asm \
90	${LCRYPTO_SRC}/engines/asm
91
92# cpuid
93SRCS=	x86_64cpuid.pl
94
95# aes
96SRCS+=	aes-x86_64.pl \
97	aesni-mb-x86_64.pl aesni-sha1-x86_64.pl aesni-sha256-x86_64.pl \
98	aesni-x86_64.pl aesni-xts-avx512.pl bsaes-x86_64.pl vpaes-x86_64.pl
99
100# bn
101SRCS+=	rsaz-avx2.pl rsaz-x86_64.pl \
102	rsaz-2k-avx512.pl rsaz-2k-avxifma.pl \
103	rsaz-3k-avx512.pl rsaz-3k-avxifma.pl \
104	rsaz-4k-avx512.pl rsaz-4k-avxifma.pl \
105	x86_64-gf2m.pl x86_64-mont.pl x86_64-mont5.pl
106
107# camellia
108SRCS+=	cmll-x86_64.pl
109
110# chacha
111SRCS+=	chacha-x86_64.pl
112
113# ec
114SRCS+=	ecp_nistz256-x86_64.pl x25519-x86_64.pl
115
116# md5
117SRCS+=	md5-x86_64.pl
118
119# modes
120SRCS+=	aes-gcm-avx512.pl aesni-gcm-x86_64.pl ghash-x86_64.pl
121
122# poly1305
123SRCS+=	poly1305-x86_64.pl
124
125# rc4
126SRCS+=	rc4-md5-x86_64.pl rc4-x86_64.pl
127
128# sha
129SRCS+=	keccak1600-x86_64.pl sha1-mb-x86_64.pl sha1-x86_64.pl \
130	sha256-mb-x86_64.pl
131
132# whrlpool
133SRCS+=	wp-x86_64.pl
134
135# engines
136SRCS+=	e_padlock-x86_64.pl
137
138SHA_ASM=	sha256-x86_64 sha512-x86_64
139SHA_SRC=	sha512-x86_64.pl
140SHA_TMP=	${SHA_ASM:S/$/.s/}
141
142ASM=	${SRCS:R:S/$/.S/} ${SHA_ASM:S/$/.S/}
143
144all:	${ASM}
145	rm -f ${SHA_TMP}
146
147CLEANFILES=	${ASM}
148.SUFFIXES:	.pl
149
150.pl.S:
151	( echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
152	env CC=cc perl ${.IMPSRC} elf ) > ${.TARGET}
153
154${SHA_TMP}: ${SHA_SRC}
155	env CC=cc perl ${.ALLSRC} elf ${.TARGET}
156
157.for s in ${SHA_ASM}
158${s}.S: ${s}.s
159	( echo '/* Do not modify. This file is auto-generated from ${SHA_SRC}. */' ;\
160	cat ${s}.s ) > ${.TARGET}
161.endfor
162
163.elif defined(ASM_arm)
164
165.PATH:	${LCRYPTO_SRC}/crypto \
166	${LCRYPTO_SRC}/crypto/aes/asm \
167	${LCRYPTO_SRC}/crypto/bn/asm \
168	${LCRYPTO_SRC}/crypto/chacha/asm \
169	${LCRYPTO_SRC}/crypto/ec/asm \
170	${LCRYPTO_SRC}/crypto/modes/asm \
171	${LCRYPTO_SRC}/crypto/poly1305/asm \
172	${LCRYPTO_SRC}/crypto/sha/asm
173
174PERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
175
176# cpuid
177SRCS=	armv4cpuid.pl
178
179# aes
180SRCS+=	aes-armv4.pl aesv8-armx.pl bsaes-armv7.pl
181
182# bn
183SRCS+=	armv4-mont.pl armv4-gf2m.pl
184
185# chacha
186SRCS+=	chacha-armv4.pl
187
188# ec
189SRCS+=	ecp_nistz256-armv4.pl
190
191# modes
192SRCS+=	ghash-armv4.pl ghashv8-armx.pl
193
194# poly1305
195SRCS+=	poly1305-armv4.pl
196
197# sha
198SRCS+=	keccak1600-armv4.pl sha1-armv4-large.pl sha256-armv4.pl sha512-armv4.pl
199
200ASM=	${SRCS:R:S/$/.S/}
201
202all:	${ASM}
203	rm -f ${ASM:R:S/$/.s/}
204	${CP} ${LCRYPTO_SRC}/crypto/arm_arch.h ../arm_arch.h
205
206CLEANFILES=	${ASM}
207.SUFFIXES:	.pl
208
209.pl.S:
210	env CC=cc perl ${.IMPSRC} linux32 ${.TARGET:R:S/$/.s/}
211	( echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
212	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
213
214.elif defined(ASM_i386)
215
216.PATH:	${LCRYPTO_SRC}/crypto \
217	${LCRYPTO_SRC}/crypto/aes/asm \
218	${LCRYPTO_SRC}/crypto/bf/asm \
219	${LCRYPTO_SRC}/crypto/bn/asm \
220	${LCRYPTO_SRC}/crypto/camellia/asm \
221	${LCRYPTO_SRC}/crypto/cast/asm \
222	${LCRYPTO_SRC}/crypto/chacha/asm \
223	${LCRYPTO_SRC}/crypto/des/asm \
224	${LCRYPTO_SRC}/crypto/ec/asm \
225	${LCRYPTO_SRC}/crypto/md5/asm \
226	${LCRYPTO_SRC}/crypto/modes/asm \
227	${LCRYPTO_SRC}/crypto/poly1305/asm \
228	${LCRYPTO_SRC}/crypto/rc4/asm \
229	${LCRYPTO_SRC}/crypto/rc5/asm \
230	${LCRYPTO_SRC}/crypto/ripemd/asm \
231	${LCRYPTO_SRC}/crypto/sha/asm \
232	${LCRYPTO_SRC}/crypto/whrlpool/asm \
233	${LCRYPTO_SRC}/engines/asm
234
235#PERLPATH=	-I${LCRYPTO_SRC}/crypto/des/asm -I${LCRYPTO_SRC}/crypto/perlasm
236CFLAGS=	-DOPENSSL_IA32_SSE2
237
238# cpuid
239SRCS=	x86cpuid.pl
240
241# aes
242SRCS+=	aes-586.pl aesni-x86.pl vpaes-x86.pl
243
244# blowfish
245SRCS+=	bf-586.pl
246
247# bn
248SRCS+=	bn-586.pl co-586.pl x86-gf2m.pl x86-mont.pl
249
250# camellia
251SRCS+=	cmll-x86.pl
252
253# cast
254SRCS+=	cast-586.pl
255
256# chacha
257SRCS+=	chacha-x86.pl
258
259# des
260SRCS+=	crypt586.pl des-586.pl
261
262# ec
263SRCS+=	ecp_nistz256-x86.pl
264
265# md5
266SRCS+=	md5-586.pl
267
268# modes
269SRCS+=	ghash-x86.pl
270
271# poly1305
272SRCS+=	poly1305-x86.pl
273
274# rc4
275SRCS+=	rc4-586.pl
276
277# rc5
278SRCS+=	rc5-586.pl
279
280# ripemd
281SRCS+=	rmd-586.pl
282
283# sha
284SRCS+=	sha1-586.pl sha256-586.pl sha512-586.pl
285
286# whrlpool
287SRCS+=	wp-mmx.pl
288
289# engines
290SRCS+=	e_padlock-x86.pl
291
292ASM=	${SRCS:R:S/$/.S/}
293
294all:	${ASM}
295
296CLEANFILES=	${ASM}
297.SUFFIXES:	.pl
298
299.pl.S:
300	( echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
301	echo '#ifdef PIC' ;\
302	env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} -fpic /dev/stdout ;\
303	echo '#else' ;\
304	env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} /dev/stdout ;\
305	echo '#endif' ) > ${.TARGET}
306
307.elif defined(ASM_powerpc)
308
309.PATH:	${LCRYPTO_SRC}/crypto \
310	${LCRYPTO_SRC}/crypto/aes/asm \
311	${LCRYPTO_SRC}/crypto/bn/asm \
312	${LCRYPTO_SRC}/crypto/chacha/asm \
313	${LCRYPTO_SRC}/crypto/modes/asm \
314	${LCRYPTO_SRC}/crypto/poly1305/asm \
315	${LCRYPTO_SRC}/crypto/sha/asm
316
317PERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
318
319#cpuid
320SRCS=	ppccpuid.pl
321
322#bn
323SRCS+=	ppc.pl ppc-mont.pl
324
325#aes
326SRCS+=	aes-ppc.pl vpaes-ppc.pl aesp8-ppc.pl
327
328#sha1
329SRCS+=	sha1-ppc.pl sha512-ppc.pl sha512p8-ppc.pl
330
331#modes
332SRCS+=	aes-gcm-ppc.pl ghashp8-ppc.pl
333
334#chacha
335SRCS+=	chacha-ppc.pl chachap10-ppc.pl
336
337#poly1305
338SRCS+=	poly1305-ppc.pl poly1305-ppcfp.pl
339
340ASM=	${SRCS:R:S/$/.S/} bn-ppc.S sha256-ppc.S sha256p8-ppc.S
341
342all:	${ASM}
343	rm -f ${ASM:R:S/$/.s/}
344
345CLEANFILES=	${ASM}
346.SUFFIXES:	.pl
347
348bn-ppc.S:	ppc.pl
349	env CC=cc perl ${.ALLSRC} linux32 ${.TARGET:R:S/$/.s/}
350	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
351	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
352
353sha256-ppc.S:	sha512-ppc.pl
354	env CC=cc perl ${.ALLSRC} linux32 ${.TARGET:R:S/$/.s/}
355	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
356	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
357
358sha256p8-ppc.S:	sha512p8-ppc.pl
359	env CC=cc perl ${.ALLSRC} linux32 ${.TARGET:R:S/$/.s/}
360	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
361	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
362
363.pl.S:
364	env CC=cc perl ${.IMPSRC} linux32 ${.TARGET:R:S/$/.s/}
365	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
366	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
367
368.elif defined(ASM_powerpc64)
369
370.PATH:	${LCRYPTO_SRC}/crypto \
371	${LCRYPTO_SRC}/crypto/aes/asm \
372	${LCRYPTO_SRC}/crypto/bn/asm \
373	${LCRYPTO_SRC}/crypto/chacha/asm \
374	${LCRYPTO_SRC}/crypto/ec/asm \
375	${LCRYPTO_SRC}/crypto/modes/asm \
376	${LCRYPTO_SRC}/crypto/poly1305/asm \
377	${LCRYPTO_SRC}/crypto/sha/asm
378
379PERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
380
381#cpuid
382SRCS=	ppccpuid.pl
383
384#bn
385SRCS+=	ppc.pl ppc-mont.pl
386
387#aes
388SRCS+=	aes-ppc.pl vpaes-ppc.pl aesp8-ppc.pl
389
390#sha1
391SRCS+=	sha1-ppc.pl sha512-ppc.pl sha512p8-ppc.pl
392
393#modes
394SRCS+=	aes-gcm-ppc.pl ghashp8-ppc.pl
395
396#chacha
397SRCS+=	chacha-ppc.pl chachap10-ppc.pl
398
399#poly1305
400SRCS+=	poly1305-ppc.pl poly1305-ppcfp.pl
401
402#ec
403SRCS+=	ecp_nistp384-ppc64.pl ecp_nistp521-ppc64.pl ecp_nistz256-ppc64.pl x25519-ppc64.pl
404
405
406#keccak1600
407SRCS+=	keccak1600-ppc64.pl
408
409ASM=	${SRCS:R:S/$/.S/} bn-ppc.S sha256-ppc.S sha256p8-ppc.S
410
411all:	${ASM}
412	rm -f ${ASM:R:S/$/.s/}
413
414CLEANFILES=	${ASM}
415.SUFFIXES:	.pl
416
417bn-ppc.S:	ppc.pl
418	env CC=cc perl ${.ALLSRC} linux64v2 ${.TARGET:R:S/$/.s/}
419	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
420	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
421
422sha256-ppc.S:	sha512-ppc.pl
423	env CC=cc perl ${.ALLSRC} linux64v2 ${.TARGET:R:S/$/.s/}
424	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
425	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
426
427sha256p8-ppc.S:	sha512p8-ppc.pl
428	env CC=cc perl ${.ALLSRC} linux64v2 ${.TARGET:R:S/$/.s/}
429	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
430	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
431
432.pl.S:
433	env CC=cc perl ${.IMPSRC} linux64v2 ${.TARGET:R:S/$/.s/}
434	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
435	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
436
437.elif defined(ASM_powerpc64le)
438
439.PATH:	${LCRYPTO_SRC}/crypto \
440	${LCRYPTO_SRC}/crypto/aes/asm \
441	${LCRYPTO_SRC}/crypto/bn/asm \
442	${LCRYPTO_SRC}/crypto/chacha/asm \
443	${LCRYPTO_SRC}/crypto/ec/asm \
444	${LCRYPTO_SRC}/crypto/modes/asm \
445	${LCRYPTO_SRC}/crypto/poly1305/asm \
446	${LCRYPTO_SRC}/crypto/sha/asm
447
448PERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
449
450#cpuid
451SRCS=	ppccpuid.pl
452
453#bn
454SRCS+=	ppc.pl ppc-mont.pl
455
456#aes
457SRCS+=	aes-ppc.pl vpaes-ppc.pl aesp8-ppc.pl
458
459#sha1
460SRCS+=	sha1-ppc.pl sha512-ppc.pl sha512p8-ppc.pl
461
462#modes
463SRCS+=	aes-gcm-ppc.pl ghashp8-ppc.pl
464
465#chacha
466SRCS+=	chacha-ppc.pl chachap10-ppc.pl
467
468#poly1305
469SRCS+=	poly1305-ppc.pl poly1305-ppcfp.pl
470
471#ec
472SRCS+=	ecp_nistp384-ppc64.pl ecp_nistp521-ppc64.pl ecp_nistz256-ppc64.pl x25519-ppc64.pl
473
474#keccak1600
475SRCS+=	keccak1600-ppc64.pl
476
477ASM=	${SRCS:R:S/$/.S/} bn-ppc.S sha256-ppc.S sha256p8-ppc.S
478
479all:	${ASM}
480	rm -f ${ASM:R:S/$/.s/}
481
482CLEANFILES=	${ASM}
483.SUFFIXES:	.pl
484
485bn-ppc.S:	ppc.pl
486	env CC=cc perl ${.ALLSRC} linux64le ${.TARGET:R:S/$/.s/}
487	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
488	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
489
490sha256-ppc.S:	sha512-ppc.pl
491	env CC=cc perl ${.ALLSRC} linux64le ${.TARGET:R:S/$/.s/}
492	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
493	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
494
495sha256p8-ppc.S:	sha512p8-ppc.pl
496	env CC=cc perl ${.ALLSRC} linux64le ${.TARGET:R:S/$/.s/}
497	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
498	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
499
500.pl.S:
501	env CC=cc perl ${.IMPSRC} linux64le ${.TARGET:R:S/$/.s/}
502	( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
503	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
504
505.endif
506
507.include <bsd.prog.mk>
508