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.
7 .include "Makefile.inc"
9 .if defined(ASM_aarch64)
11 .PATH: ${LCRYPTO_SRC}/crypto \
12 ${LCRYPTO_SRC}/crypto/aes/asm \
13 ${LCRYPTO_SRC}/crypto/modes/asm \
14 ${LCRYPTO_SRC}/crypto/sha/asm
16 PERLPATH= -I${LCRYPTO_SRC}/crypto/perlasm
22 SRCS+= ghashv8-armx.pl
25 SRCS+= sha1-armv8.pl sha512-armv8.pl
27 ASM= ${SRCS:R:S/$/.S/} sha256-armv8.S
31 CLEANFILES= ${ASM} ${SRCS:R:S/$/.s/} sha256-armv8.s
34 sha256-armv8.S: sha512-armv8.pl
35 env CC=cc perl ${.ALLSRC} 64 ${.TARGET:R:S/$/.s/}
36 ( echo '/* $$'FreeBSD'$$ */' ;\
37 echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T:R:S/$/.pl/}. */' ;\
38 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
41 env CC=cc perl ${.IMPSRC} 64 ${.TARGET:R:S/$/.s/}
42 ( echo '/* $$'FreeBSD'$$ */' ;\
43 echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T:R:S/$/.pl/}. */' ;\
44 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
46 .elif defined(ASM_amd64)
48 .PATH: ${LCRYPTO_SRC}/crypto \
49 ${LCRYPTO_SRC}/crypto/aes/asm \
50 ${LCRYPTO_SRC}/crypto/bn/asm \
51 ${LCRYPTO_SRC}/crypto/camellia/asm \
52 ${LCRYPTO_SRC}/crypto/chacha/asm \
53 ${LCRYPTO_SRC}/crypto/ec/asm \
54 ${LCRYPTO_SRC}/crypto/md5/asm \
55 ${LCRYPTO_SRC}/crypto/modes/asm \
56 ${LCRYPTO_SRC}/crypto/poly1305/asm \
57 ${LCRYPTO_SRC}/crypto/rc4/asm \
58 ${LCRYPTO_SRC}/crypto/sha/asm \
59 ${LCRYPTO_SRC}/crypto/whrlpool/asm \
60 ${LCRYPTO_SRC}/engines/asm
66 SRCS= aes-x86_64.pl aesni-mb-x86_64.pl aesni-sha1-x86_64.pl \
67 aesni-sha256-x86_64.pl aesni-x86_64.pl bsaes-x86_64.pl \
71 SRCS+= rsaz-avx2.pl rsaz-x86_64.pl x86_64-gf2m.pl x86_64-mont.pl \
78 SRCS+= chacha-x86_64.pl
81 SRCS+= ecp_nistz256-x86_64.pl x25519-x86_64.pl
87 SRCS+= aesni-gcm-x86_64.pl ghash-x86_64.pl
90 SRCS+= poly1305-x86_64.pl
93 SRCS+= rc4-md5-x86_64.pl rc4-x86_64.pl
96 SRCS+= keccak1600-x86_64.pl sha1-mb-x86_64.pl sha1-x86_64.pl \
103 SRCS+= e_padlock-x86_64.pl
105 SHA_ASM= sha256-x86_64 sha512-x86_64
106 SHA_SRC= sha512-x86_64.pl
107 SHA_TMP= ${SHA_ASM:S/$/.s/}
109 ASM= ${SRCS:R:S/$/.S/} ${SHA_ASM:S/$/.S/}
113 CLEANFILES= ${ASM} ${SHA_ASM:S/$/.s/}
117 ( echo '/* $$'FreeBSD'$$ */' ;\
118 echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
119 env CC=cc perl ${.IMPSRC} elf ) > ${.TARGET}
121 ${SHA_TMP}: ${SHA_SRC}
122 env CC=cc perl ${.ALLSRC} elf ${.TARGET}
126 ( echo '/* $$'FreeBSD'$$ */' ;\
127 echo '/* Do not modify. This file is auto-generated from ${SHA_SRC}. */' ;\
128 cat ${s}.s ) > ${.TARGET}
131 .elif defined(ASM_arm)
133 .PATH: ${LCRYPTO_SRC}/crypto \
134 ${LCRYPTO_SRC}/crypto/aes/asm \
135 ${LCRYPTO_SRC}/crypto/bn/asm \
136 ${LCRYPTO_SRC}/crypto/modes/asm \
137 ${LCRYPTO_SRC}/crypto/sha/asm
139 PERLPATH= -I${LCRYPTO_SRC}/crypto/perlasm
142 SRCS= aesv8-armx.pl bsaes-armv7.pl
145 SRCS+= armv4-mont.pl armv4-gf2m.pl
148 SRCS+= ghash-armv4.pl ghashv8-armx.pl
151 SRCS+= sha1-armv4-large.pl sha256-armv4.pl sha512-armv4.pl
153 ASM= aes-armv4.S ${SRCS:R:S/$/.S/}
157 CLEANFILES= ${ASM} ${SRCS:R:S/$/.s/}
160 aes-armv4.S: aes-armv4.pl
161 ( echo '/* $$'FreeBSD'$$ */' ;\
162 echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
163 env CC=cc perl ${.ALLSRC} elf ) > ${.TARGET}
166 env CC=cc perl ${.IMPSRC} elf ${.TARGET:R:S/$/.s/}
167 ( echo '/* $$'FreeBSD'$$ */' ;\
168 echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T:R:S/$/.pl/}. */' ;\
169 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
171 .elif defined(ASM_i386)
173 .PATH: ${LCRYPTO_SRC}/crypto \
174 ${LCRYPTO_SRC}/crypto/aes/asm \
175 ${LCRYPTO_SRC}/crypto/bf/asm \
176 ${LCRYPTO_SRC}/crypto/bn/asm \
177 ${LCRYPTO_SRC}/crypto/camellia/asm \
178 ${LCRYPTO_SRC}/crypto/cast/asm \
179 ${LCRYPTO_SRC}/crypto/chacha/asm \
180 ${LCRYPTO_SRC}/crypto/des/asm \
181 ${LCRYPTO_SRC}/crypto/ec/asm \
182 ${LCRYPTO_SRC}/crypto/md5/asm \
183 ${LCRYPTO_SRC}/crypto/modes/asm \
184 ${LCRYPTO_SRC}/crypto/poly1305/asm \
185 ${LCRYPTO_SRC}/crypto/rc4/asm \
186 ${LCRYPTO_SRC}/crypto/rc5/asm \
187 ${LCRYPTO_SRC}/crypto/ripemd/asm \
188 ${LCRYPTO_SRC}/crypto/sha/asm \
189 ${LCRYPTO_SRC}/crypto/whrlpool/asm \
190 ${LCRYPTO_SRC}/engines/asm
192 #PERLPATH= -I${LCRYPTO_SRC}/crypto/des/asm -I${LCRYPTO_SRC}/crypto/perlasm
198 SRCS+= aes-586.pl aesni-x86.pl vpaes-x86.pl
204 SRCS+= bn-586.pl co-586.pl x86-gf2m.pl x86-mont.pl
216 SRCS+= crypt586.pl des-586.pl
219 SRCS+= ecp_nistz256-x86.pl
228 SRCS+= poly1305-x86.pl
240 SRCS+= sha1-586.pl sha256-586.pl sha512-586.pl
246 SRCS+= e_padlock-x86.pl
248 ASM= ${SRCS:R:S/$/.S/}
252 CLEANFILES= ${ASM} ${SRCS:R:S/$/.s/}
256 ( echo '/* $$'FreeBSD'$$ */' ;\
257 echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
259 env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} -fpic -DPIC ${.IMPSRC:R:S/$/.s/} ;\
260 cat ${.IMPSRC:R:S/$/.s/} ;\
262 env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} ${.IMPSRC:R:S/$/.s/} ;\
263 cat ${.IMPSRC:R:S/$/.s/} ;\
264 echo '#endif' ) > ${.TARGET}
267 .include <bsd.prog.mk>