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