• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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