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