xref: /aosp_15_r20/external/flac/m4/lib-prefix.m4 (revision 600f14f40d737144c998e2ec7a483122d3776fbc)
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