#! /bin/sh
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable at run time.
#
#   Copyright 1996-2025 Free Software Foundation, Inc.
#   Taken from GNU libtool, 2003
#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
#   As a special exception to the GNU General Public License, if you
#   distribute this file as part of a program that contains a
#   configuration script generated by Autoconf, you may include it under
#   the same distribution terms that you use for the rest of that program.

# func_usage
# outputs to stdout the --help usage message.
func_usage ()
{
  echo "\
Usage: config.libpath [OPTION] HOST HOST_CPU_C_ABI_32BIT

Prints shell variable assignments that describe how to set the
run time search path of shared libraries in an executable at run time.

The first argument passed to this file is the canonical host specification,
   CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
or
   CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM

The second argument passed to this file is 'yes' if the C language ABI
is 32-bit, or 'no' if it is 64-bit.

The environment variable LD should be set by the caller.

The set of defined variables is at the end of this script.

Options:
      --help           print this help and exit
      --version        print version information and exit

Send patches and bug reports to <bug-gnulib@gnu.org>."
}

# func_version
# outputs to stdout the --version message.
func_version ()
{
  echo "config.libpath (GNU gnulib, module relocatable-prog)"
  echo "Copyright (C) 2025 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law."
  echo
  printf 'Written by %s.\n' "Bruno Haible"
}

# func_fatal_error message
# outputs to stderr a fatal error message, and terminates the program.
func_fatal_error ()
{
  echo "config.libpath: *** $1" 1>&2
  echo "config.libpath: *** Stop." 1>&2
  exit 1
}

# Command-line option processing.
while test $# -gt 0; do
  case "$1" in
    --help | --hel | --he | --h )
      func_usage
      exit 0 ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v )
      func_version
      exit 0 ;;
    -- )      # Stop option processing
      shift; break ;;
    -* )
      func_fatal_error "unrecognized option: $1"
      ;;
    * )
      break ;;
  esac
done

if test $# -gt 2; then
  func_fatal_error "too many arguments"
fi
if test $# -lt 2; then
  func_fatal_error "too few arguments"
fi

host="$1"
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
abi_32bit="$2"

shlibpath_var=
case $host_os in
  aix3*)
    shlibpath_var=LIBPATH
    ;;
  aix[4-9]*)
    if test "$host_cpu" = ia64; then
      # AIX 5 supports IA64
      shlibpath_var=LD_LIBRARY_PATH
    else
      shlibpath_var=LIBPATH
    fi
    ;;
  beos*)
    shlibpath_var=LIBRARY_PATH
    ;;
  bsdi[45]*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  cygwin* | mingw* | pw32* | cegcc*)
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
  darwin* | rhapsody*)
    shlibpath_var=DYLD_LIBRARY_PATH
    ;;
  dgux*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  freebsd* | dragonfly* | midnightbsd*)
    case $host_cpu in
      powerpc64)
        if test "$abi_32bit" != yes; then
          shlibpath_var=LD_LIBRARY_PATH
        else
          shlibpath_var=LD_32_LIBRARY_PATH
        fi
        ;;
      *)
        shlibpath_var=LD_LIBRARY_PATH
        ;;
    esac
    ;;
  gnu*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  hpux9* | hpux10* | hpux11*)
    case "$host_cpu" in
      ia64* | hppa*64*) shlibpath_var=LD_LIBRARY_PATH ;;
      *) shlibpath_var=SHLIB_PATH ;;
    esac
    ;;
  interix[3-9]*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  nonstopux*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  linux*oldld* | linux*aout* | linux*coff*)
    ;;
  linux* | k*bsd*-gnu)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  netbsd*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  newsos6)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  nto-qnx*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  openbsd*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  os2*)
    shlibpath_var=LIBPATH
    ;;
  osf3* | osf4* | osf5*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  rdos*)
    ;;
  solaris*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  sunos4*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  sysv4 | sysv4.3*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  sysv4*MP*)
    if test -d /usr/nec ;then
      shlibpath_var=LD_LIBRARY_PATH
    fi
    ;;
  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
  uts4*)
    shlibpath_var=LD_LIBRARY_PATH
    ;;
esac

LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF

# This is the shared library path variable.
shlibpath_var=$shlibpath_var

EOF
