xref: /freebsd/secure/lib/libcrypto/Makefile.asm (revision 3fc36ee018bb836bd1796067cf4ef8683f166ebc)
1# $FreeBSD$
2# Use this to help generate the asm *.S files after an import.  It is not
3# perfect by any means, but does what is needed.
4# Do a 'make -f Makefile.asm all' and it will generate *.S.  Move them
5# to the arch subdir, and correct any exposed paths and $ FreeBSD $ tags.
6
7.include "Makefile.inc"
8
9.if defined(ASM_amd64)
10
11.PATH:	${LCRYPTO_SRC}/crypto \
12	${LCRYPTO_SRC}/crypto/aes/asm \
13	${LCRYPTO_SRC}/crypto/bn/asm \
14	${LCRYPTO_SRC}/crypto/camellia/asm \
15	${LCRYPTO_SRC}/crypto/ec/asm \
16	${LCRYPTO_SRC}/crypto/md5/asm \
17	${LCRYPTO_SRC}/crypto/modes/asm \
18	${LCRYPTO_SRC}/crypto/rc4/asm \
19	${LCRYPTO_SRC}/crypto/sha/asm \
20	${LCRYPTO_SRC}/crypto/whrlpool/asm
21
22# aes
23SRCS=	aes-x86_64.pl aesni-mb-x86_64.pl aesni-sha1-x86_64.pl \
24	aesni-sha256-x86_64.pl aesni-x86_64.pl bsaes-x86_64.pl \
25	vpaes-x86_64.pl
26
27# bn
28SRCS+=	rsaz-avx2.pl rsaz-x86_64.pl x86_64-gf2m.pl x86_64-mont.pl \
29	x86_64-mont5.pl
30
31# camellia
32SRCS+=	cmll-x86_64.pl
33
34# ec
35SRCS+=	ecp_nistz256-x86_64.pl
36
37# md5
38SRCS+=	md5-x86_64.pl
39
40# modes
41SRCS+=	aesni-gcm-x86_64.pl ghash-x86_64.pl
42
43# rc4
44SRCS+=	rc4-md5-x86_64.pl rc4-x86_64.pl
45
46# sha
47SRCS+=	sha1-mb-x86_64.pl sha1-x86_64.pl sha256-mb-x86_64.pl
48
49# whrlpool
50SRCS+=	wp-x86_64.pl
51
52# cpuid
53SRCS+=	x86_64cpuid.pl
54
55SHA_ASM=	sha256-x86_64 sha512-x86_64
56SHA_SRC=	sha512-x86_64.pl
57SHA_TMP=	${SHA_ASM:S/$/.s/}
58
59ASM=	${SRCS:R:S/$/.S/} ${SHA_ASM:S/$/.S/}
60
61all:	${ASM}
62
63CLEANFILES=	${ASM} ${SHA_ASM:S/$/.s/}
64.SUFFIXES:	.pl
65
66.pl.S:
67	( echo '/* $$'FreeBSD'$$ */' ;\
68	echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
69	env CC=cc perl ${.IMPSRC} elf ) > ${.TARGET}
70
71${SHA_TMP}: ${SHA_SRC}
72	env CC=cc perl ${.ALLSRC} elf ${.TARGET}
73
74.for s in ${SHA_ASM}
75${s}.S: ${s}.s
76	( echo '/* $$'FreeBSD'$$ */' ;\
77	echo '/* Do not modify. This file is auto-generated from ${SHA_SRC}. */' ;\
78	cat ${s}.s ) > ${.TARGET}
79.endfor
80
81.elif defined(ASM_arm)
82
83.PATH:	${LCRYPTO_SRC}/crypto \
84	${LCRYPTO_SRC}/crypto/aes/asm \
85	${LCRYPTO_SRC}/crypto/bn/asm \
86	${LCRYPTO_SRC}/crypto/modes/asm \
87	${LCRYPTO_SRC}/crypto/sha/asm
88
89PERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
90
91# aes
92SRCS=	aesv8-armx.pl bsaes-armv7.pl
93
94# bn
95SRCS+=	armv4-mont.pl armv4-gf2m.pl
96
97# modes
98SRCS+=	ghash-armv4.pl ghashv8-armx.pl
99
100# sha
101SRCS+=	sha1-armv4-large.pl sha256-armv4.pl sha512-armv4.pl
102
103ASM=	aes-armv4.S ${SRCS:R:S/$/.S/}
104
105all:	${ASM}
106
107CLEANFILES=	${ASM} ${SRCS:R:S/$/.s/}
108.SUFFIXES:	.pl
109
110aes-armv4.S:	aes-armv4.pl
111	( echo '/* $$'FreeBSD'$$ */' ;\
112	echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
113	env CC=cc perl ${.ALLSRC} elf ) > ${.TARGET}
114
115.pl.S:
116	env CC=cc perl ${.IMPSRC} elf ${.TARGET:R:S/$/.s/}
117	( echo '/* $$'FreeBSD'$$ */' ;\
118	echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T:R:S/$/.pl/}. */' ;\
119	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
120
121.elif defined(ASM_i386)
122
123.PATH:	${LCRYPTO_SRC}/crypto \
124	${LCRYPTO_SRC}/crypto/aes/asm \
125	${LCRYPTO_SRC}/crypto/bf/asm \
126	${LCRYPTO_SRC}/crypto/bn/asm \
127	${LCRYPTO_SRC}/crypto/camellia/asm \
128	${LCRYPTO_SRC}/crypto/des/asm \
129	${LCRYPTO_SRC}/crypto/md5/asm \
130	${LCRYPTO_SRC}/crypto/modes/asm \
131	${LCRYPTO_SRC}/crypto/rc4/asm \
132	${LCRYPTO_SRC}/crypto/rc5/asm \
133	${LCRYPTO_SRC}/crypto/ripemd/asm \
134	${LCRYPTO_SRC}/crypto/sha/asm \
135	${LCRYPTO_SRC}/crypto/whrlpool/asm
136
137PERLPATH=	-I${LCRYPTO_SRC}/crypto/des/asm -I${LCRYPTO_SRC}/crypto/perlasm
138
139# aes
140SRCS=	aes-586.pl aesni-x86.pl vpaes-x86.pl
141
142# blowfish
143SRCS+=	bf-586.pl bf-686.pl
144
145# bn
146SRCS+=	bn-586.pl co-586.pl x86-gf2m.pl x86-mont.pl
147
148# camellia
149SRCS+=	cmll-x86.pl
150
151# des
152SRCS+=	crypt586.pl des-586.pl
153
154# md5
155SRCS+=	md5-586.pl
156
157# modes
158SRCS+=	ghash-x86.pl
159
160# rc4
161SRCS+=	rc4-586.pl
162
163# rc5
164SRCS+=	rc5-586.pl
165
166# ripemd
167SRCS+=	rmd-586.pl
168
169# sha
170SRCS+=	sha1-586.pl sha256-586.pl sha512-586.pl
171
172# whrlpool
173SRCS+=	wp-mmx.pl
174
175# cpuid
176SRCS+=	x86cpuid.pl
177
178ASM=	${SRCS:R:S/$/.S/}
179
180all:	${ASM}
181
182CLEANFILES=	${ASM}
183.SUFFIXES:	.pl
184
185.pl.S:
186	( echo '/* $$'FreeBSD'$$ */' ;\
187	echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
188	echo '#ifdef PIC' ;\
189	env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} -fpic -DPIC ;\
190	echo '#else' ;\
191	env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} ;\
192	echo '#endif') |\
193	sed -E 's|(\.file[[:blank:]]+)".*"|\1"${.TARGET}"|' > ${.TARGET}
194.endif
195
196.include <bsd.prog.mk>
197