xref: /freebsd/lib/libmd/Makefile (revision d92e987421001c365216b039f8c3303939c195f7)
101a9c323SSean BrunoSHLIBDIR?= /lib
201a9c323SSean Bruno
3c91575ceSAlex Richardson.include <src.opts.mk>
471bf1c4cSAndrew Turner.include <bsd.compiler.mk>
5c91575ceSAlex Richardson
6a7b5a3d4SEmmanuel VadotPACKAGE=	runtime
7c9502b53SPoul-Henning KampLIB=	md
8e7a629c8SKyle EvansSHLIB_MAJOR= 7
99b9c3018SDavid E. O'BrienSRCS=	md4c.c md5c.c md4hl.c md5hl.c \
10d00ed299SGarrett Wollman	rmd160c.c rmd160hl.c \
11186c183cSColin Percival	sha0c.c sha0hl.c sha1c.c sha1hl.c \
128ff3cdd1SConrad Meyer	sha224hl.c sha256c.c sha256hl.c \
137a3f5d11SAllan Jude	sha384hl.c \
142768d705SDag-Erling Smørgrav	sha512c.c sha512hl.c sha512t224hl.c sha512t256hl.c \
15b468a9ffSAllan Jude	skein.c skein_block.c \
16b468a9ffSAllan Jude	skein256hl.c skein512hl.c skein1024hl.c
178ff3cdd1SConrad MeyerINCS=	md4.h md5.h ripemd.h sha.h sha224.h sha256.h sha384.h sha512.h \
188ff3cdd1SConrad Meyer	sha512t.h skein.h skein_port.h skein_freebsd.h skein_iv.h
19d05257b0SRodney W. Grimes
2025316863SMark JohnstonWARNS?=	0
21daaf5759SEd Schouten
22e25527f7SKyle EvansVERSION_DEF=	${SRCTOP}/lib/libc/Versions.def
23e25527f7SKyle EvansSYMBOL_MAPS=	${.CURDIR}/Symbol.map
24e25527f7SKyle Evans
25b468a9ffSAllan JudeMAN+=	md4.3 md5.3 ripemd.3 sha.3 sha256.3 sha512.3 skein.3
2605f65b29SPoul-Henning KampMLINKS+=md4.3 MD4Init.3 md4.3 MD4Update.3 md4.3 MD4Final.3
278a24546cSPoul-Henning KampMLINKS+=md4.3 MD4End.3  md4.3 MD4File.3   md4.3 MD4FileChunk.3
288a24546cSPoul-Henning KampMLINKS+=md4.3 MD4Data.3
2905f65b29SPoul-Henning KampMLINKS+=md5.3 MD5Init.3 md5.3 MD5Update.3 md5.3 MD5Final.3
308a24546cSPoul-Henning KampMLINKS+=md5.3 MD5End.3  md5.3 MD5File.3   md5.3 MD5FileChunk.3
318a24546cSPoul-Henning KampMLINKS+=md5.3 MD5Data.3
325365c4e7SAndrey A. ChernovMLINKS+=ripemd.3 RIPEMD160_Init.3  ripemd.3 RIPEMD160_Update.3
335365c4e7SAndrey A. ChernovMLINKS+=ripemd.3 RIPEMD160_Final.3 ripemd.3 RIPEMD160_Data.3
345365c4e7SAndrey A. ChernovMLINKS+=ripemd.3 RIPEMD160_End.3   ripemd.3 RIPEMD160_File.3
358a24546cSPoul-Henning KampMLINKS+=ripemd.3 RIPEMD160_FileChunk.3
365365c4e7SAndrey A. ChernovMLINKS+=sha.3 SHA_Init.3  sha.3 SHA_Update.3  sha.3 SHA_Final.3
378a24546cSPoul-Henning KampMLINKS+=sha.3 SHA_End.3   sha.3 SHA_File.3    sha.3 SHA_FileChunk.3
388a24546cSPoul-Henning KampMLINKS+=sha.3 SHA_Data.3
395365c4e7SAndrey A. ChernovMLINKS+=sha.3 SHA1_Init.3 sha.3 SHA1_Update.3 sha.3 SHA1_Final.3
408a24546cSPoul-Henning KampMLINKS+=sha.3 SHA1_End.3  sha.3 SHA1_File.3   sha.3 SHA1_FileChunk.3
418a24546cSPoul-Henning KampMLINKS+=sha.3 SHA1_Data.3
428ff3cdd1SConrad MeyerMLINKS+=sha256.3 SHA224_Init.3  sha256.3 SHA224_Update.3
438ff3cdd1SConrad MeyerMLINKS+=sha256.3 SHA224_Final.3 sha256.3 SHA224_End.3
448ff3cdd1SConrad MeyerMLINKS+=sha256.3 SHA224_File.3  sha256.3 SHA224_FileChunk.3
458ff3cdd1SConrad MeyerMLINKS+=sha256.3 SHA224_Data.3
46186c183cSColin PercivalMLINKS+=sha256.3 SHA256_Init.3  sha256.3 SHA256_Update.3
47186c183cSColin PercivalMLINKS+=sha256.3 SHA256_Final.3 sha256.3 SHA256_End.3
48186c183cSColin PercivalMLINKS+=sha256.3 SHA256_File.3  sha256.3 SHA256_FileChunk.3
49186c183cSColin PercivalMLINKS+=sha256.3 SHA256_Data.3
507a3f5d11SAllan JudeMLINKS+=sha512.3 SHA384_Init.3  sha512.3 SHA384_Update.3
517a3f5d11SAllan JudeMLINKS+=sha512.3 SHA384_Final.3 sha512.3 SHA384_End.3
527a3f5d11SAllan JudeMLINKS+=sha512.3 SHA384_File.3  sha512.3 SHA384_FileChunk.3
537a3f5d11SAllan JudeMLINKS+=sha512.3 SHA384_Data.3  sha512.3 sha384.3
543b50f6bfSMark MurrayMLINKS+=sha512.3 SHA512_Init.3  sha512.3 SHA512_Update.3
553b50f6bfSMark MurrayMLINKS+=sha512.3 SHA512_Final.3 sha512.3 SHA512_End.3
563b50f6bfSMark MurrayMLINKS+=sha512.3 SHA512_File.3  sha512.3 SHA512_FileChunk.3
573b50f6bfSMark MurrayMLINKS+=sha512.3 SHA512_Data.3
582768d705SDag-Erling SmørgravMLINKS+=sha512.3 SHA512_224_Init.3  sha512.3 SHA512_224_Update.3
592768d705SDag-Erling SmørgravMLINKS+=sha512.3 SHA512_224_Final.3 sha512.3 SHA512_224_End.3
602768d705SDag-Erling SmørgravMLINKS+=sha512.3 SHA512_224_File.3  sha512.3 SHA512_224_FileChunk.3
612768d705SDag-Erling SmørgravMLINKS+=sha512.3 SHA512_224_Data.3
621780e407SAllan JudeMLINKS+=sha512.3 SHA512_256_Init.3  sha512.3 SHA512_256_Update.3
631780e407SAllan JudeMLINKS+=sha512.3 SHA512_256_Final.3 sha512.3 SHA512_256_End.3
641780e407SAllan JudeMLINKS+=sha512.3 SHA512_256_File.3  sha512.3 SHA512_256_FileChunk.3
651780e407SAllan JudeMLINKS+=sha512.3 SHA512_256_Data.3
66b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN256_Init.3  skein.3 SKEIN256_Update.3
67b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN256_Final.3 skein.3 SKEIN256_End.3
68b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN256_File.3  skein.3 SKEIN256_FileChunk.3
69b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN256_Data.3  skein.3 skein256.3
70b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN512_Init.3  skein.3 SKEIN512_Update.3
71b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN512_Final.3 skein.3 SKEIN512_End.3
72b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN512_File.3  skein.3 SKEIN512_FileChunk.3
73b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN512_Data.3  skein.3 skein512.3
74b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN1024_Init.3  skein.3 SKEIN1024_Update.3
75b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN1024_Final.3 skein.3 SKEIN1024_End.3
76b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN1024_File.3  skein.3 SKEIN1024_FileChunk.3
77b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN1024_Data.3  skein.3 skein1024.3
78b468a9ffSAllan Jude
79c177a86bSGarrett WollmanCLEANFILES+=	md[245]hl.c md[245].ref md[245].3 mddriver \
80d00ed299SGarrett Wollman		rmd160.ref rmd160hl.c rmddriver \
81186c183cSColin Percival		sha0.ref sha0hl.c sha1.ref sha1hl.c shadriver \
828ff3cdd1SConrad Meyer		sha224.ref sha256.ref sha224hl.c sha256hl.c \
838ff3cdd1SConrad Meyer		sha384hl.c sha384.ref \
842768d705SDag-Erling Smørgrav		sha512.ref sha512hl.c \
852768d705SDag-Erling Smørgrav		sha512t224.ref sha512t224hl.c \
862768d705SDag-Erling Smørgrav		sha512t256.ref sha512t256hl.c \
87b468a9ffSAllan Jude		skein256hl.c skein512hl.c skein1024hl.c \
88b468a9ffSAllan Jude		skein256.ref skein512.ref skein1024.ref \
89b468a9ffSAllan Jude		skeindriver
903b50f6bfSMark Murray
91a1b9cad5SBryan Drewery# Need src tree sys/md5.h for MD5FileChunk prototype on older systems.
92a1b9cad5SBryan DrewerySRCS+=		sys/md5.h
93a1b9cad5SBryan DreweryCLEANDIRS=	sys
94a1b9cad5SBryan DreweryCFLAGS+=	-I.
95a1b9cad5SBryan Drewerysys/md5.h: ${SRCTOP}/sys/${.TARGET} .NOMETA
96a1b9cad5SBryan Drewery	ln -sf ${.ALLSRC} ${.TARGET}
97a1b9cad5SBryan Drewery
982dd0a89cSThomas Quinot# Define WEAK_REFS to provide weak aliases for libmd symbols
992dd0a89cSThomas Quinot#
1002dd0a89cSThomas Quinot# Note that the same sources are also used internally by libcrypt,
1012dd0a89cSThomas Quinot# in which case:
1022dd0a89cSThomas Quinot#   * macros are used to rename symbols to libcrypt internal names
1032dd0a89cSThomas Quinot#   * no weak aliases are generated
10449233baeSEnji CooperCFLAGS+= -I${.CURDIR} -I${SRCTOP}/sys/crypto/sha2
10549233baeSEnji CooperCFLAGS+= -I${SRCTOP}/sys/crypto/skein
1063a6dcb1fSCraig RodriguesCFLAGS+= -DWEAK_REFS
107929b476aSAllan Jude# unroll the 256 and 512 loops, half unroll the 1024
108310e81aeSEd MasteCFLAGS.skein_block.c+= -DSKEIN_LOOP=995
10949233baeSEnji Cooper.PATH: ${.CURDIR}/${MACHINE_ARCH} ${SRCTOP}/sys/crypto/sha2
11049233baeSEnji Cooper.PATH: ${SRCTOP}/sys/crypto/skein ${SRCTOP}/sys/crypto/skein/${MACHINE_ARCH}
11173a9b273SRobert Clausecker.PATH: ${SRCTOP}/sys/crypto
112c9502b53SPoul-Henning Kamp
113078018e0SAlex RichardsonUSE_ASM_SOURCES?=1
11420adba8bSGleb Popov.if defined(BOOTSTRAPPING) || ${MK_MACHDEP_OPTIMIZATIONS} == no
115078018e0SAlex Richardson# Don't build ASM sources when bootstrapping to avoid toolchain dependencies
116078018e0SAlex RichardsonUSE_ASM_SOURCES:=0
117078018e0SAlex Richardson.endif
118078018e0SAlex Richardson
119078018e0SAlex Richardson.if ${USE_ASM_SOURCES} != 0
120*d92e9874SRobert Clausecker.if exists(${MACHINE_ARCH}/md5block.S)
121*d92e9874SRobert ClauseckerSRCS+=	md5block.S
122*d92e9874SRobert ClauseckerCFLAGS+= -DMD5_ASM
123*d92e9874SRobert Clausecker.if exists(${MACHINE_ARCH}/md5dispatch.c)
124*d92e9874SRobert ClauseckerSRCS+=  md5dispatch.c
125*d92e9874SRobert Clausecker.endif
126*d92e9874SRobert Clausecker.endif
127181a0441SRobert Clausecker.if exists(${MACHINE_ARCH}/sha1block.S)
128181a0441SRobert ClauseckerSRCS+=	sha1block.S
129152e60f2SDimitry AndricCFLAGS+= -DSHA1_ASM
1308b4684afSRobert Clausecker.if exists(${MACHINE_ARCH}/sha1dispatch.c)
1318b4684afSRobert ClauseckerSRCS+=  sha1dispatch.c
1328b4684afSRobert Clausecker.endif
133c177a86bSGarrett Wollman.endif
134d00ed299SGarrett Wollman.if exists(${MACHINE_ARCH}/rmd160.S)
135d00ed299SGarrett WollmanSRCS+=	rmd160.S
136152e60f2SDimitry AndricCFLAGS+= -DRMD160_ASM
137152e60f2SDimitry Andric.endif
13836972ee3SEd Maste.if exists(${MACHINE_ARCH}/skein_block_asm.S)
13936972ee3SEd Maste# Fully unroll all loops in the assembly optimized version
14036972ee3SEd MasteACFLAGS+= -DSKEIN_LOOP=0
14136972ee3SEd MasteSRCS+= skein_block_asm.S
14236972ee3SEd MasteCFLAGS+= -DSKEIN_ASM -DSKEIN_USE_ASM=1792 # list of block functions to replace with assembly: 256+512+1024 = 1792
143da6e5efeSEd Maste# 20201002 Add explict Makefile dependency for r366344 (reenabled assembly
144da6e5efeSEd Maste# optimized version). SKEIN_USE_ASM determines which routines should come from
145da6e5efeSEd Maste# the assembly vs C versions, and skein_block needs to be rebuilt if it changes.
146da6e5efeSEd Masteskein_block.o skein_block.pico: Makefile
14736972ee3SEd Maste.endif
148181a0441SRobert Clausecker.if exists(${MACHINE_ARCH}/rmd160.S) || exists(${MACHINE_ARCH}/skein_block_asm.S)
149152e60f2SDimitry AndricACFLAGS+= -DELF -Wa,--noexecstack
150d00ed299SGarrett Wollman.endif
15169d8dc20SAndrew Turner.if ${MACHINE_CPUARCH} == "aarch64"
15269d8dc20SAndrew TurnerSRCS+=	sha256c_arm64.c
153a9472032SAndrew TurnerCFLAGS+= -DARM64_SHA2
15469d8dc20SAndrew TurnerCFLAGS.sha256c_arm64.c+= -march=armv8-a+crypto
15571bf1c4cSAndrew Turner.if ${COMPILER_FEATURES:Maarch64-sha512}
15671bf1c4cSAndrew TurnerSRCS+=	sha512c_arm64.c
15771bf1c4cSAndrew TurnerCFLAGS+= -DARM64_SHA512
15871bf1c4cSAndrew TurnerCFLAGS.sha512c_arm64.c+= -march=armv8.2-a+sha3
15971bf1c4cSAndrew Turner.endif # aarch64-sha512
16069d8dc20SAndrew Turner.endif
161078018e0SAlex Richardson.endif # ${USE_ASM_SOURCES} != 0
162c177a86bSGarrett Wollman
163c9502b53SPoul-Henning Kampmd4hl.c: mdXhl.c
164c177a86bSGarrett Wollman	(echo '#define LENGTH 16'; \
165c177a86bSGarrett Wollman		sed -e 's/mdX/md4/g' -e 's/MDX/MD4/g' ${.ALLSRC}) > ${.TARGET}
166c9502b53SPoul-Henning Kamp
167c9502b53SPoul-Henning Kampmd5hl.c: mdXhl.c
168c177a86bSGarrett Wollman	(echo '#define LENGTH 16'; \
169c177a86bSGarrett Wollman		sed -e 's/mdX/md5/g' -e 's/MDX/MD5/g' ${.ALLSRC}) > ${.TARGET}
170c177a86bSGarrett Wollman
171c177a86bSGarrett Wollmansha0hl.c: mdXhl.c
172c177a86bSGarrett Wollman	(echo '#define LENGTH 20'; \
173c177a86bSGarrett Wollman		sed -e 's/mdX/sha/g' -e 's/MDX/SHA_/g' -e 's/SHA__/SHA_/g' \
174c177a86bSGarrett Wollman		${.ALLSRC}) > ${.TARGET}
175c177a86bSGarrett Wollman
176c177a86bSGarrett Wollmansha1hl.c: mdXhl.c
177c177a86bSGarrett Wollman	(echo '#define LENGTH 20'; \
178c177a86bSGarrett Wollman		sed -e 's/mdX/sha/g' -e 's/MDX/SHA1_/g' -e 's/SHA1__/SHA1_/g' \
179c177a86bSGarrett Wollman		${.ALLSRC}) > ${.TARGET}
180c9502b53SPoul-Henning Kamp
1818ff3cdd1SConrad Meyersha224hl.c: mdXhl.c
1828ff3cdd1SConrad Meyer	(echo '#define LENGTH 28'; \
1838ff3cdd1SConrad Meyer		sed -e 's/mdX/sha224/g' -e 's/MDX/SHA224_/g'	\
1848ff3cdd1SConrad Meyer			-e  's/SHA224__/SHA224_/g' \
1858ff3cdd1SConrad Meyer		${.ALLSRC}) > ${.TARGET}
1868ff3cdd1SConrad Meyer
187186c183cSColin Percivalsha256hl.c: mdXhl.c
188186c183cSColin Percival	(echo '#define LENGTH 32'; \
189186c183cSColin Percival		sed -e 's/mdX/sha256/g' -e 's/MDX/SHA256_/g'	\
190186c183cSColin Percival			-e  's/SHA256__/SHA256_/g' \
191186c183cSColin Percival		${.ALLSRC}) > ${.TARGET}
192186c183cSColin Percival
1937a3f5d11SAllan Judesha384hl.c: mdXhl.c
1947a3f5d11SAllan Jude	(echo '#define LENGTH 48'; \
1957a3f5d11SAllan Jude		sed -e 's/mdX/sha384/g' -e 's/MDX/SHA384_/g'	\
1967a3f5d11SAllan Jude			-e  's/SHA384__/SHA384_/g' \
1977a3f5d11SAllan Jude		${.ALLSRC}) > ${.TARGET}
1987a3f5d11SAllan Jude
1993b50f6bfSMark Murraysha512hl.c: mdXhl.c
2003b50f6bfSMark Murray	(echo '#define LENGTH 64'; \
2013b50f6bfSMark Murray		sed -e 's/mdX/sha512/g' -e 's/MDX/SHA512_/g'	\
2023b50f6bfSMark Murray			-e  's/SHA512__/SHA512_/g' \
2033b50f6bfSMark Murray		${.ALLSRC}) > ${.TARGET}
2043b50f6bfSMark Murray
2052768d705SDag-Erling Smørgravsha512t224hl.c: mdXhl.c
2062768d705SDag-Erling Smørgrav	(echo '#define LENGTH 28'; \
2072768d705SDag-Erling Smørgrav		sed -e 's/mdX/sha512t/g' -e 's/MDX/SHA512_224_/g'	\
2082768d705SDag-Erling Smørgrav			-e  's/SHA512_224__/SHA512_224_/g' \
2092768d705SDag-Erling Smørgrav			-e 's/SHA512_224_CTX/SHA512_CTX/g' \
2102768d705SDag-Erling Smørgrav		${.ALLSRC}) > ${.TARGET}
2112768d705SDag-Erling Smørgrav
2122768d705SDag-Erling Smørgravsha512t256hl.c: mdXhl.c
2131780e407SAllan Jude	(echo '#define LENGTH 32'; \
2141780e407SAllan Jude		sed -e 's/mdX/sha512t/g' -e 's/MDX/SHA512_256_/g'	\
2151780e407SAllan Jude			-e  's/SHA512_256__/SHA512_256_/g' \
2161780e407SAllan Jude			-e 's/SHA512_256_CTX/SHA512_CTX/g' \
2171780e407SAllan Jude		${.ALLSRC}) > ${.TARGET}
2181780e407SAllan Jude
219d00ed299SGarrett Wollmanrmd160hl.c: mdXhl.c
220d00ed299SGarrett Wollman	(echo '#define LENGTH 20'; \
221d00ed299SGarrett Wollman		sed -e 's/mdX/ripemd/g' -e 's/MDX/RIPEMD160_/g' \
222d00ed299SGarrett Wollman			-e 's/RIPEMD160__/RIPEMD160_/g' \
223d00ed299SGarrett Wollman			${.ALLSRC}) > ${.TARGET}
224d00ed299SGarrett Wollman
225b468a9ffSAllan Judeskein256hl.c: mdXhl.c
226b468a9ffSAllan Jude	(echo '#define LENGTH 32'; \
227b468a9ffSAllan Jude		sed -e 's/mdX/skein/g' -e 's/MDX/SKEIN256_/g'	\
228b468a9ffSAllan Jude			-e  's/SKEIN256__/SKEIN256_/g' \
229b468a9ffSAllan Jude		${.ALLSRC}) > ${.TARGET}
230b468a9ffSAllan Jude
231b468a9ffSAllan Judeskein512hl.c: mdXhl.c
232b468a9ffSAllan Jude	(echo '#define LENGTH 64'; \
233b468a9ffSAllan Jude		sed -e 's/mdX/skein/g' -e 's/MDX/SKEIN512_/g'	\
234b468a9ffSAllan Jude			-e  's/SKEIN512__/SKEIN512_/g' \
235b468a9ffSAllan Jude		${.ALLSRC}) > ${.TARGET}
236b468a9ffSAllan Jude
237b468a9ffSAllan Judeskein1024hl.c: mdXhl.c
238b468a9ffSAllan Jude	(echo '#define LENGTH 128'; \
239b468a9ffSAllan Jude		sed -e 's/mdX/skein/g' -e 's/MDX/SKEIN1024_/g'	\
240b468a9ffSAllan Jude			-e  's/SKEIN1024__/SKEIN1024_/g' \
241b468a9ffSAllan Jude		${.ALLSRC}) > ${.TARGET}
242b468a9ffSAllan Jude
243b468a9ffSAllan Jude
24411c456c0SRuslan Ermilov.for i in 2 4 5
24511c456c0SRuslan Ermilovmd${i}.3: ${.CURDIR}/mdX.3
24611c456c0SRuslan Ermilov	sed -e "s/mdX/md${i}/g" -e "s/MDX/MD${i}/g" ${.ALLSRC} > ${.TARGET}
24711c456c0SRuslan Ermilov	cat ${.CURDIR}/md${i}.copyright >> ${.TARGET}
24811c456c0SRuslan Ermilov.endfor
249c9502b53SPoul-Henning Kamp
250e0c51286SKyle EvansHAS_TESTS=
251e0c51286SKyle EvansSUBDIR.${MK_TESTS}+=	tests
252c9502b53SPoul-Henning Kamp
253c9502b53SPoul-Henning Kamp.include <bsd.lib.mk>
254