#!/bin/bash
set -x -e
-
-if [ "$#" -eq 0 ]; then
- ARCH="x86_64"
-else
- ARCH=$1
-fi
-
-if [ "$ARCH" = "aarch64" ]; then
- CC=aarch64-linux-gnu-gcc
- CPP=aarch64-linux-gnu-g++
- AR=aarch64-linux-gnu-ar
- STRIP=aarch64-linux-gnu-strip
-elif [ "$ARCH" = "arm7vl" ]; then
- CC=arm-linux-gnueabi-gcc
- CPP=arm-linux-gnueabi-g++
- AR=arm-linux-gnueabi-ar
- STRIP=arm-linux-gnueabi-strip
-elif [ "$ARCH" = "arm7hf" ]; then
- CC=arm-linux-gnueabihf-gcc
- CPP=arm-linux-gnueabihf-g++
- AR=arm-linux-gnueabihf-ar
- STRIP=arm-linux-gnueabihf-strip
-elif [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "i686" ]; then
- CC=clang
- CPP=clang++
- AR=ar
- STRIP=strip
-else
- echo "Unknown architecture. Goodbye."
- exit 1
-fi
-
-mkdir -p lib/lib "bin/$ARCH"
+mkdir -p lib/lib bin
+CC=clang
+CPP=clang++
+AR=ar
+STRIP=strip
CFLAGS=-static
cd lib
;;
esac
-case "$ARCH" in
- arm7vl|arm7hf)
- src="linux-arm/crypto/chacha/chacha-armv4.S \
- linux-arm/crypto/fipsmodule/aes-armv4.S \
- linux-arm/crypto/fipsmodule/aesv8-armx32.S \
- linux-arm/crypto/fipsmodule/armv4-mont.S \
- linux-arm/crypto/fipsmodule/bsaes-armv7.S \
- linux-arm/crypto/fipsmodule/ghash-armv4.S \
- linux-arm/crypto/fipsmodule/ghashv8-armx32.S \
- linux-arm/crypto/fipsmodule/sha1-armv4-large.S \
- linux-arm/crypto/fipsmodule/sha256-armv4.S \
- linux-arm/crypto/fipsmodule/sha512-armv4.S \
- linux-arm/crypto/fipsmodule/vpaes-armv7.S \
- linux-arm/crypto/test/trampoline-armv4.S \
- src/crypto/curve25519/asm/x25519-asm-arm.S \
- src/crypto/poly1305/poly1305_arm_asm.S"
- ;;
- aarch64)
- src="linux-aarch64/crypto/chacha/chacha-armv8.S \
- linux-aarch64/crypto/fipsmodule/aesv8-armx64.S \
- linux-aarch64/crypto/fipsmodule/armv8-mont.S \
- linux-aarch64/crypto/fipsmodule/ghash-neon-armv8.S \
- linux-aarch64/crypto/fipsmodule/ghashv8-armx64.S \
- linux-aarch64/crypto/fipsmodule/sha1-armv8.S \
- linux-aarch64/crypto/fipsmodule/sha256-armv8.S \
- linux-aarch64/crypto/fipsmodule/sha512-armv8.S \
- linux-aarch64/crypto/fipsmodule/vpaes-armv8.S \
- linux-aarch64/crypto/test/trampoline-armv8.S"
- ;;
- i686)
- src="linux-x86/crypto/chacha/chacha-x86.S \
- linux-x86/crypto/fipsmodule/aes-586.S \
- linux-x86/crypto/fipsmodule/aesni-x86.S \
- linux-x86/crypto/fipsmodule/bn-586.S \
- linux-x86/crypto/fipsmodule/co-586.S \
- linux-x86/crypto/fipsmodule/ghash-ssse3-x86.S \
- linux-x86/crypto/fipsmodule/ghash-x86.S \
- linux-x86/crypto/fipsmodule/md5-586.S \
- linux-x86/crypto/fipsmodule/sha1-586.S \
- linux-x86/crypto/fipsmodule/sha256-586.S \
- linux-x86/crypto/fipsmodule/sha512-586.S \
- linux-x86/crypto/fipsmodule/vpaes-x86.S \
- linux-x86/crypto/fipsmodule/x86-mont.S \
- linux-x86/crypto/test/trampoline-x86.S"
- ;;
- x86_64)
- src="linux-x86_64/crypto/chacha/chacha-x86_64.S \
- linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S \
- linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S \
- linux-x86_64/crypto/fipsmodule/aes-x86_64.S \
- linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S \
- linux-x86_64/crypto/fipsmodule/aesni-x86_64.S \
- linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S \
- linux-x86_64/crypto/fipsmodule/ghash-x86_64.S \
- linux-x86_64/crypto/fipsmodule/md5-x86_64.S \
- linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S \
- linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S \
- linux-x86_64/crypto/fipsmodule/rdrand-x86_64.S \
- linux-x86_64/crypto/fipsmodule/rsaz-avx2.S \
- linux-x86_64/crypto/fipsmodule/sha1-x86_64.S \
- linux-x86_64/crypto/fipsmodule/sha256-x86_64.S \
- linux-x86_64/crypto/fipsmodule/sha512-x86_64.S \
- linux-x86_64/crypto/fipsmodule/vpaes-x86_64.S \
- linux-x86_64/crypto/fipsmodule/x86_64-mont.S \
- linux-x86_64/crypto/fipsmodule/x86_64-mont5.S \
- linux-x86_64/crypto/test/trampoline-x86_64.S \
- src/crypto/hrss/asm/poly_rq_mul.S"
- ;;
-esac
-
+if [ -z "$OS"];then
+ case "$HOSTTYPE" in
+ arm)
+ src="linux-arm/crypto/chacha/chacha-armv4.S \
+ linux-arm/crypto/fipsmodule/aes-armv4.S \
+ linux-arm/crypto/fipsmodule/aesv8-armx32.S \
+ linux-arm/crypto/fipsmodule/armv4-mont.S \
+ linux-arm/crypto/fipsmodule/bsaes-armv7.S \
+ linux-arm/crypto/fipsmodule/ghash-armv4.S \
+ linux-arm/crypto/fipsmodule/ghashv8-armx32.S \
+ linux-arm/crypto/fipsmodule/sha1-armv4-large.S \
+ linux-arm/crypto/fipsmodule/sha256-armv4.S \
+ linux-arm/crypto/fipsmodule/sha512-armv4.S \
+ linux-arm/crypto/fipsmodule/vpaes-armv7.S \
+ linux-arm/crypto/test/trampoline-armv4.S \
+ src/crypto/curve25519/asm/x25519-asm-arm.S \
+ src/crypto/poly1305/poly1305_arm_asm.S"
+ ;;
+ aarch64)
+ src="linux-aarch64/crypto/chacha/chacha-armv8.S \
+ linux-aarch64/crypto/fipsmodule/aesv8-armx64.S \
+ linux-aarch64/crypto/fipsmodule/armv8-mont.S \
+ linux-aarch64/crypto/fipsmodule/ghash-neon-armv8.S \
+ linux-aarch64/crypto/fipsmodule/ghashv8-armx64.S \
+ linux-aarch64/crypto/fipsmodule/sha1-armv8.S \
+ linux-aarch64/crypto/fipsmodule/sha256-armv8.S \
+ linux-aarch64/crypto/fipsmodule/sha512-armv8.S \
+ linux-aarch64/crypto/fipsmodule/vpaes-armv8.S \
+ linux-aarch64/crypto/test/trampoline-armv8.S"
+ ;;
+ i686)
+ src="linux-x86/crypto/chacha/chacha-x86.S \
+ linux-x86/crypto/fipsmodule/aes-586.S \
+ linux-x86/crypto/fipsmodule/aesni-x86.S \
+ linux-x86/crypto/fipsmodule/bn-586.S \
+ linux-x86/crypto/fipsmodule/co-586.S \
+ linux-x86/crypto/fipsmodule/ghash-ssse3-x86.S \
+ linux-x86/crypto/fipsmodule/ghash-x86.S \
+ linux-x86/crypto/fipsmodule/md5-586.S \
+ linux-x86/crypto/fipsmodule/sha1-586.S \
+ linux-x86/crypto/fipsmodule/sha256-586.S \
+ linux-x86/crypto/fipsmodule/sha512-586.S \
+ linux-x86/crypto/fipsmodule/vpaes-x86.S \
+ linux-x86/crypto/fipsmodule/x86-mont.S \
+ linux-x86/crypto/test/trampoline-x86.S"
+ ;;
+ x86_64)
+ src="linux-x86_64/crypto/chacha/chacha-x86_64.S \
+ linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S \
+ linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S \
+ linux-x86_64/crypto/fipsmodule/aes-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/aesni-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/ghash-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/md5-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S \
+ linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S \
+ linux-x86_64/crypto/fipsmodule/rdrand-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/rsaz-avx2.S \
+ linux-x86_64/crypto/fipsmodule/sha1-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/sha256-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/sha512-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/vpaes-x86_64.S \
+ linux-x86_64/crypto/fipsmodule/x86_64-mont.S \
+ linux-x86_64/crypto/fipsmodule/x86_64-mont5.S \
+ linux-x86_64/crypto/test/trampoline-x86_64.S \
+ src/crypto/hrss/asm/poly_rq_mul.S"
+ ;;
+ esac
+else
+ case "$HOSTTYPE" in
+ i686)
+ src="win-x86/crypto/chacha/chacha-x86.asm \
+ win-x86/crypto/fipsmodule/aes-586.asm \
+ win-x86/crypto/fipsmodule/aesni-x86.asm \
+ win-x86/crypto/fipsmodule/bn-586.asm \
+ win-x86/crypto/fipsmodule/co-586.asm \
+ win-x86/crypto/fipsmodule/ghash-ssse3-x86.asm \
+ win-x86/crypto/fipsmodule/ghash-x86.asm \
+ win-x86/crypto/fipsmodule/md5-586.asm \
+ win-x86/crypto/fipsmodule/sha1-586.asm \
+ win-x86/crypto/fipsmodule/sha256-586.asm \
+ win-x86/crypto/fipsmodule/sha512-586.asm \
+ win-x86/crypto/fipsmodule/vpaes-x86.asm \
+ win-x86/crypto/fipsmodule/x86-mont.asm \
+ win-x86/crypto/test/trampoline-x86.asm"
+ ;;
+ x86_64)
+ src="win-x86_64/crypto/chacha/chacha-x86_64.asm \
+ win-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.asm \
+ win-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.asm \
+ win-x86_64/crypto/fipsmodule/aes-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/aesni-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/ghash-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/md5-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/p256-x86_64-asm.asm \
+ win-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.asm \
+ win-x86_64/crypto/fipsmodule/rdrand-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/rsaz-avx2.asm \
+ win-x86_64/crypto/fipsmodule/sha1-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/sha256-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/sha512-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/vpaes-x86_64.asm \
+ win-x86_64/crypto/fipsmodule/x86_64-mont.asm \
+ win-x86_64/crypto/fipsmodule/x86_64-mont5.asm \
+ win-x86_64/crypto/test/trampoline-x86_64.asm"
+ ;;
+ esac
+fi
+
$CC -Iinclude -std=c99 \
${CFLAGS} \
${CFLAGS_CRYPTO} \
;;
esac
-${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o "../bin/$ARCH/lpmake" lpmake.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a -lpthread ${LDFLAGS}
+${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o ../bin/lpmake lpmake.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a -lpthread ${LDFLAGS}
-${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o "../bin/$ARCH/lpadd" lpadd.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a -lpthread ${LDFLAGS}
+${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o ../bin/lpadd lpadd.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a -lpthread ${LDFLAGS}
-${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o "../bin/$ARCH/lpflash" lpflash.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a -lpthread ${LDFLAGS}
+${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o ../bin/lpflash lpflash.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a -lpthread ${LDFLAGS}
-${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o "../bin/$ARCH/lpunpack" lpunpack.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a -lpthread ${LDFLAGS}
+${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o ../bin/lpunpack lpunpack.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a -lpthread ${LDFLAGS}
-${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o "../bin/$ARCH/lpdump" lpdump.cc dynamic_partitions_device_info.pb.cc lpdump_host.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a ../lib/lib/libjsonpbparse.a ../lib/lib/libprotobuf-cpp-full.a -lpthread ${LDFLAGS}
+${CPP} -std=c++17 -I../lib/include ${CFLAGS} -D_FILE_OFFSET_BITS=64 -o ../bin/lpdump lpdump.cc dynamic_partitions_device_info.pb.cc lpdump_host.cc ../lib/lib/liblp.a ../lib/lib/libsparse.a ../lib/lib/libext4_utils.a ../lib/lib/libz.a ../lib/lib/libbase.a ../lib/lib/fmtlib.a ../lib/lib/liblog.a ../lib/lib/libcrypto_utils.a ../lib/lib/libcrypto.a ../lib/lib/libjsonpbparse.a ../lib/lib/libprotobuf-cpp-full.a -lpthread ${LDFLAGS}
cd ..
rm -rf lib/lib
-$STRIP "bin/$ARCH/lpmake"
-$STRIP "bin/$ARCH/lpadd"
-$STRIP "bin/$ARCH/lpflash"
-$STRIP "bin/$ARCH/lpunpack"
-$STRIP "bin/$ARCH/lpdump"
+$STRIP bin/lpmake
+$STRIP bin/lpadd
+$STRIP bin/lpflash
+$STRIP bin/lpunpack
+$STRIP bin/lpdump
\ No newline at end of file