Blame gnulib/m4/lib-prefix.m4

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