Blame m4/lib-prefix.m4

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