#!/bin/sh
# configure - detect OpenSSL and write src/Makevars
# Fallback order: pkg-config/pkgconf -> MacPorts -> Homebrew (ARM) -> Homebrew (Intel) -> system

OPENSSL_CFLAGS=""
OPENSSL_LIBS=""

# Helper: print OS-specific installation instructions and abort
openssl_not_found() {
  echo ""
  echo "------------------------- INSTALLATION ERROR ---------------------------"
  echo "Configuration failed: OpenSSL (libssl) was not found on this system."
  echo ""
  echo "Please install the OpenSSL development libraries using the appropriate"
  echo "command for your operating system:"
  echo ""
  echo "  Ubuntu/Debian:   sudo apt-get install -y libssl-dev"
  echo "  RHEL/Fedora:     sudo dnf install -y openssl-devel"
  echo "  Alpine:          apk add openssl-dev"
  echo "  macOS (Homebrew):brew install openssl@3"
  echo "  macOS (MacPorts):sudo port install openssl3"
  echo "------------------------------------------------------------------------"
  echo ""
  exit 1
}

# 1. Try pkgconf or pkg-config
PKG_CONFIG=""
if command -v pkgconf > /dev/null 2>&1; then
  PKG_CONFIG="pkgconf"
elif command -v pkg-config > /dev/null 2>&1; then
  PKG_CONFIG="pkg-config"
fi

if [ -n "$PKG_CONFIG" ]; then
  if $PKG_CONFIG --exists libssl 2>/dev/null || $PKG_CONFIG --exists openssl 2>/dev/null; then
    OPENSSL_CFLAGS=$($PKG_CONFIG --cflags openssl 2>/dev/null)
    OPENSSL_LIBS=$($PKG_CONFIG --libs openssl 2>/dev/null)
  fi
fi

# 2. Fallbacks when pkg-config found nothing
if [ -z "$OPENSSL_LIBS" ]; then
  if [ -f /opt/local/libexec/openssl3/include/openssl/evp.h ]; then
    # MacPorts
    OPENSSL_CFLAGS="-I/opt/local/libexec/openssl3/include"
    OPENSSL_LIBS="-L/opt/local/libexec/openssl3/lib -lssl -lcrypto"
  elif [ -f /opt/homebrew/opt/openssl@3/include/openssl/evp.h ]; then
    # Homebrew (Apple Silicon)
    OPENSSL_CFLAGS="-I/opt/homebrew/opt/openssl@3/include"
    OPENSSL_LIBS="-L/opt/homebrew/opt/openssl@3/lib -lssl -lcrypto"
  elif [ -f /usr/local/opt/openssl@3/include/openssl/evp.h ]; then
    # Homebrew (Intel)
    OPENSSL_CFLAGS="-I/usr/local/opt/openssl@3/include"
    OPENSSL_LIBS="-L/usr/local/opt/openssl@3/lib -lssl -lcrypto"
  elif [ -f /usr/include/openssl/evp.h ] || [ -f /usr/local/include/openssl/evp.h ]; then
    # Linux system default
    OPENSSL_LIBS="-lssl -lcrypto"
  else
    openssl_not_found
  fi
fi

echo "OpenSSL CFLAGS: ${OPENSSL_CFLAGS}"
echo "OpenSSL LIBS:   ${OPENSSL_LIBS}"

sed \
  -e "s|@OPENSSL_CFLAGS@|${OPENSSL_CFLAGS}|g" \
  -e "s|@OPENSSL_LIBS@|${OPENSSL_LIBS}|g" \
  src/Makevars.in > src/Makevars

exit 0
