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