Blame m4/lib-prefix.m4

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