#!/bin/sh

LANG_OLD=$LANG
LANG=C

#verbose="yes"

libdir="$PWD/lib"

cxx_system=$(grep -Eao 'GLIBCXX_[0-9.]{1,}.CXXABI_' $(ldd "$libdir/testrt" | grep libstdc++.so.6 | awk '{print $3}') | sed 's|.CXXABI_||; s|GLIBCXX_||')
cxx_bundle=$(grep -Eao 'GLIBCXX_[0-9.]{1,}.CXXABI_' "$libdir/libstdc++/libstdc++.so.6" | sed 's|.CXXABI_||; s|GLIBCXX_||')
cxx_newer=$(echo "$cxx_bundle\n$cxx_system" | sort -V | tail -n1)

gcc_system=$(grep -Eao 'GCC_[0-9.]{1,}.GLIBC_' $(ldd "$libdir/testrt" | grep libgcc_s.so.1 | awk '{print $3}') | sed 's|.GLIBC_||; s|GCC_||')
gcc_bundle=$(grep -Eao 'GCC_[0-9.]{1,}.GLIBC_' "$libdir/libgcc_s/libgcc_s.so.1" | sed 's|.GLIBC_||; s|GCC_||')
gcc_newer=$(echo "$gcc_bundle\n$gcc_system" | sort -V | tail -n1)

if [ "$verbose" = "yes" ]; then
  echo "Bundled libraries:
libstdc++.so.6 => $cxx_bundle
libgcc_s.so.1  => $gcc_bundle

System libraries:
libstdc++.so.6 => $cxx_system
libgcc_s.so.1  => $gcc_system
"
fi

if [ $cxx_bundle = $cxx_newer ] && [ $cxx_system != $cxx_bundle ] ; then
  LD_LIBRARY_PATH="$libdir/libstdc++:$LD_LIBRARY_PATH"
  if [ "$verbose" = "yes" ]; then
    echo "adding bundled libstdc++.so.6 library to search path"
  fi
fi

if [ $gcc_bundle = $gcc_newer ] && [ $gcc_system != $gcc_bundle ] ; then
  LD_LIBRARY_PATH="$libdir/libgcc_s:$LD_LIBRARY_PATH"
  if [ "$verbose" = "yes" ]; then
    echo "adding bundled libgcc_s.so.1 library to search path"
  fi
fi

export LD_LIBRARY_PATH
LANG=$LANG_OLD
aegisub-real $*
