]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/Makefile.asm
Regen amd64 assembly files for OpenSSL 1.1.1.
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / Makefile.asm
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_aarch64)
10
11 .PATH:  ${LCRYPTO_SRC}/crypto \
12         ${LCRYPTO_SRC}/crypto/aes/asm \
13         ${LCRYPTO_SRC}/crypto/modes/asm \
14         ${LCRYPTO_SRC}/crypto/sha/asm
15
16 PERLPATH=       -I${LCRYPTO_SRC}/crypto/perlasm
17
18 # aes
19 SRCS=   aesv8-armx.pl
20
21 # modes
22 SRCS+=  ghashv8-armx.pl
23
24 # sha
25 SRCS+=  sha1-armv8.pl sha512-armv8.pl
26
27 ASM=    ${SRCS:R:S/$/.S/} sha256-armv8.S
28
29 all:    ${ASM}
30
31 CLEANFILES=     ${ASM} ${SRCS:R:S/$/.s/} sha256-armv8.s
32 .SUFFIXES:      .pl
33
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}
39
40 .pl.S:
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}
45
46 .elif defined(ASM_amd64)
47
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
61
62 # aes
63 SRCS=   aes-x86_64.pl aesni-mb-x86_64.pl aesni-sha1-x86_64.pl \
64         aesni-sha256-x86_64.pl aesni-x86_64.pl bsaes-x86_64.pl \
65         vpaes-x86_64.pl
66
67 # bn
68 SRCS+=  rsaz-avx2.pl rsaz-x86_64.pl x86_64-gf2m.pl x86_64-mont.pl \
69         x86_64-mont5.pl
70
71 # camellia
72 SRCS+=  cmll-x86_64.pl
73
74 # chacha
75 SRCS+=  chacha-x86_64.pl
76
77 # ec
78 SRCS+=  ecp_nistz256-avx2.pl ecp_nistz256-x86_64.pl x25519-x86_64.pl
79
80 # engines
81 SRCS+=  e_padlock-x86_64.pl
82
83 # md5
84 SRCS+=  md5-x86_64.pl
85
86 # modes
87 SRCS+=  aesni-gcm-x86_64.pl ghash-x86_64.pl
88
89 # poly1305
90 SRCS+=  poly1305-x86_64.pl
91
92 # rc4
93 SRCS+=  rc4-md5-x86_64.pl rc4-x86_64.pl
94
95 # sha
96 SRCS+=  keccak1600-avx2.pl keccak1600-avx512.pl keccak1600-avx512vl.pl \
97         keccak1600-x86_64.pl sha1-mb-x86_64.pl sha1-x86_64.pl \
98         sha256-mb-x86_64.pl
99
100 # whrlpool
101 SRCS+=  wp-x86_64.pl
102
103 # cpuid
104 SRCS+=  x86_64cpuid.pl
105
106 SHA_ASM=        sha256-x86_64 sha512-x86_64
107 SHA_SRC=        sha512-x86_64.pl
108 SHA_TMP=        ${SHA_ASM:S/$/.s/}
109
110 ASM=    ${SRCS:R:S/$/.S/} ${SHA_ASM:S/$/.S/}
111
112 all:    ${ASM}
113
114 CLEANFILES=     ${ASM} ${SHA_ASM:S/$/.s/}
115 .SUFFIXES:      .pl
116
117 .pl.S:
118         ( echo '/* $$'FreeBSD'$$ */' ;\
119         echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
120         env CC=cc perl ${.IMPSRC} elf ) > ${.TARGET}
121
122 ${SHA_TMP}: ${SHA_SRC}
123         env CC=cc perl ${.ALLSRC} elf ${.TARGET}
124
125 .for s in ${SHA_ASM}
126 ${s}.S: ${s}.s
127         ( echo '/* $$'FreeBSD'$$ */' ;\
128         echo '/* Do not modify. This file is auto-generated from ${SHA_SRC}. */' ;\
129         cat ${s}.s ) > ${.TARGET}
130 .endfor
131
132 .elif defined(ASM_arm)
133
134 .PATH:  ${LCRYPTO_SRC}/crypto \
135         ${LCRYPTO_SRC}/crypto/aes/asm \
136         ${LCRYPTO_SRC}/crypto/bn/asm \
137         ${LCRYPTO_SRC}/crypto/modes/asm \
138         ${LCRYPTO_SRC}/crypto/sha/asm
139
140 PERLPATH=       -I${LCRYPTO_SRC}/crypto/perlasm
141
142 # aes
143 SRCS=   aesv8-armx.pl bsaes-armv7.pl
144
145 # bn
146 SRCS+=  armv4-mont.pl armv4-gf2m.pl
147
148 # modes
149 SRCS+=  ghash-armv4.pl ghashv8-armx.pl
150
151 # sha
152 SRCS+=  sha1-armv4-large.pl sha256-armv4.pl sha512-armv4.pl
153
154 ASM=    aes-armv4.S ${SRCS:R:S/$/.S/}
155
156 all:    ${ASM}
157
158 CLEANFILES=     ${ASM} ${SRCS:R:S/$/.s/}
159 .SUFFIXES:      .pl
160
161 aes-armv4.S:    aes-armv4.pl
162         ( echo '/* $$'FreeBSD'$$ */' ;\
163         echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
164         env CC=cc perl ${.ALLSRC} elf ) > ${.TARGET}
165
166 .pl.S:
167         env CC=cc perl ${.IMPSRC} elf ${.TARGET:R:S/$/.s/}
168         ( echo '/* $$'FreeBSD'$$ */' ;\
169         echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T:R:S/$/.pl/}. */' ;\
170         cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
171
172 .elif defined(ASM_i386)
173
174 .PATH:  ${LCRYPTO_SRC}/crypto \
175         ${LCRYPTO_SRC}/crypto/aes/asm \
176         ${LCRYPTO_SRC}/crypto/bf/asm \
177         ${LCRYPTO_SRC}/crypto/bn/asm \
178         ${LCRYPTO_SRC}/crypto/camellia/asm \
179         ${LCRYPTO_SRC}/crypto/des/asm \
180         ${LCRYPTO_SRC}/crypto/md5/asm \
181         ${LCRYPTO_SRC}/crypto/modes/asm \
182         ${LCRYPTO_SRC}/crypto/rc4/asm \
183         ${LCRYPTO_SRC}/crypto/rc5/asm \
184         ${LCRYPTO_SRC}/crypto/ripemd/asm \
185         ${LCRYPTO_SRC}/crypto/sha/asm \
186         ${LCRYPTO_SRC}/crypto/whrlpool/asm
187
188 PERLPATH=       -I${LCRYPTO_SRC}/crypto/des/asm -I${LCRYPTO_SRC}/crypto/perlasm
189
190 # aes
191 SRCS=   aes-586.pl aesni-x86.pl vpaes-x86.pl
192
193 # blowfish
194 SRCS+=  bf-586.pl bf-686.pl
195
196 # bn
197 SRCS+=  bn-586.pl co-586.pl x86-gf2m.pl x86-mont.pl
198
199 # camellia
200 SRCS+=  cmll-x86.pl
201
202 # des
203 SRCS+=  crypt586.pl des-586.pl
204
205 # md5
206 SRCS+=  md5-586.pl
207
208 # modes
209 SRCS+=  ghash-x86.pl
210
211 # rc4
212 SRCS+=  rc4-586.pl
213
214 # rc5
215 SRCS+=  rc5-586.pl
216
217 # ripemd
218 SRCS+=  rmd-586.pl
219
220 # sha
221 SRCS+=  sha1-586.pl sha256-586.pl sha512-586.pl
222
223 # whrlpool
224 SRCS+=  wp-mmx.pl
225
226 # cpuid
227 SRCS+=  x86cpuid.pl
228
229 ASM=    ${SRCS:R:S/$/.S/}
230
231 all:    ${ASM}
232
233 CLEANFILES=     ${ASM}
234 .SUFFIXES:      .pl
235
236 .pl.S:
237         ( echo '/* $$'FreeBSD'$$ */' ;\
238         echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
239         echo '#ifdef PIC' ;\
240         env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} -fpic -DPIC ;\
241         echo '#else' ;\
242         env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} ;\
243         echo '#endif') |\
244         sed -E 's|(\.file[[:blank:]]+)".*"|\1"${.TARGET}"|' > ${.TARGET}
245 .endif
246
247 .include <bsd.prog.mk>