Files
libressl/scripts/test
2025-08-26 01:12:22 -06:00

211 lines
5.0 KiB
Bash
Executable File

#!/bin/sh
set -e
set -x
if [ "$ARCH" = "" ]; then
ARCH=`uname -m`
fi
if [ "$ARCH" = "mingw32" -o "$ARCH" = "mingw64" -o "$ARCH" = "arm32" ]; then
unset CC
fi
ENABLE_ASM="${ENABLE_ASM:=ON}"
if type apt-get >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install -y cmake ninja-build
fi
# generate source tree
./autogen.sh
VERSION=`cat VERSION`
# test macOS
if [ `uname` = "Darwin" ]; then
# test autotools
./configure
# make distribution
make -j 4 distcheck
# test cmake
tar zxvf libressl-$VERSION.tar.gz
cd libressl-$VERSION
(
mkdir build-static
cd build-static
cmake -DCMAKE_OSX_ARCHITECTURES=$ARCH ..
make -j 4
if [ "$ARCH" = "arm64" ] && [ "$OS" = "macos-12" ] || [ "$OS" = "macos-13" ]; then
echo "##### skip tests"
else
make test
fi
)
(
mkdir build-shared
cd build-shared
cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_OSX_ARCHITECTURES=$ARCH ..
make -j 4
if [ "$ARCH" = "arm64" ] && [ "$OS" = "macos-12" ] || [ "$OS" = "macos-13" ]; then
echo "##### skip tests"
else
make test
fi
)
# assuming Linux below
elif [ "$ARCH" = "native" ]; then
# test autotools
./configure
# make distribution
make -j 4 distcheck
tar zxvf libressl-$VERSION.tar.gz
cd libressl-$VERSION
# test cmake and ninja
(
mkdir build-static
cd build-static
cmake -GNinja -DENABLE_ASM=${ENABLE_ASM} ..
ninja
ninja test
)
(
mkdir build-shared
cd build-shared
cmake -GNinja -DBUILD_SHARED_LIBS=ON -DENABLE_ASM=${ENABLE_ASM} ..
ninja
ninja test
)
elif [ "$ARCH" = "mingw32" -o "$ARCH" = "mingw64" ]; then
CPU=i686
if [ "$ARCH" = "mingw64" ]; then
CPU=x86_64
fi
if ! type i686-w64-mingw32-gcc > /dev/null; then
sudo apt-get install -y mingw-w64
fi
./configure --host=$CPU-w64-mingw32
make -j 4
(
rm -fr build-static
mkdir build-static
cd build-static
cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=../scripts/$CPU-w64-mingw32.cmake -DENABLE_ASM=${ENABLE_ASM} ..
ninja -j 4
)
(
rm -fr build-shared
mkdir build-shared
cd build-shared
cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=../scripts/$CPU-w64-mingw32.cmake -DBUILD_SHARED_LIBS=ON -DENABLE_ASM=${ENABLE_ASM} ..
ninja -j 4
)
elif [ "$ARCH" = "arm32" -o "$ARCH" = "arm64" ]; then
sudo apt-get install -y qemu-user-static binfmt-support
if [ "$ARCH" = "arm32" ]; then
sudo apt-get install -y g++-arm-linux-gnueabihf
sudo ln -sf /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/
./configure --host=arm-linux-gnueabihf
LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib make -j 4 check
else
sudo apt-get install -y g++-aarch64-linux-gnu
sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/
./configure --host=aarch64-linux-gnu
LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib make -j 4 check
fi
file apps/openssl/.libs/openssl
elif [ "$ARCH" = "loong64" ]; then
sudo apt install -y qemu-user-static binfmt-support g++-14-loongarch64-linux-gnu
sudo ln -sf /usr/loongarch64-linux-gnu/lib64/ld-linux-loongarch-lp64d.so.1 /lib64
CC=loongarch64-linux-gnu-gcc-14
CXX=loongarch64-linux-gnu++-14
AR=loongarch64-linux-gnu-ar
STRIP=loongarch64-linux-gnu-strip-14
RANLIB=loongarch64-linux-gnu-ranlib
./configure --host=loongarch64-linux-gnu
LD_LIBRARY_PATH=/usr/loongarch64-linux-gnu/lib make -j 4 check
file apps/openssl/openssl
elif [ "$ARCH" = "mips32" -o "$ARCH" = "mips64" ]; then
sudo apt-get install -y qemu-user-static binfmt-support
if [ "$ARCH" = "mips32" ]; then
sudo apt-get install -y g++-mips-linux-gnu
sudo ln -sf /usr/mipsel-linux-gnu/lib/ld.so.1 /lib/
./configure --host=mipsel-linux-gnu
LD_LIBRARY_PATH=/usr/mipsel-linux-gnu/lib make -j 4 check
else
sudo apt-get install -y g++-mips64el-linux-gnuabi64
sudo ln -sf /usr/mips64el-linux-gnuabi64/lib64/ld.so.1 /lib64
./configure --host=mips64el-linux-gnuabi64
LD_LIBRARY_PATH=/usr/mips64el-linux-gnuabi64/lib make -j 4 check
fi
file apps/openssl/.libs/openssl
elif [ "$ARCH" = "android" ]; then
export TC_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake
# set target API level and architecture
level_arch=""
level=$MIN_NAL
while [ $level -le $MAX_NAL ]
do
level_arch="$level_arch $level;x86_64"
level_arch="$level_arch $level;x86"
level_arch="$level_arch $level;arm64-v8a"
level=`expr $level + 1`
done
echo "##### level_arch = $level_arch"
# build each API level and architecture
for la in $level_arch
do
NAL=`echo $la | cut -d ';' -f 1`
ABI=`echo $la | cut -d ';' -f 2`
echo ""
echo "##### Date: `date`, Native API level: $NAL, ABI: $ABI"
(
build_dir=build-$NAL_$ABI
rm -fr $build_dir
mkdir $build_dir
cd $build_dir
echo "##### cmake -GNinja -DCMAKE_MAKE_PROGRAM=ninja -DANDROID_NDK=$ANDROID_NDK_HOME -DCMAKE_TOOLCHAIN_FILE=$TC_FILE -DANDROID_ABI=$ABI -DANDROID_NATIVE_API_LEVEL=$NAL .."
cmake -GNinja -DCMAKE_MAKE_PROGRAM=ninja \
-DANDROID_NDK=$ANDROID_NDK_HOME \
-DCMAKE_TOOLCHAIN_FILE=$TC_FILE \
-DANDROID_ABI=$ABI -DANDROID_NATIVE_API_LEVEL=$NAL \
-DENABLE_ASM=${ENABLE_ASM} ..
ninja -j 4
echo ""
file apps/openssl/openssl
)
done
fi