From b88258f49fd8727faf7ebeddff7d13c78d4f628e Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 28 May 2025 20:03:34 +1200 Subject: [PATCH] :-'Generic Commit' --- .gitignore | 2 +- dropshell-tool/build.sh | 2 +- dropshell-tool/build_openssl.sh | 86 ++++++++++++++++++++++++++++----- 3 files changed, 75 insertions(+), 15 deletions(-) mode change 100644 => 100755 dropshell-tool/build_openssl.sh diff --git a/.gitignore b/.gitignore index 85b9172..4e25472 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ build/ **/build/ **/cmake-build-*/ output/ -openssl*/ +**/openssl-*/ # Compiled Object files diff --git a/dropshell-tool/build.sh b/dropshell-tool/build.sh index 49f3047..b8ded60 100755 --- a/dropshell-tool/build.sh +++ b/dropshell-tool/build.sh @@ -14,7 +14,7 @@ if [ ! -f "${DROPSHELL_BUILD_DIR}" ]; then fi -/bin/bash "${SCRIPT_DIR}/build_openssl.sh" +#/bin/bash "${SCRIPT_DIR}/build_openssl.sh" # run the build script diff --git a/dropshell-tool/build_openssl.sh b/dropshell-tool/build_openssl.sh old mode 100644 new mode 100755 index 669fa26..ab96cbe --- a/dropshell-tool/build_openssl.sh +++ b/dropshell-tool/build_openssl.sh @@ -1,18 +1,78 @@ #!/bin/bash set -e -export ARCH=x86_64 -export MUSL_PREFIX=$HOME/.musl-cross/${ARCH}-linux-musl-cross -export SYSROOT=$MUSL_PREFIX/${ARCH}-linux-musl/sysroot -export CC=$MUSL_PREFIX/bin/${ARCH}-linux-musl-gcc -export AR=$MUSL_PREFIX/bin/${ARCH}-linux-musl-ar -export RANLIB=$MUSL_PREFIX/bin/${ARCH}-linux-musl-ranlib -OPENSSL_VERSION=1.1.1w +OPENSSL_VERSION=3.5.1 -wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz -tar xf openssl-${OPENSSL_VERSION}.tar.gz -cd openssl-${OPENSSL_VERSION} +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +BUILD_DIR="${SCRIPT_DIR}/build" +MUSL_CROSS_DIR="$HOME/.musl-cross" +mkdir -p "$BUILD_DIR" -CC=$CC AR=$AR RANLIB=$RANLIB ./Configure linux-x86_64 no-shared --prefix="$SYSROOT" -make -j"$(nproc)" -make install_sw \ No newline at end of file +# Find all installed musl toolchains +TOOLCHAINS=() +for tc in "$MUSL_CROSS_DIR"/*-linux-musl-cross; do + [ -d "$tc" ] || continue + arch=$(basename "$tc" | sed 's/-linux-musl-cross//') + TOOLCHAINS+=("$arch") +done + +if [ ${#TOOLCHAINS[@]} -eq 0 ]; then + echo "No musl toolchains found in $MUSL_CROSS_DIR. Exiting." + exit 1 +fi + +echo "Found musl toolchains: ${TOOLCHAINS[*]}" + +for ARCH in "${TOOLCHAINS[@]}"; do + echo "===============================" + echo "Checking OpenSSL for $ARCH..." + echo "===============================" + if [ "$ARCH" = "x86_64" ]; then + MUSL_PREFIX="$MUSL_CROSS_DIR/x86_64-linux-musl-cross" + OPENSSL_TARGET=linux-x86_64 + elif [ "$ARCH" = "aarch64" ]; then + MUSL_PREFIX="$MUSL_CROSS_DIR/aarch64-linux-musl-cross" + OPENSSL_TARGET=linux-aarch64 + else + # Try to guess OpenSSL target for other musl toolchains + OPENSSL_TARGET="linux-$ARCH" + MUSL_PREFIX="$MUSL_CROSS_DIR/${ARCH}-linux-musl-cross" + fi + SYSROOT="$MUSL_PREFIX/${ARCH}-linux-musl/sysroot" + CC="$MUSL_PREFIX/bin/${ARCH}-linux-musl-gcc" + AR="$MUSL_PREFIX/bin/${ARCH}-linux-musl-ar" + RANLIB="$MUSL_PREFIX/bin/${ARCH}-linux-musl-ranlib" + + if [ -f "$SYSROOT/usr/lib/libssl.a" ]; then + echo "libssl.a already exists for $ARCH at $SYSROOT/usr/lib/libssl.a, skipping build." + echo + continue + fi + + cd "$BUILD_DIR" + if [ ! -d "openssl-${OPENSSL_VERSION}" ]; then + if [ ! -f "openssl-${OPENSSL_VERSION}.tar.gz" ]; then + wget "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" + fi + tar xf "openssl-${OPENSSL_VERSION}.tar.gz" + fi + cd "openssl-${OPENSSL_VERSION}" + + # Clean previous build for this arch + make clean || true + + echo "Configuring for $ARCH with sysroot $SYSROOT..." + CC="$CC" AR="$AR" RANLIB="$RANLIB" ./Configure "$OPENSSL_TARGET" no-shared --prefix="$SYSROOT/usr" + echo "Building..." + make -j"$(nproc)" + echo "Installing to $SYSROOT/usr ..." + make install_sw + cd "$BUILD_DIR" + echo "Done for $ARCH." + echo + # Remove build dir for next arch to avoid cross contamination + rm -rf "openssl-${OPENSSL_VERSION}" + tar xf "openssl-${OPENSSL_VERSION}.tar.gz" +done + +echo "OpenSSL built and installed for all detected musl toolchains." \ No newline at end of file