Blame m4/lib-prefix.m4

Packit aa0600
# lib-prefix.m4 serial 7 (gettext-0.18)
Packit aa0600
dnl Copyright (C) 2001-2005, 2008-2016 Free Software Foundation, Inc.
Packit aa0600
dnl This file is free software; the Free Software Foundation
Packit aa0600
dnl gives unlimited permission to copy and/or distribute it,
Packit aa0600
dnl with or without modifications, as long as this notice is preserved.
Packit aa0600
Packit aa0600
dnl From Bruno Haible.
Packit aa0600
Packit aa0600
dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
Packit aa0600
dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
Packit aa0600
dnl require excessive bracketing.
Packit aa0600
ifdef([AC_HELP_STRING],
Packit aa0600
[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
Packit aa0600
[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
Packit aa0600
Packit aa0600
dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
Packit aa0600
dnl to access previously installed libraries. The basic assumption is that
Packit aa0600
dnl a user will want packages to use other packages he previously installed
Packit aa0600
dnl with the same --prefix option.
Packit aa0600
dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
Packit aa0600
dnl libraries, but is otherwise very convenient.
Packit aa0600
AC_DEFUN([AC_LIB_PREFIX],
Packit aa0600
[
Packit aa0600
  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
Packit aa0600
  AC_REQUIRE([AC_PROG_CC])
Packit aa0600
  AC_REQUIRE([AC_CANONICAL_HOST])
Packit aa0600
  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
Packit aa0600
  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
Packit aa0600
  dnl By default, look in $includedir and $libdir.
Packit aa0600
  use_additional=yes
Packit aa0600
  AC_LIB_WITH_FINAL_PREFIX([
Packit aa0600
    eval additional_includedir=\"$includedir\"
Packit aa0600
    eval additional_libdir=\"$libdir\"
Packit aa0600
  ])
Packit aa0600
  AC_LIB_ARG_WITH([lib-prefix],
Packit aa0600
[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
Packit aa0600
  --without-lib-prefix    don't search for libraries in includedir and libdir],
Packit aa0600
[
Packit aa0600
    if test "X$withval" = "Xno"; then
Packit aa0600
      use_additional=no
Packit aa0600
    else
Packit aa0600
      if test "X$withval" = "X"; then
Packit aa0600
        AC_LIB_WITH_FINAL_PREFIX([
Packit aa0600
          eval additional_includedir=\"$includedir\"
Packit aa0600
          eval additional_libdir=\"$libdir\"
Packit aa0600
        ])
Packit aa0600
      else
Packit aa0600
        additional_includedir="$withval/include"
Packit aa0600
        additional_libdir="$withval/$acl_libdirstem"
Packit aa0600
      fi
Packit aa0600
    fi
Packit aa0600
])
Packit aa0600
  if test $use_additional = yes; then
Packit aa0600
    dnl Potentially add $additional_includedir to $CPPFLAGS.
Packit aa0600
    dnl But don't add it
Packit aa0600
    dnl   1. if it's the standard /usr/include,
Packit aa0600
    dnl   2. if it's already present in $CPPFLAGS,
Packit aa0600
    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
Packit aa0600
    dnl   4. if it doesn't exist as a directory.
Packit aa0600
    if test "X$additional_includedir" != "X/usr/include"; then
Packit aa0600
      haveit=
Packit aa0600
      for x in $CPPFLAGS; do
Packit aa0600
        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
Packit aa0600
        if test "X$x" = "X-I$additional_includedir"; then
Packit aa0600
          haveit=yes
Packit aa0600
          break
Packit aa0600
        fi
Packit aa0600
      done
Packit aa0600
      if test -z "$haveit"; then
Packit aa0600
        if test "X$additional_includedir" = "X/usr/local/include"; then
Packit aa0600
          if test -n "$GCC"; then
Packit aa0600
            case $host_os in
Packit aa0600
              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
Packit aa0600
            esac
Packit aa0600
          fi
Packit aa0600
        fi
Packit aa0600
        if test -z "$haveit"; then
Packit aa0600
          if test -d "$additional_includedir"; then
Packit aa0600
            dnl Really add $additional_includedir to $CPPFLAGS.
Packit aa0600
            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
Packit aa0600
          fi
Packit aa0600
        fi
Packit aa0600
      fi
Packit aa0600
    fi
Packit aa0600
    dnl Potentially add $additional_libdir to $LDFLAGS.
Packit aa0600
    dnl But don't add it
Packit aa0600
    dnl   1. if it's the standard /usr/lib,
Packit aa0600
    dnl   2. if it's already present in $LDFLAGS,
Packit aa0600
    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
Packit aa0600
    dnl   4. if it doesn't exist as a directory.
Packit aa0600
    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
Packit aa0600
      haveit=
Packit aa0600
      for x in $LDFLAGS; do
Packit aa0600
        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
Packit aa0600
        if test "X$x" = "X-L$additional_libdir"; then
Packit aa0600
          haveit=yes
Packit aa0600
          break
Packit aa0600
        fi
Packit aa0600
      done
Packit aa0600
      if test -z "$haveit"; then
Packit aa0600
        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
Packit aa0600
          if test -n "$GCC"; then
Packit aa0600
            case $host_os in
Packit aa0600
              linux*) haveit=yes;;
Packit aa0600
            esac
Packit aa0600
          fi
Packit aa0600
        fi
Packit aa0600
        if test -z "$haveit"; then
Packit aa0600
          if test -d "$additional_libdir"; then
Packit aa0600
            dnl Really add $additional_libdir to $LDFLAGS.
Packit aa0600
            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
Packit aa0600
          fi
Packit aa0600
        fi
Packit aa0600
      fi
Packit aa0600
    fi
Packit aa0600
  fi
Packit aa0600
])
Packit aa0600
Packit aa0600
dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
Packit aa0600
dnl acl_final_exec_prefix, containing the values to which $prefix and
Packit aa0600
dnl $exec_prefix will expand at the end of the configure script.
Packit aa0600
AC_DEFUN([AC_LIB_PREPARE_PREFIX],
Packit aa0600
[
Packit aa0600
  dnl Unfortunately, prefix and exec_prefix get only finally determined
Packit aa0600
  dnl at the end of configure.
Packit aa0600
  if test "X$prefix" = "XNONE"; then
Packit aa0600
    acl_final_prefix="$ac_default_prefix"
Packit aa0600
  else
Packit aa0600
    acl_final_prefix="$prefix"
Packit aa0600
  fi
Packit aa0600
  if test "X$exec_prefix" = "XNONE"; then
Packit aa0600
    acl_final_exec_prefix='${prefix}'
Packit aa0600
  else
Packit aa0600
    acl_final_exec_prefix="$exec_prefix"
Packit aa0600
  fi
Packit aa0600
  acl_save_prefix="$prefix"
Packit aa0600
  prefix="$acl_final_prefix"
Packit aa0600
  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
Packit aa0600
  prefix="$acl_save_prefix"
Packit aa0600
])
Packit aa0600
Packit aa0600
dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
Packit aa0600
dnl variables prefix and exec_prefix bound to the values they will have
Packit aa0600
dnl at the end of the configure script.
Packit aa0600
AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
Packit aa0600
[
Packit aa0600
  acl_save_prefix="$prefix"
Packit aa0600
  prefix="$acl_final_prefix"
Packit aa0600
  acl_save_exec_prefix="$exec_prefix"
Packit aa0600
  exec_prefix="$acl_final_exec_prefix"
Packit aa0600
  $1
Packit aa0600
  exec_prefix="$acl_save_exec_prefix"
Packit aa0600
  prefix="$acl_save_prefix"
Packit aa0600
])
Packit aa0600
Packit aa0600
dnl AC_LIB_PREPARE_MULTILIB creates
Packit aa0600
dnl - a variable acl_libdirstem, containing the basename of the libdir, either
Packit aa0600
dnl   "lib" or "lib64" or "lib/64",
Packit aa0600
dnl - a variable acl_libdirstem2, as a secondary possible value for
Packit aa0600
dnl   acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
Packit aa0600
dnl   "lib/amd64".
Packit aa0600
AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
Packit aa0600
[
Packit aa0600
  dnl There is no formal standard regarding lib and lib64.
Packit aa0600
  dnl On glibc systems, the current practice is that on a system supporting
Packit aa0600
  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
Packit aa0600
  dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
Packit aa0600
  dnl the compiler's default mode by looking at the compiler's library search
Packit aa0600
  dnl path. If at least one of its elements ends in /lib64 or points to a
Packit aa0600
  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
Packit aa0600
  dnl Otherwise we use the default, namely "lib".
Packit aa0600
  dnl On Solaris systems, the current practice is that on a system supporting
Packit aa0600
  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
Packit aa0600
  dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
Packit aa0600
  dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
Packit aa0600
  AC_REQUIRE([AC_CANONICAL_HOST])
Packit aa0600
  acl_libdirstem=lib
Packit aa0600
  acl_libdirstem2=
Packit aa0600
  case "$host_os" in
Packit aa0600
    solaris*)
Packit aa0600
      dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
Packit aa0600
      dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
Packit aa0600
      dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
Packit aa0600
      dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
Packit aa0600
      dnl symlink is missing, so we set acl_libdirstem2 too.
Packit aa0600
      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
Packit aa0600
        [AC_EGREP_CPP([sixtyfour bits], [
Packit aa0600
#ifdef _LP64
Packit aa0600
sixtyfour bits
Packit aa0600
#endif
Packit aa0600
           ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
Packit aa0600
        ])
Packit aa0600
      if test $gl_cv_solaris_64bit = yes; then
Packit aa0600
        acl_libdirstem=lib/64
Packit aa0600
        case "$host_cpu" in
Packit aa0600
          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
Packit aa0600
          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
Packit aa0600
        esac
Packit aa0600
      fi
Packit aa0600
      ;;
Packit aa0600
    *)
Packit aa0600
      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
Packit aa0600
      if test -n "$searchpath"; then
Packit aa0600
        acl_save_IFS="${IFS= 	}"; IFS=":"
Packit aa0600
        for searchdir in $searchpath; do
Packit aa0600
          if test -d "$searchdir"; then
Packit aa0600
            case "$searchdir" in
Packit aa0600
              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
Packit aa0600
              */../ | */.. )
Packit aa0600
                # Better ignore directories of this form. They are misleading.
Packit aa0600
                ;;
Packit aa0600
              *) searchdir=`cd "$searchdir" && pwd`
Packit aa0600
                 case "$searchdir" in
Packit aa0600
                   */lib64 ) acl_libdirstem=lib64 ;;
Packit aa0600
                 esac ;;
Packit aa0600
            esac
Packit aa0600
          fi
Packit aa0600
        done
Packit aa0600
        IFS="$acl_save_IFS"
Packit aa0600
      fi
Packit aa0600
      ;;
Packit aa0600
  esac
Packit aa0600
  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
Packit aa0600
])