1#!/bin/bash 2# Copyright (c) Huawei Technologies Co., Ltd. 2020-2022. All rights reserved. 3# Description: This script is used to generate .S files. 4# Create: 2020-05-30 5 6set -e 7 8error() 9{ 10 echo =========================================== 11 echo Create asm file FAIL! 12 echo =========================================== 13 exit 1 14} 15 16success() 17{ 18 echo =========================================== 19 echo Create asm file Sucess! 20 echo =========================================== 21 exit 0 22} 23 24rm -rf crypto/aes/asm/arm32 25rm -rf crypto/bn/asm/arm32 26rm -rf crypto/chacha/asm/arm32 27rm -rf crypto/ec/asm/arm32 28rm -rf crypto/modes/asm/arm32 29rm -rf crypto/poly1305/asm/arm32 30rm -rf crypto/sha/asm/arm32 31rm -rf crypto/armv4cpuid.S 32mkdir crypto/aes/asm/arm32 33mkdir crypto/bn/asm/arm32 34mkdir crypto/chacha/asm/arm32 35mkdir crypto/ec/asm/arm32 36mkdir crypto/modes/asm/arm32 37mkdir crypto/poly1305/asm/arm32 38mkdir crypto/sha/asm/arm32 39# for arm32: 40perl crypto/aes/asm/aes-armv4.pl void crypto/aes/asm/arm32/aes-armv4.S 41perl crypto/aes/asm/aesv8-armx.pl void crypto/aes/asm/arm32/aesv8-armx.S 42perl crypto/aes/asm/bsaes-armv7.pl void crypto/aes/asm/arm32/bsaes-armv7.S 43perl crypto/armv4cpuid.pl void crypto/armv4cpuid.S 44perl crypto/bn/asm/armv4-gf2m.pl void crypto/bn/asm/arm32/armv4-gf2m.S 45perl crypto/bn/asm/armv4-mont.pl void crypto/bn/asm/arm32/armv4-mont.S 46perl crypto/chacha/asm/chacha-armv4.pl void crypto/chacha/asm/arm32/chacha-armv4.S 47perl crypto/ec/asm/ecp_nistz256-armv4.pl void crypto/ec/asm/arm32/ecp_nistz256-armv4.S 48perl crypto/modes/asm/ghash-armv4.pl void crypto/modes/asm/arm32/ghash-armv4.S 49perl crypto/modes/asm/ghashv8-armx.pl void crypto/modes/asm/arm32/ghashv8-armx.S 50perl crypto/poly1305/asm/poly1305-armv4.pl void crypto/poly1305/asm/arm32/poly1305-armv4.S 51perl crypto/sha/asm/keccak1600-armv4.pl void crypto/sha/asm/arm32/keccak1600-armv4.S 52perl crypto/sha/asm/sha1-armv4-large.pl void crypto/sha/asm/arm32/sha1-armv4-large.S 53perl crypto/sha/asm/sha256-armv4.pl void crypto/sha/asm/arm32/sha256-armv4.S 54perl crypto/sha/asm/sha512-armv4.pl void crypto/sha/asm/arm32/sha512-armv4.S 55 56rm -rf crypto/aes/asm/arm64 57rm -rf crypto/bn/asm/arm64 58rm -rf crypto/chacha/asm/arm64 59rm -rf crypto/ec/asm/arm64 60rm -rf crypto/modes/asm/arm64 61rm -rf crypto/poly1305/asm/arm64 62rm -rf crypto/sha/asm/arm64 63rm -rf crypto/arm64cpuid.S 64mkdir crypto/aes/asm/arm64 65mkdir crypto/bn/asm/arm64 66mkdir crypto/chacha/asm/arm64 67mkdir crypto/ec/asm/arm64 68mkdir crypto/modes/asm/arm64 69mkdir crypto/poly1305/asm/arm64 70mkdir crypto/sha/asm/arm64 71# for arm64: 72perl crypto/aes/asm/aesv8-armx.pl linux64 crypto/aes/asm/arm64/aesv8-armx.S 73perl crypto/aes/asm/vpaes-armv8.pl linux64 crypto/aes/asm/arm64/vpaes-armv8.S 74perl crypto/arm64cpuid.pl linux64 crypto/arm64cpuid.S 75perl crypto/bn/asm/armv8-mont.pl linux64 crypto/bn/asm/arm64/armv8-mont.S 76perl crypto/chacha/asm/chacha-armv8.pl linux64 crypto/chacha/asm/arm64/chacha-armv8.S 77perl crypto/ec/asm/ecp_nistz256-armv8.pl linux64 crypto/ec/asm/arm64/ecp_nistz256-armv8.S 78perl crypto/modes/asm/ghashv8-armx.pl linux64 crypto/modes/asm/arm64/ghashv8-armx.S 79perl crypto/poly1305/asm/poly1305-armv8.pl linux64 crypto/poly1305/asm/arm64/poly1305-armv8.S 80perl crypto/sha/asm/keccak1600-armv8.pl linux64 crypto/sha/asm/arm64/keccak1600-armv8.S 81perl crypto/sha/asm/sha1-armv8.pl linux64 crypto/sha/asm/arm64/sha1-armv8.S 82perl crypto/sha/asm/sha512-armv8.pl linux64 crypto/sha/asm/arm64/sha256-armv8.S 83perl crypto/sha/asm/sha512-armv8.pl linux64 crypto/sha/asm/arm64/sha512-armv8.S 84 85#need x86_64-linux-android-clang cross compile chain in your environment path, 86#otherwise the generated asm files cannot be used 87x86_64-linux-android-clang -v 88rm -rf crypto/aes/asm/x86_64 89rm -rf crypto/bn/asm/x86_64 90rm -rf crypto/chacha/asm/x86_64 91rm -rf crypto/ec/asm/x86_64 92rm -rf crypto/md5/asm/x86_64 93rm -rf crypto/modes/asm/x86_64 94rm -rf crypto/poly1305/asm/x86_64 95rm -rf crypto/rc4/asm/x86_64 96rm -rf crypto/sha/asm/x86_64 97rm -rf crypto/whrlpool/asm/x86_64 98rm -rf crypto/x86_64cpuid.s 99mkdir crypto/aes/asm/x86_64 100mkdir crypto/bn/asm/x86_64 101mkdir crypto/chacha/asm/x86_64 102mkdir crypto/ec/asm/x86_64 103mkdir crypto/md5/asm/x86_64 104mkdir crypto/modes/asm/x86_64 105mkdir crypto/poly1305/asm/x86_64 106mkdir crypto/rc4/asm/x86_64 107mkdir crypto/sha/asm/x86_64 108mkdir crypto/whrlpool/asm/x86_64 109# for x86_64: 110CC="x86_64-linux-android-clang" perl crypto/aes/asm/aesni-mb-x86_64.pl elf crypto/aes/asm/x86_64/aesni-mb-x86_64.s 111CC="x86_64-linux-android-clang" perl crypto/aes/asm/aesni-sha1-x86_64.pl elf crypto/aes/asm/x86_64/aesni-sha1-x86_64.s 112CC="x86_64-linux-android-clang" perl crypto/aes/asm/aesni-sha256-x86_64.pl elf crypto/aes/asm/x86_64/aesni-sha256-x86_64.s 113CC="x86_64-linux-android-clang" perl crypto/aes/asm/aesni-x86_64.pl elf crypto/aes/asm/x86_64/aesni-x86_64.s 114CC="x86_64-linux-android-clang" perl crypto/aes/asm/vpaes-x86_64.pl elf crypto/aes/asm/x86_64/vpaes-x86_64.s 115CC="x86_64-linux-android-clang" perl crypto/bn/asm/rsaz-avx2.pl elf crypto/bn/asm/x86_64/rsaz-avx2.s 116CC="x86_64-linux-android-clang" perl crypto/bn/asm/rsaz-x86_64.pl elf crypto/bn/asm/x86_64/rsaz-x86_64.s 117CC="x86_64-linux-android-clang" perl crypto/bn/asm/x86_64-gf2m.pl elf crypto/bn/asm/x86_64/x86_64-gf2m.s 118CC="x86_64-linux-android-clang" perl crypto/bn/asm/x86_64-mont.pl elf crypto/bn/asm/x86_64/x86_64-mont.s 119CC="x86_64-linux-android-clang" perl crypto/bn/asm/x86_64-mont5.pl elf crypto/bn/asm/x86_64/x86_64-mont5.s 120CC="x86_64-linux-android-clang" perl crypto/chacha/asm/chacha-x86_64.pl elf crypto/chacha/asm/x86_64/chacha-x86_64.s 121CC="x86_64-linux-android-clang" perl crypto/ec/asm/ecp_nistz256-x86_64.pl elf crypto/ec/asm/x86_64/ecp_nistz256-x86_64.s 122CC="x86_64-linux-android-clang" perl crypto/ec/asm/x25519-x86_64.pl elf crypto/ec/asm/x86_64/x25519-x86_64.s 123CC="x86_64-linux-android-clang" perl crypto/md5/asm/md5-x86_64.pl elf crypto/md5/asm/x86_64/md5-x86_64.s 124CC="x86_64-linux-android-clang" perl crypto/modes/asm/aesni-gcm-x86_64.pl elf crypto/modes/asm/x86_64/aesni-gcm-x86_64.s 125CC="x86_64-linux-android-clang" perl crypto/modes/asm/ghash-x86_64.pl elf crypto/modes/asm/x86_64/ghash-x86_64.s 126CC="x86_64-linux-android-clang" perl crypto/poly1305/asm/poly1305-x86_64.pl elf crypto/poly1305/asm/x86_64/poly1305-x86_64.s 127CC="x86_64-linux-android-clang" perl crypto/rc4/asm/rc4-md5-x86_64.pl elf crypto/rc4/asm/x86_64/rc4-md5-x86_64.s 128CC="x86_64-linux-android-clang" perl crypto/rc4/asm/rc4-x86_64.pl elf crypto/rc4/asm/x86_64/rc4-x86_64.s 129CC="x86_64-linux-android-clang" perl crypto/sha/asm/keccak1600-x86_64.pl elf crypto/sha/asm/x86_64/keccak1600-x86_64.s 130CC="x86_64-linux-android-clang" perl crypto/sha/asm/sha1-mb-x86_64.pl elf crypto/sha/asm/x86_64/sha1-mb-x86_64.s 131CC="x86_64-linux-android-clang" perl crypto/sha/asm/sha1-x86_64.pl elf crypto/sha/asm/x86_64/sha1-x86_64.s 132CC="x86_64-linux-android-clang" perl crypto/sha/asm/sha256-mb-x86_64.pl elf crypto/sha/asm/x86_64/sha256-mb-x86_64.s 133CC="x86_64-linux-android-clang" perl crypto/sha/asm/sha512-x86_64.pl elf crypto/sha/asm/x86_64/sha256-x86_64.s 134CC="x86_64-linux-android-clang" perl crypto/sha/asm/sha512-x86_64.pl elf crypto/sha/asm/x86_64/sha512-x86_64.s 135CC="x86_64-linux-android-clang" perl crypto/whrlpool/asm/wp-x86_64.pl elf crypto/whrlpool/asm/x86_64/wp-x86_64.s 136CC="x86_64-linux-android-clang" perl crypto/x86_64cpuid.pl elf crypto/x86_64cpuid.s 137if [ $? -ne 0 ]; then 138 error 139else 140 success 141fi