File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srcm4 / lib-prefix.m4
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 13:38:46 2021 UTC (3 years, 3 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, HEAD
libiconv 1.16

    1: # lib-prefix.m4 serial 14
    2: dnl Copyright (C) 2001-2005, 2008-2019 Free Software Foundation, Inc.
    3: dnl This file is free software; the Free Software Foundation
    4: dnl gives unlimited permission to copy and/or distribute it,
    5: dnl with or without modifications, as long as this notice is preserved.
    6: 
    7: dnl From Bruno Haible.
    8: 
    9: dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
   10: dnl to access previously installed libraries. The basic assumption is that
   11: dnl a user will want packages to use other packages he previously installed
   12: dnl with the same --prefix option.
   13: dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
   14: dnl libraries, but is otherwise very convenient.
   15: AC_DEFUN([AC_LIB_PREFIX],
   16: [
   17:   AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
   18:   AC_REQUIRE([AC_PROG_CC])
   19:   AC_REQUIRE([AC_CANONICAL_HOST])
   20:   AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
   21:   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
   22:   dnl By default, look in $includedir and $libdir.
   23:   use_additional=yes
   24:   AC_LIB_WITH_FINAL_PREFIX([
   25:     eval additional_includedir=\"$includedir\"
   26:     eval additional_libdir=\"$libdir\"
   27:   ])
   28:   AC_ARG_WITH([lib-prefix],
   29: [[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
   30:   --without-lib-prefix    don't search for libraries in includedir and libdir]],
   31: [
   32:     if test "X$withval" = "Xno"; then
   33:       use_additional=no
   34:     else
   35:       if test "X$withval" = "X"; then
   36:         AC_LIB_WITH_FINAL_PREFIX([
   37:           eval additional_includedir=\"$includedir\"
   38:           eval additional_libdir=\"$libdir\"
   39:         ])
   40:       else
   41:         additional_includedir="$withval/include"
   42:         additional_libdir="$withval/$acl_libdirstem"
   43:       fi
   44:     fi
   45: ])
   46:   if test $use_additional = yes; then
   47:     dnl Potentially add $additional_includedir to $CPPFLAGS.
   48:     dnl But don't add it
   49:     dnl   1. if it's the standard /usr/include,
   50:     dnl   2. if it's already present in $CPPFLAGS,
   51:     dnl   3. if it's /usr/local/include and we are using GCC on Linux,
   52:     dnl   4. if it doesn't exist as a directory.
   53:     if test "X$additional_includedir" != "X/usr/include"; then
   54:       haveit=
   55:       for x in $CPPFLAGS; do
   56:         AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
   57:         if test "X$x" = "X-I$additional_includedir"; then
   58:           haveit=yes
   59:           break
   60:         fi
   61:       done
   62:       if test -z "$haveit"; then
   63:         if test "X$additional_includedir" = "X/usr/local/include"; then
   64:           if test -n "$GCC"; then
   65:             case $host_os in
   66:               linux* | gnu* | k*bsd*-gnu) haveit=yes;;
   67:             esac
   68:           fi
   69:         fi
   70:         if test -z "$haveit"; then
   71:           if test -d "$additional_includedir"; then
   72:             dnl Really add $additional_includedir to $CPPFLAGS.
   73:             CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
   74:           fi
   75:         fi
   76:       fi
   77:     fi
   78:     dnl Potentially add $additional_libdir to $LDFLAGS.
   79:     dnl But don't add it
   80:     dnl   1. if it's the standard /usr/lib,
   81:     dnl   2. if it's already present in $LDFLAGS,
   82:     dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
   83:     dnl   4. if it doesn't exist as a directory.
   84:     if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
   85:       haveit=
   86:       for x in $LDFLAGS; do
   87:         AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
   88:         if test "X$x" = "X-L$additional_libdir"; then
   89:           haveit=yes
   90:           break
   91:         fi
   92:       done
   93:       if test -z "$haveit"; then
   94:         if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
   95:           if test -n "$GCC"; then
   96:             case $host_os in
   97:               linux*) haveit=yes;;
   98:             esac
   99:           fi
  100:         fi
  101:         if test -z "$haveit"; then
  102:           if test -d "$additional_libdir"; then
  103:             dnl Really add $additional_libdir to $LDFLAGS.
  104:             LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
  105:           fi
  106:         fi
  107:       fi
  108:     fi
  109:   fi
  110: ])
  111: 
  112: dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
  113: dnl acl_final_exec_prefix, containing the values to which $prefix and
  114: dnl $exec_prefix will expand at the end of the configure script.
  115: AC_DEFUN([AC_LIB_PREPARE_PREFIX],
  116: [
  117:   dnl Unfortunately, prefix and exec_prefix get only finally determined
  118:   dnl at the end of configure.
  119:   if test "X$prefix" = "XNONE"; then
  120:     acl_final_prefix="$ac_default_prefix"
  121:   else
  122:     acl_final_prefix="$prefix"
  123:   fi
  124:   if test "X$exec_prefix" = "XNONE"; then
  125:     acl_final_exec_prefix='${prefix}'
  126:   else
  127:     acl_final_exec_prefix="$exec_prefix"
  128:   fi
  129:   acl_save_prefix="$prefix"
  130:   prefix="$acl_final_prefix"
  131:   eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
  132:   prefix="$acl_save_prefix"
  133: ])
  134: 
  135: dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
  136: dnl variables prefix and exec_prefix bound to the values they will have
  137: dnl at the end of the configure script.
  138: AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
  139: [
  140:   acl_save_prefix="$prefix"
  141:   prefix="$acl_final_prefix"
  142:   acl_save_exec_prefix="$exec_prefix"
  143:   exec_prefix="$acl_final_exec_prefix"
  144:   $1
  145:   exec_prefix="$acl_save_exec_prefix"
  146:   prefix="$acl_save_prefix"
  147: ])
  148: 
  149: dnl AC_LIB_PREPARE_MULTILIB creates
  150: dnl - a variable acl_libdirstem, containing the basename of the libdir, either
  151: dnl   "lib" or "lib64" or "lib/64",
  152: dnl - a variable acl_libdirstem2, as a secondary possible value for
  153: dnl   acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
  154: dnl   "lib/amd64".
  155: AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
  156: [
  157:   dnl There is no formal standard regarding lib and lib64.
  158:   dnl On glibc systems, the current practice is that on a system supporting
  159:   dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
  160:   dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
  161:   dnl the compiler's default mode by looking at the compiler's library search
  162:   dnl path. If at least one of its elements ends in /lib64 or points to a
  163:   dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
  164:   dnl Otherwise we use the default, namely "lib".
  165:   dnl On Solaris systems, the current practice is that on a system supporting
  166:   dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
  167:   dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
  168:   dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
  169:   AC_REQUIRE([AC_CANONICAL_HOST])
  170:   AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT])
  171: 
  172:   case "$host_os" in
  173:     solaris*)
  174:       AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
  175:         [AC_COMPILE_IFELSE(
  176:            [AC_LANG_SOURCE(
  177:               [[#ifdef _LP64
  178:                  int ok;
  179:                 #else
  180:                  error fail
  181:                 #endif
  182:               ]])],
  183:            [gl_cv_solaris_64bit=yes],
  184:            [gl_cv_solaris_64bit=no])
  185:         ]);;
  186:   esac
  187: 
  188:   dnl Allow the user to override the result by setting acl_cv_libdirstems.
  189:   AC_CACHE_CHECK([for the common suffixes of directories in the library search path],
  190:     [acl_cv_libdirstems],
  191:     [acl_libdirstem=lib
  192:      acl_libdirstem2=
  193:      case "$host_os" in
  194:        solaris*)
  195:          dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
  196:          dnl <https://docs.oracle.com/cd/E19253-01/816-5138/dev-env/index.html>.
  197:          dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
  198:          dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
  199:          dnl symlink is missing, so we set acl_libdirstem2 too.
  200:          if test $gl_cv_solaris_64bit = yes; then
  201:            acl_libdirstem=lib/64
  202:            case "$host_cpu" in
  203:              sparc*)        acl_libdirstem2=lib/sparcv9 ;;
  204:              i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
  205:            esac
  206:          fi
  207:          ;;
  208:        *)
  209:          dnl If $CC generates code for a 32-bit ABI, the libraries are
  210:          dnl surely under $prefix/lib, not $prefix/lib64.
  211:          if test "$HOST_CPU_C_ABI_32BIT" != yes; then
  212:            dnl The result is a property of the system. However, non-system
  213:            dnl compilers sometimes have odd library search paths. Therefore
  214:            dnl prefer asking /usr/bin/gcc, if available, rather than $CC.
  215:            searchpath=`(if test -f /usr/bin/gcc \
  216:                            && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \
  217:                           LC_ALL=C /usr/bin/gcc -print-search-dirs; \
  218:                         else \
  219:                           LC_ALL=C $CC -print-search-dirs; \
  220:                         fi) 2>/dev/null \
  221:                        | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
  222:            if test -n "$searchpath"; then
  223:              acl_save_IFS="${IFS= 	}"; IFS=":"
  224:              for searchdir in $searchpath; do
  225:                if test -d "$searchdir"; then
  226:                  case "$searchdir" in
  227:                    */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
  228:                    */../ | */.. )
  229:                      # Better ignore directories of this form. They are misleading.
  230:                      ;;
  231:                    *) searchdir=`cd "$searchdir" && pwd`
  232:                       case "$searchdir" in
  233:                         */lib64 ) acl_libdirstem=lib64 ;;
  234:                       esac ;;
  235:                  esac
  236:                fi
  237:              done
  238:              IFS="$acl_save_IFS"
  239:            fi
  240:          fi
  241:          ;;
  242:      esac
  243:      test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
  244:      acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2"
  245:     ])
  246:   # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2.
  247:   acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
  248:   acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'`
  249: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>