From 919eca300c41f851e0edffdd50f8fd834bb8822f Mon Sep 17 00:00:00 2001
From: Your Name <j@842.be>
Date: Wed, 28 May 2025 20:08:43 +1200
Subject: [PATCH] :-'Generic Commit'

---
 dropshell-tool/build.sh             |  2 +-
 dropshell-tool/build_openssl.sh     | 31 +++++++++++++++++++++++++++--
 dropshell-tool/src/GetbinClient.cpp |  3 +++
 3 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/dropshell-tool/build.sh b/dropshell-tool/build.sh
index b8ded60..b93804b 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"
+"${SCRIPT_DIR}/build_openssl.sh"
 
 
 # run the build script
diff --git a/dropshell-tool/build_openssl.sh b/dropshell-tool/build_openssl.sh
index ab96cbe..9253eb9 100755
--- a/dropshell-tool/build_openssl.sh
+++ b/dropshell-tool/build_openssl.sh
@@ -1,13 +1,19 @@
 #!/bin/bash
 set -e
 
-OPENSSL_VERSION=3.5.1
+OPENSSL_VERSION=3.5.0
 
 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 BUILD_DIR="${SCRIPT_DIR}/build"
 MUSL_CROSS_DIR="$HOME/.musl-cross"
 mkdir -p "$BUILD_DIR"
 
+# Helper: compare versions (returns 0 if $1 >= $2)
+version_ge() {
+    [ "$1" = "$2" ] && return 0
+    [ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$2" ]
+}
+
 # Find all installed musl toolchains
 TOOLCHAINS=()
 for tc in "$MUSL_CROSS_DIR"/*-linux-musl-cross; do
@@ -43,8 +49,29 @@ for ARCH in "${TOOLCHAINS[@]}"; do
     AR="$MUSL_PREFIX/bin/${ARCH}-linux-musl-ar"
     RANLIB="$MUSL_PREFIX/bin/${ARCH}-linux-musl-ranlib"
 
+    SKIP_BUILD=0
     if [ -f "$SYSROOT/usr/lib/libssl.a" ]; then
-        echo "libssl.a already exists for $ARCH at $SYSROOT/usr/lib/libssl.a, skipping build."
+        # Try to extract version from opensslv.h
+        OPENSSLV_H="$SYSROOT/usr/include/openssl/opensslv.h"
+        if [ -f "$OPENSSLV_H" ]; then
+            INSTALLED_VERSION=$(grep '# *define *OPENSSL_VERSION_TEXT' "$OPENSSLV_H" | sed -E 's/.*OpenSSL ([0-9.]+)[^ ]*.*/\1/')
+            if [ -n "$INSTALLED_VERSION" ]; then
+                echo "Found installed OpenSSL version: $INSTALLED_VERSION"
+                if version_ge "$INSTALLED_VERSION" "$OPENSSL_VERSION"; then
+                    echo "OpenSSL $INSTALLED_VERSION is up-to-date (>= $OPENSSL_VERSION), skipping build for $ARCH."
+                    SKIP_BUILD=1
+                else
+                    echo "OpenSSL $INSTALLED_VERSION is older than $OPENSSL_VERSION, will rebuild."
+                fi
+            else
+                echo "Could not determine installed OpenSSL version, will rebuild."
+            fi
+        else
+            echo "No opensslv.h found, will rebuild."
+        fi
+    fi
+
+    if [ "$SKIP_BUILD" -eq 1 ]; then
         echo
         continue
     fi
diff --git a/dropshell-tool/src/GetbinClient.cpp b/dropshell-tool/src/GetbinClient.cpp
index d1e5ea8..310fa53 100644
--- a/dropshell-tool/src/GetbinClient.cpp
+++ b/dropshell-tool/src/GetbinClient.cpp
@@ -1,4 +1,7 @@
+#ifndef CPPHTTPLIB_OPENSSL_SUPPORT
 #define CPPHTTPLIB_OPENSSL_SUPPORT
+#endif
+
 #include "GetbinClient.hpp"
 #include "httplib.hpp"
 #include <fstream>