195967Speter# $FreeBSD: stable/11/secure/lib/libcrypto/Makefile.asm 325333 2017-11-02 18:16:01Z jkim $
2299389Sjkim# Use this to help generate the asm *.S files after an import.  It is not
395967Speter# perfect by any means, but does what is needed.
4299389Sjkim# Do a 'make -f Makefile.asm all' and it will generate *.S.  Move them
5299389Sjkim# to the arch subdir, and correct any exposed paths and $ FreeBSD $ tags.
695967Speter
795967Speter.include "Makefile.inc"
895967Speter
9325333Sjkim.if defined(ASM_aarch64)
10106538Sobrien
11238405Sjkim.PATH:	${LCRYPTO_SRC}/crypto \
12238405Sjkim	${LCRYPTO_SRC}/crypto/aes/asm \
13325333Sjkim	${LCRYPTO_SRC}/crypto/modes/asm \
14325333Sjkim	${LCRYPTO_SRC}/crypto/sha/asm
15325333Sjkim
16325333SjkimPERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
17325333Sjkim
18325333Sjkim# aes
19325333SjkimSRCS=	aesv8-armx.pl
20325333Sjkim
21325333Sjkim# modes
22325333SjkimSRCS+=	ghashv8-armx.pl
23325333Sjkim
24325333Sjkim# sha
25325333SjkimSRCS+=	sha1-armv8.pl sha512-armv8.pl
26325333Sjkim
27325333SjkimASM=	${SRCS:R:S/$/.S/} sha256-armv8.S
28325333Sjkim
29325333Sjkimall:	${ASM}
30325333Sjkim
31325333SjkimCLEANFILES=	${ASM} ${SRCS:R:S/$/.s/} sha256-armv8.s
32325333Sjkim.SUFFIXES:	.pl
33325333Sjkim
34325333Sjkimsha256-armv8.S:	sha512-armv8.pl
35325333Sjkim	env CC=cc perl ${.ALLSRC} 64 ${.TARGET:R:S/$/.s/}
36325333Sjkim	( echo '/* $$'FreeBSD'$$ */' ;\
37325333Sjkim	echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T:R:S/$/.pl/}. */' ;\
38325333Sjkim	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
39325333Sjkim
40325333Sjkim.pl.S:
41325333Sjkim	env CC=cc perl ${.IMPSRC} 64 ${.TARGET:R:S/$/.s/}
42325333Sjkim	( echo '/* $$'FreeBSD'$$ */' ;\
43325333Sjkim	echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T:R:S/$/.pl/}. */' ;\
44325333Sjkim	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
45325333Sjkim
46325333Sjkim.elif defined(ASM_amd64)
47325333Sjkim
48325333Sjkim.PATH:	${LCRYPTO_SRC}/crypto \
49325333Sjkim	${LCRYPTO_SRC}/crypto/aes/asm \
50238405Sjkim	${LCRYPTO_SRC}/crypto/bn/asm \
51238405Sjkim	${LCRYPTO_SRC}/crypto/camellia/asm \
52290207Sjkim	${LCRYPTO_SRC}/crypto/ec/asm \
53238405Sjkim	${LCRYPTO_SRC}/crypto/md5/asm \
54238405Sjkim	${LCRYPTO_SRC}/crypto/modes/asm \
55238405Sjkim	${LCRYPTO_SRC}/crypto/rc4/asm \
56238405Sjkim	${LCRYPTO_SRC}/crypto/sha/asm \
57238405Sjkim	${LCRYPTO_SRC}/crypto/whrlpool/asm
58238405Sjkim
59238405Sjkim# aes
60290207SjkimSRCS=	aes-x86_64.pl aesni-mb-x86_64.pl aesni-sha1-x86_64.pl \
61290207Sjkim	aesni-sha256-x86_64.pl aesni-x86_64.pl bsaes-x86_64.pl \
62238405Sjkim	vpaes-x86_64.pl
63238405Sjkim
64238405Sjkim# bn
65290207SjkimSRCS+=	rsaz-avx2.pl rsaz-x86_64.pl x86_64-gf2m.pl x86_64-mont.pl \
66290207Sjkim	x86_64-mont5.pl
67238405Sjkim
68238405Sjkim# camellia
69238405SjkimSRCS+=	cmll-x86_64.pl
70238405Sjkim
71290207Sjkim# ec
72290207SjkimSRCS+=	ecp_nistz256-x86_64.pl
73290207Sjkim
74238405Sjkim# md5
75238405SjkimSRCS+=	md5-x86_64.pl
76238405Sjkim
77238405Sjkim# modes
78290207SjkimSRCS+=	aesni-gcm-x86_64.pl ghash-x86_64.pl
79238405Sjkim
80238405Sjkim# rc4
81238405SjkimSRCS+=	rc4-md5-x86_64.pl rc4-x86_64.pl
82238405Sjkim
83238405Sjkim# sha
84299479SjkimSRCS+=	sha1-mb-x86_64.pl sha1-x86_64.pl sha256-mb-x86_64.pl
85238405Sjkim
86238405Sjkim# whrlpool
87238405SjkimSRCS+=	wp-x86_64.pl
88238405Sjkim
89299479Sjkim# cpuid
90299479SjkimSRCS+=	x86_64cpuid.pl
91238405Sjkim
92299479SjkimSHA_ASM=	sha256-x86_64 sha512-x86_64
93299479SjkimSHA_SRC=	sha512-x86_64.pl
94299479SjkimSHA_TMP=	${SHA_ASM:S/$/.s/}
95299479Sjkim
96299479SjkimASM=	${SRCS:R:S/$/.S/} ${SHA_ASM:S/$/.S/}
97299479Sjkim
98238405Sjkimall:	${ASM}
99238405Sjkim
100299479SjkimCLEANFILES=	${ASM} ${SHA_ASM:S/$/.s/}
101299479Sjkim.SUFFIXES:	.pl
102238405Sjkim
103299479Sjkim.pl.S:
104305153Sjkim	( echo '/* $$'FreeBSD'$$ */' ;\
105305153Sjkim	echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
106299480Sjkim	env CC=cc perl ${.IMPSRC} elf ) > ${.TARGET}
107238405Sjkim
108299479Sjkim${SHA_TMP}: ${SHA_SRC}
109299480Sjkim	env CC=cc perl ${.ALLSRC} elf ${.TARGET}
110299479Sjkim
111299479Sjkim.for s in ${SHA_ASM}
112299479Sjkim${s}.S: ${s}.s
113305153Sjkim	( echo '/* $$'FreeBSD'$$ */' ;\
114305153Sjkim	echo '/* Do not modify. This file is auto-generated from ${SHA_SRC}. */' ;\
115299479Sjkim	cat ${s}.s ) > ${.TARGET}
116299479Sjkim.endfor
117238405Sjkim
118305152Sjkim.elif defined(ASM_arm)
119305152Sjkim
120305152Sjkim.PATH:	${LCRYPTO_SRC}/crypto \
121305152Sjkim	${LCRYPTO_SRC}/crypto/aes/asm \
122305152Sjkim	${LCRYPTO_SRC}/crypto/bn/asm \
123305152Sjkim	${LCRYPTO_SRC}/crypto/modes/asm \
124305152Sjkim	${LCRYPTO_SRC}/crypto/sha/asm
125305152Sjkim
126305152SjkimPERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
127305152Sjkim
128305152Sjkim# aes
129305152SjkimSRCS=	aesv8-armx.pl bsaes-armv7.pl
130305152Sjkim
131305152Sjkim# bn
132305152SjkimSRCS+=	armv4-mont.pl armv4-gf2m.pl
133305152Sjkim
134305152Sjkim# modes
135305152SjkimSRCS+=	ghash-armv4.pl ghashv8-armx.pl
136305152Sjkim
137305152Sjkim# sha
138305152SjkimSRCS+=	sha1-armv4-large.pl sha256-armv4.pl sha512-armv4.pl
139305152Sjkim
140305152SjkimASM=	aes-armv4.S ${SRCS:R:S/$/.S/}
141305152Sjkim
142305152Sjkimall:	${ASM}
143305152Sjkim
144305152SjkimCLEANFILES=	${ASM} ${SRCS:R:S/$/.s/}
145305152Sjkim.SUFFIXES:	.pl
146305152Sjkim
147305152Sjkimaes-armv4.S:	aes-armv4.pl
148305153Sjkim	( echo '/* $$'FreeBSD'$$ */' ;\
149305153Sjkim	echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\
150305152Sjkim	env CC=cc perl ${.ALLSRC} elf ) > ${.TARGET}
151305152Sjkim
152305152Sjkim.pl.S:
153305152Sjkim	env CC=cc perl ${.IMPSRC} elf ${.TARGET:R:S/$/.s/}
154305153Sjkim	( echo '/* $$'FreeBSD'$$ */' ;\
155305153Sjkim	echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T:R:S/$/.pl/}. */' ;\
156305152Sjkim	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
157305152Sjkim
158305150Sjkim.elif defined(ASM_i386)
159238405Sjkim
160238405Sjkim.PATH:	${LCRYPTO_SRC}/crypto \
161238405Sjkim	${LCRYPTO_SRC}/crypto/aes/asm \
162238405Sjkim	${LCRYPTO_SRC}/crypto/bf/asm \
163238405Sjkim	${LCRYPTO_SRC}/crypto/bn/asm \
164238405Sjkim	${LCRYPTO_SRC}/crypto/camellia/asm \
165238405Sjkim	${LCRYPTO_SRC}/crypto/des/asm \
166238405Sjkim	${LCRYPTO_SRC}/crypto/md5/asm \
167238405Sjkim	${LCRYPTO_SRC}/crypto/modes/asm \
168238405Sjkim	${LCRYPTO_SRC}/crypto/rc4/asm \
169238405Sjkim	${LCRYPTO_SRC}/crypto/rc5/asm \
170238405Sjkim	${LCRYPTO_SRC}/crypto/ripemd/asm \
171238405Sjkim	${LCRYPTO_SRC}/crypto/sha/asm \
172238405Sjkim	${LCRYPTO_SRC}/crypto/whrlpool/asm
173238405Sjkim
174142429SnectarPERLPATH=	-I${LCRYPTO_SRC}/crypto/des/asm -I${LCRYPTO_SRC}/crypto/perlasm
17595967Speter
176238405Sjkim# aes
177238405SjkimSRCS=	aes-586.pl aesni-x86.pl vpaes-x86.pl
178238405Sjkim
17995967Speter# blowfish
180238405SjkimSRCS+=	bf-586.pl bf-686.pl
18195967Speter
18295967Speter# bn
183238405SjkimSRCS+=	bn-586.pl co-586.pl x86-gf2m.pl x86-mont.pl
18495967Speter
185238405Sjkim# camellia
186238405SjkimSRCS+=	cmll-x86.pl
187238405Sjkim
18895967Speter# des
189238405SjkimSRCS+=	crypt586.pl des-586.pl
19095967Speter
19195967Speter# md5
19295967SpeterSRCS+=	md5-586.pl
19395967Speter
194238405Sjkim# modes
195238405SjkimSRCS+=	ghash-x86.pl
196238405Sjkim
19795967Speter# rc4
19895967SpeterSRCS+=	rc4-586.pl
19995967Speter
20095967Speter# rc5
20195967SpeterSRCS+=	rc5-586.pl
20295967Speter
20395967Speter# ripemd
20495967SpeterSRCS+=	rmd-586.pl
20595967Speter
20695967Speter# sha
207238405SjkimSRCS+=	sha1-586.pl sha256-586.pl sha512-586.pl
20895967Speter
209238405Sjkim# whrlpool
210238405SjkimSRCS+=	wp-mmx.pl
211238405Sjkim
212238405Sjkim# cpuid
213238405SjkimSRCS+=	x86cpuid.pl
214238405Sjkim
215299479SjkimASM=	${SRCS:R:S/$/.S/}
21695967Speter
21795967Speterall:	${ASM}
21895967Speter
219299479SjkimCLEANFILES=	${ASM}
220238405Sjkim.SUFFIXES:	.pl
22195967Speter
222299389Sjkim.pl.S:
223305153Sjkim	( echo '/* $$'FreeBSD'$$ */' ;\
224305153Sjkim	echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\
225299389Sjkim	echo '#ifdef PIC' ;\
226299480Sjkim	env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} -fpic -DPIC ;\
227299389Sjkim	echo '#else' ;\
228299480Sjkim	env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} ;\
229299389Sjkim	echo '#endif') |\
230299389Sjkim	sed -E 's|(\.file[[:blank:]]+)".*"|\1"${.TARGET}"|' > ${.TARGET}
231238405Sjkim.endif
23295967Speter
23395967Speter.include <bsd.prog.mk>
234