Blame m4/lib-prefix.m4

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