1# Use this to help generate the asm *.S files after an import. It is not 2# perfect by any means, but does what is needed. 3# Do a 'make -f Makefile.asm all' and it will generate *.S. Move them 4# to the arch subdir, and correct any exposed paths. 5 6.include "Makefile.inc" 7 8.if defined(ASM_aarch64) 9 10.PATH: ${LCRYPTO_SRC}/crypto \ 11 ${LCRYPTO_SRC}/crypto/aes/asm \ 12 ${LCRYPTO_SRC}/crypto/bn/asm \ 13 ${LCRYPTO_SRC}/crypto/chacha/asm \ 14 ${LCRYPTO_SRC}/crypto/ec/asm \ 15 ${LCRYPTO_SRC}/crypto/md5/asm \ 16 ${LCRYPTO_SRC}/crypto/modes/asm \ 17 ${LCRYPTO_SRC}/crypto/poly1305/asm \ 18 ${LCRYPTO_SRC}/crypto/sha/asm \ 19 ${LCRYPTO_SRC}/crypto/sm3/asm \ 20 ${LCRYPTO_SRC}/crypto/sm4/asm 21 22PERLPATH= -I${LCRYPTO_SRC}/crypto/perlasm 23 24# cpuid 25SRCS= arm64cpuid.pl 26 27# aes 28SRCS+= aesv8-armx.pl bsaes-armv8.pl vpaes-armv8.pl 29 30# bn 31SRCS+= armv8-mont.pl 32 33# chacha 34SRCS+= chacha-armv8.pl chacha-armv8-sve.pl 35 36# ec 37SRCS+= ecp_nistz256-armv8.pl ecp_sm2p256-armv8.pl 38 39# md5 40SRCS+= md5-aarch64.pl 41 42# modes 43SRCS+= ghashv8-armx.pl aes-gcm-armv8_64.pl aes-gcm-armv8-unroll8_64.pl 44 45# poly1305 46SRCS+= poly1305-armv8.pl 47 48# sha 49SRCS+= keccak1600-armv8.pl sha1-armv8.pl sha512-armv8.pl 50 51# sm3 52SRCS+= sm3-armv8.pl 53 54# sm4 55SRCS+= sm4-armv8.pl vpsm4-armv8.pl vpsm4_ex-armv8.pl 56 57ASM= ${SRCS:R:S/$/.S/} sha256-armv8.S 58 59all: ${ASM} 60 rm -f ${ASM:R:S/$/.s/} 61 ${CP} ${LCRYPTO_SRC}/crypto/arm_arch.h ../arm_arch.h 62 63CLEANFILES= ${ASM} 64.SUFFIXES: .pl 65 66sha256-armv8.S: sha512-armv8.pl 67 env CC=cc perl ${.ALLSRC} linux64 ${.TARGET:R:S/$/.s/} 68 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 69 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 70 71.pl.S: 72 env CC=cc perl ${.IMPSRC} linux64 ${.TARGET:R:S/$/.s/} 73 ( echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\ 74 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 75 76.elif defined(ASM_amd64) 77 78.PATH: ${LCRYPTO_SRC}/crypto \ 79 ${LCRYPTO_SRC}/crypto/aes/asm \ 80 ${LCRYPTO_SRC}/crypto/bn/asm \ 81 ${LCRYPTO_SRC}/crypto/camellia/asm \ 82 ${LCRYPTO_SRC}/crypto/chacha/asm \ 83 ${LCRYPTO_SRC}/crypto/ec/asm \ 84 ${LCRYPTO_SRC}/crypto/md5/asm \ 85 ${LCRYPTO_SRC}/crypto/modes/asm \ 86 ${LCRYPTO_SRC}/crypto/poly1305/asm \ 87 ${LCRYPTO_SRC}/crypto/rc4/asm \ 88 ${LCRYPTO_SRC}/crypto/sha/asm \ 89 ${LCRYPTO_SRC}/crypto/whrlpool/asm \ 90 ${LCRYPTO_SRC}/engines/asm 91 92# cpuid 93SRCS= x86_64cpuid.pl 94 95# aes 96SRCS+= aes-x86_64.pl \ 97 aesni-mb-x86_64.pl aesni-sha1-x86_64.pl aesni-sha256-x86_64.pl \ 98 aesni-x86_64.pl aesni-xts-avx512.pl bsaes-x86_64.pl vpaes-x86_64.pl 99 100# bn 101SRCS+= rsaz-avx2.pl rsaz-x86_64.pl \ 102 rsaz-2k-avx512.pl rsaz-2k-avxifma.pl \ 103 rsaz-3k-avx512.pl rsaz-3k-avxifma.pl \ 104 rsaz-4k-avx512.pl rsaz-4k-avxifma.pl \ 105 x86_64-gf2m.pl x86_64-mont.pl x86_64-mont5.pl 106 107# camellia 108SRCS+= cmll-x86_64.pl 109 110# chacha 111SRCS+= chacha-x86_64.pl 112 113# ec 114SRCS+= ecp_nistz256-x86_64.pl x25519-x86_64.pl 115 116# md5 117SRCS+= md5-x86_64.pl 118 119# modes 120SRCS+= aes-gcm-avx512.pl aesni-gcm-x86_64.pl ghash-x86_64.pl 121 122# poly1305 123SRCS+= poly1305-x86_64.pl 124 125# rc4 126SRCS+= rc4-md5-x86_64.pl rc4-x86_64.pl 127 128# sha 129SRCS+= keccak1600-x86_64.pl sha1-mb-x86_64.pl sha1-x86_64.pl \ 130 sha256-mb-x86_64.pl 131 132# whrlpool 133SRCS+= wp-x86_64.pl 134 135# engines 136SRCS+= e_padlock-x86_64.pl 137 138SHA_ASM= sha256-x86_64 sha512-x86_64 139SHA_SRC= sha512-x86_64.pl 140SHA_TMP= ${SHA_ASM:S/$/.s/} 141 142ASM= ${SRCS:R:S/$/.S/} ${SHA_ASM:S/$/.S/} 143 144all: ${ASM} 145 rm -f ${SHA_TMP} 146 147CLEANFILES= ${ASM} 148.SUFFIXES: .pl 149 150.pl.S: 151 ( echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\ 152 env CC=cc perl ${.IMPSRC} elf ) > ${.TARGET} 153 154${SHA_TMP}: ${SHA_SRC} 155 env CC=cc perl ${.ALLSRC} elf ${.TARGET} 156 157.for s in ${SHA_ASM} 158${s}.S: ${s}.s 159 ( echo '/* Do not modify. This file is auto-generated from ${SHA_SRC}. */' ;\ 160 cat ${s}.s ) > ${.TARGET} 161.endfor 162 163.elif defined(ASM_arm) 164 165.PATH: ${LCRYPTO_SRC}/crypto \ 166 ${LCRYPTO_SRC}/crypto/aes/asm \ 167 ${LCRYPTO_SRC}/crypto/bn/asm \ 168 ${LCRYPTO_SRC}/crypto/chacha/asm \ 169 ${LCRYPTO_SRC}/crypto/ec/asm \ 170 ${LCRYPTO_SRC}/crypto/modes/asm \ 171 ${LCRYPTO_SRC}/crypto/poly1305/asm \ 172 ${LCRYPTO_SRC}/crypto/sha/asm 173 174PERLPATH= -I${LCRYPTO_SRC}/crypto/perlasm 175 176# cpuid 177SRCS= armv4cpuid.pl 178 179# aes 180SRCS+= aes-armv4.pl aesv8-armx.pl bsaes-armv7.pl 181 182# bn 183SRCS+= armv4-mont.pl armv4-gf2m.pl 184 185# chacha 186SRCS+= chacha-armv4.pl 187 188# ec 189SRCS+= ecp_nistz256-armv4.pl 190 191# modes 192SRCS+= ghash-armv4.pl ghashv8-armx.pl 193 194# poly1305 195SRCS+= poly1305-armv4.pl 196 197# sha 198SRCS+= keccak1600-armv4.pl sha1-armv4-large.pl sha256-armv4.pl sha512-armv4.pl 199 200ASM= ${SRCS:R:S/$/.S/} 201 202all: ${ASM} 203 rm -f ${ASM:R:S/$/.s/} 204 ${CP} ${LCRYPTO_SRC}/crypto/arm_arch.h ../arm_arch.h 205 206CLEANFILES= ${ASM} 207.SUFFIXES: .pl 208 209.pl.S: 210 env CC=cc perl ${.IMPSRC} linux32 ${.TARGET:R:S/$/.s/} 211 ( echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\ 212 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 213 214.elif defined(ASM_i386) 215 216.PATH: ${LCRYPTO_SRC}/crypto \ 217 ${LCRYPTO_SRC}/crypto/aes/asm \ 218 ${LCRYPTO_SRC}/crypto/bf/asm \ 219 ${LCRYPTO_SRC}/crypto/bn/asm \ 220 ${LCRYPTO_SRC}/crypto/camellia/asm \ 221 ${LCRYPTO_SRC}/crypto/cast/asm \ 222 ${LCRYPTO_SRC}/crypto/chacha/asm \ 223 ${LCRYPTO_SRC}/crypto/des/asm \ 224 ${LCRYPTO_SRC}/crypto/ec/asm \ 225 ${LCRYPTO_SRC}/crypto/md5/asm \ 226 ${LCRYPTO_SRC}/crypto/modes/asm \ 227 ${LCRYPTO_SRC}/crypto/poly1305/asm \ 228 ${LCRYPTO_SRC}/crypto/rc4/asm \ 229 ${LCRYPTO_SRC}/crypto/rc5/asm \ 230 ${LCRYPTO_SRC}/crypto/ripemd/asm \ 231 ${LCRYPTO_SRC}/crypto/sha/asm \ 232 ${LCRYPTO_SRC}/crypto/whrlpool/asm \ 233 ${LCRYPTO_SRC}/engines/asm 234 235#PERLPATH= -I${LCRYPTO_SRC}/crypto/des/asm -I${LCRYPTO_SRC}/crypto/perlasm 236CFLAGS= -DOPENSSL_IA32_SSE2 237 238# cpuid 239SRCS= x86cpuid.pl 240 241# aes 242SRCS+= aes-586.pl aesni-x86.pl vpaes-x86.pl 243 244# blowfish 245SRCS+= bf-586.pl 246 247# bn 248SRCS+= bn-586.pl co-586.pl x86-gf2m.pl x86-mont.pl 249 250# camellia 251SRCS+= cmll-x86.pl 252 253# cast 254SRCS+= cast-586.pl 255 256# chacha 257SRCS+= chacha-x86.pl 258 259# des 260SRCS+= crypt586.pl des-586.pl 261 262# ec 263SRCS+= ecp_nistz256-x86.pl 264 265# md5 266SRCS+= md5-586.pl 267 268# modes 269SRCS+= ghash-x86.pl 270 271# poly1305 272SRCS+= poly1305-x86.pl 273 274# rc4 275SRCS+= rc4-586.pl 276 277# rc5 278SRCS+= rc5-586.pl 279 280# ripemd 281SRCS+= rmd-586.pl 282 283# sha 284SRCS+= sha1-586.pl sha256-586.pl sha512-586.pl 285 286# whrlpool 287SRCS+= wp-mmx.pl 288 289# engines 290SRCS+= e_padlock-x86.pl 291 292ASM= ${SRCS:R:S/$/.S/} 293 294all: ${ASM} 295 296CLEANFILES= ${ASM} 297.SUFFIXES: .pl 298 299.pl.S: 300 ( echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T}. */' ;\ 301 echo '#ifdef PIC' ;\ 302 env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} -fpic /dev/stdout ;\ 303 echo '#else' ;\ 304 env CC=cc perl ${PERLPATH} ${.IMPSRC} elf ${CFLAGS} /dev/stdout ;\ 305 echo '#endif' ) > ${.TARGET} 306 307.elif defined(ASM_powerpc) 308 309.PATH: ${LCRYPTO_SRC}/crypto \ 310 ${LCRYPTO_SRC}/crypto/aes/asm \ 311 ${LCRYPTO_SRC}/crypto/bn/asm \ 312 ${LCRYPTO_SRC}/crypto/chacha/asm \ 313 ${LCRYPTO_SRC}/crypto/modes/asm \ 314 ${LCRYPTO_SRC}/crypto/poly1305/asm \ 315 ${LCRYPTO_SRC}/crypto/sha/asm 316 317PERLPATH= -I${LCRYPTO_SRC}/crypto/perlasm 318 319#cpuid 320SRCS= ppccpuid.pl 321 322#bn 323SRCS+= ppc.pl ppc-mont.pl 324 325#aes 326SRCS+= aes-ppc.pl vpaes-ppc.pl aesp8-ppc.pl 327 328#sha1 329SRCS+= sha1-ppc.pl sha512-ppc.pl sha512p8-ppc.pl 330 331#modes 332SRCS+= aes-gcm-ppc.pl ghashp8-ppc.pl 333 334#chacha 335SRCS+= chacha-ppc.pl chachap10-ppc.pl 336 337#poly1305 338SRCS+= poly1305-ppc.pl poly1305-ppcfp.pl 339 340ASM= ${SRCS:R:S/$/.S/} bn-ppc.S sha256-ppc.S sha256p8-ppc.S 341 342all: ${ASM} 343 rm -f ${ASM:R:S/$/.s/} 344 345CLEANFILES= ${ASM} 346.SUFFIXES: .pl 347 348bn-ppc.S: ppc.pl 349 env CC=cc perl ${.ALLSRC} linux32 ${.TARGET:R:S/$/.s/} 350 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 351 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 352 353sha256-ppc.S: sha512-ppc.pl 354 env CC=cc perl ${.ALLSRC} linux32 ${.TARGET:R:S/$/.s/} 355 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 356 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 357 358sha256p8-ppc.S: sha512p8-ppc.pl 359 env CC=cc perl ${.ALLSRC} linux32 ${.TARGET:R:S/$/.s/} 360 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 361 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 362 363.pl.S: 364 env CC=cc perl ${.IMPSRC} linux32 ${.TARGET:R:S/$/.s/} 365 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 366 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 367 368.elif defined(ASM_powerpc64) 369 370.PATH: ${LCRYPTO_SRC}/crypto \ 371 ${LCRYPTO_SRC}/crypto/aes/asm \ 372 ${LCRYPTO_SRC}/crypto/bn/asm \ 373 ${LCRYPTO_SRC}/crypto/chacha/asm \ 374 ${LCRYPTO_SRC}/crypto/ec/asm \ 375 ${LCRYPTO_SRC}/crypto/modes/asm \ 376 ${LCRYPTO_SRC}/crypto/poly1305/asm \ 377 ${LCRYPTO_SRC}/crypto/sha/asm 378 379PERLPATH= -I${LCRYPTO_SRC}/crypto/perlasm 380 381#cpuid 382SRCS= ppccpuid.pl 383 384#bn 385SRCS+= ppc.pl ppc-mont.pl 386 387#aes 388SRCS+= aes-ppc.pl vpaes-ppc.pl aesp8-ppc.pl 389 390#sha1 391SRCS+= sha1-ppc.pl sha512-ppc.pl sha512p8-ppc.pl 392 393#modes 394SRCS+= aes-gcm-ppc.pl ghashp8-ppc.pl 395 396#chacha 397SRCS+= chacha-ppc.pl chachap10-ppc.pl 398 399#poly1305 400SRCS+= poly1305-ppc.pl poly1305-ppcfp.pl 401 402#ec 403SRCS+= ecp_nistp384-ppc64.pl ecp_nistp521-ppc64.pl ecp_nistz256-ppc64.pl x25519-ppc64.pl 404 405 406#keccak1600 407SRCS+= keccak1600-ppc64.pl 408 409ASM= ${SRCS:R:S/$/.S/} bn-ppc.S sha256-ppc.S sha256p8-ppc.S 410 411all: ${ASM} 412 rm -f ${ASM:R:S/$/.s/} 413 414CLEANFILES= ${ASM} 415.SUFFIXES: .pl 416 417bn-ppc.S: ppc.pl 418 env CC=cc perl ${.ALLSRC} linux64v2 ${.TARGET:R:S/$/.s/} 419 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 420 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 421 422sha256-ppc.S: sha512-ppc.pl 423 env CC=cc perl ${.ALLSRC} linux64v2 ${.TARGET:R:S/$/.s/} 424 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 425 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 426 427sha256p8-ppc.S: sha512p8-ppc.pl 428 env CC=cc perl ${.ALLSRC} linux64v2 ${.TARGET:R:S/$/.s/} 429 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 430 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 431 432.pl.S: 433 env CC=cc perl ${.IMPSRC} linux64v2 ${.TARGET:R:S/$/.s/} 434 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 435 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 436 437.elif defined(ASM_powerpc64le) 438 439.PATH: ${LCRYPTO_SRC}/crypto \ 440 ${LCRYPTO_SRC}/crypto/aes/asm \ 441 ${LCRYPTO_SRC}/crypto/bn/asm \ 442 ${LCRYPTO_SRC}/crypto/chacha/asm \ 443 ${LCRYPTO_SRC}/crypto/ec/asm \ 444 ${LCRYPTO_SRC}/crypto/modes/asm \ 445 ${LCRYPTO_SRC}/crypto/poly1305/asm \ 446 ${LCRYPTO_SRC}/crypto/sha/asm 447 448PERLPATH= -I${LCRYPTO_SRC}/crypto/perlasm 449 450#cpuid 451SRCS= ppccpuid.pl 452 453#bn 454SRCS+= ppc.pl ppc-mont.pl 455 456#aes 457SRCS+= aes-ppc.pl vpaes-ppc.pl aesp8-ppc.pl 458 459#sha1 460SRCS+= sha1-ppc.pl sha512-ppc.pl sha512p8-ppc.pl 461 462#modes 463SRCS+= aes-gcm-ppc.pl ghashp8-ppc.pl 464 465#chacha 466SRCS+= chacha-ppc.pl chachap10-ppc.pl 467 468#poly1305 469SRCS+= poly1305-ppc.pl poly1305-ppcfp.pl 470 471#ec 472SRCS+= ecp_nistp384-ppc64.pl ecp_nistp521-ppc64.pl ecp_nistz256-ppc64.pl x25519-ppc64.pl 473 474#keccak1600 475SRCS+= keccak1600-ppc64.pl 476 477ASM= ${SRCS:R:S/$/.S/} bn-ppc.S sha256-ppc.S sha256p8-ppc.S 478 479all: ${ASM} 480 rm -f ${ASM:R:S/$/.s/} 481 482CLEANFILES= ${ASM} 483.SUFFIXES: .pl 484 485bn-ppc.S: ppc.pl 486 env CC=cc perl ${.ALLSRC} linux64le ${.TARGET:R:S/$/.s/} 487 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 488 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 489 490sha256-ppc.S: sha512-ppc.pl 491 env CC=cc perl ${.ALLSRC} linux64le ${.TARGET:R:S/$/.s/} 492 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 493 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 494 495sha256p8-ppc.S: sha512p8-ppc.pl 496 env CC=cc perl ${.ALLSRC} linux64le ${.TARGET:R:S/$/.s/} 497 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 498 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 499 500.pl.S: 501 env CC=cc perl ${.IMPSRC} linux64le ${.TARGET:R:S/$/.s/} 502 ( echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T}. */' ;\ 503 cat ${.TARGET:R:S/$/.s/}) > ${.TARGET} 504 505.endif 506 507.include <bsd.prog.mk> 508