1 ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
2 ## Copyright (C) 1996-1999 Free Software Foundation, Inc.
3 ## Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5 ## This program is free software; you can redistribute it and/or modify
6 ## it under the terms of the GNU General Public License as published by
7 ## the Free Software Foundation; either version 2 of the License, or
8 ## (at your option) any later version.
10 ## This program is distributed in the hope that it will be useful, but
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 ## General Public License for more details.
15 ## You should have received a copy of the GNU General Public License
16 ## along with this program; if not, write to the Free Software
17 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 ## As a special exception to the GNU General Public License, if you
20 ## distribute this file as part of a program that contains a
21 ## configuration script generated by Autoconf, you may include it under
22 ## the same distribution terms that you use for the rest of that program.
24 # serial 35 AC_PROG_LIBTOOL
25 AC_DEFUN(AC_PROG_LIBTOOL,
26 [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
28 # Save cache, so that ltconfig can load it
31 # Actually configure libtool. ac_aux_dir is where install-sh is found.
32 CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
33 LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
34 DLLTOOL="$DLLTOOL" AS="$AS" \
35 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
36 $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
37 || AC_MSG_ERROR([libtool configure failed])
39 # Reload cache, that may have been modified by ltconfig
42 # This can be used to rebuild libtool when needed
43 LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
45 # Always use our own libtool.
46 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
49 # Redirect the config.log output again, so that the ltconfig log is not
50 # clobbered by the next message.
54 AC_DEFUN(AC_LIBTOOL_SETUP,
56 AC_REQUIRE([AC_ENABLE_SHARED])dnl
57 AC_REQUIRE([AC_ENABLE_STATIC])dnl
58 AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
59 AC_REQUIRE([AC_CANONICAL_HOST])dnl
60 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
61 AC_REQUIRE([AC_PROG_RANLIB])dnl
62 AC_REQUIRE([AC_PROG_CC])dnl
63 AC_REQUIRE([AC_PROG_LD])dnl
64 AC_REQUIRE([AC_PROG_NM])dnl
65 AC_REQUIRE([AC_SYS_NM_PARSE])dnl
66 AC_REQUIRE([AC_SYS_SYMBOL_UNDERSCORE])dnl
67 AC_REQUIRE([AC_PROG_LN_S])dnl
70 # Check for any special flags to pass to ltconfig.
71 libtool_flags="--cache-file=$cache_file"
72 test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
73 test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
74 test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
75 test "$lt_dlopen" = yes && libtool_flags="$libtool_flags --enable-dlopen"
76 test "$silent" = yes && libtool_flags="$libtool_flags --silent"
77 test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
78 test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
80 # Some flags need to be propagated to the compiler or linker for good
84 # Find out which ABI we are using.
85 echo '[#]line __oline__ "configure"' > conftest.$ac_ext
86 if AC_TRY_EVAL(ac_compile); then
87 case "`/usr/bin/file conftest.o`" in
103 # On SCO OpenServer 5, we need -belf to get full-featured binaries.
104 SAVE_CFLAGS="$CFLAGS"
105 CFLAGS="$CFLAGS -belf"
106 AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
107 [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
108 if test x"$lt_cv_cc_needs_belf" != x"yes"; then
109 # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
110 CFLAGS="$SAVE_CFLAGS"
115 AC_SYS_LIBTOOL_CYGWIN
120 # enable the --disable-libtool-lock switch
122 AC_ARG_ENABLE(libtool-lock,
123 [ --disable-libtool-lock force libtool not to do file locking],
124 need_locks=$enableval,
127 if test x"$need_locks" = xno; then
128 libtool_flags="$libtool_flags --disable-lock"
132 # AC_LIBTOOL_DLOPEN - check for dlopen support
133 AC_DEFUN(AC_LIBTOOL_DLOPEN, [lt_dlopen=yes])
135 # AC_ENABLE_SHARED - implement the --enable-shared flag
136 # Usage: AC_ENABLE_SHARED[(DEFAULT)]
137 # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
139 AC_DEFUN(AC_ENABLE_SHARED,
140 [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
141 AC_ARG_ENABLE(shared,
142 changequote(<<, >>)dnl
143 << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
145 [p=${PACKAGE-default}
147 yes) enable_shared=yes ;;
148 no) enable_shared=no ;;
151 # Look at the argument we got. We use all the common list separators.
152 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
153 for pkg in $enableval; do
154 if test "X$pkg" = "X$p"; then
161 enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
164 # AC_DISABLE_SHARED - set the default shared flag to --disable-shared
165 AC_DEFUN(AC_DISABLE_SHARED,
166 [AC_ENABLE_SHARED(no)])
168 # AC_ENABLE_STATIC - implement the --enable-static flag
169 # Usage: AC_ENABLE_STATIC[(DEFAULT)]
170 # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
172 AC_DEFUN(AC_ENABLE_STATIC,
173 [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
174 AC_ARG_ENABLE(static,
175 changequote(<<, >>)dnl
176 << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
178 [p=${PACKAGE-default}
180 yes) enable_static=yes ;;
181 no) enable_static=no ;;
184 # Look at the argument we got. We use all the common list separators.
185 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
186 for pkg in $enableval; do
187 if test "X$pkg" = "X$p"; then
194 enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
197 # AC_DISABLE_STATIC - set the default static flag to --disable-static
198 AC_DEFUN(AC_DISABLE_STATIC,
199 [AC_ENABLE_STATIC(no)])
202 # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
203 # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
204 # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
206 AC_DEFUN(AC_ENABLE_FAST_INSTALL,
207 [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
208 AC_ARG_ENABLE(fast-install,
209 changequote(<<, >>)dnl
210 << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
212 [p=${PACKAGE-default}
214 yes) enable_fast_install=yes ;;
215 no) enable_fast_install=no ;;
217 enable_fast_install=no
218 # Look at the argument we got. We use all the common list separators.
219 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
220 for pkg in $enableval; do
221 if test "X$pkg" = "X$p"; then
222 enable_fast_install=yes
228 enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
231 # AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
232 AC_DEFUN(AC_DISABLE_FAST_INSTALL,
233 [AC_ENABLE_FAST_INSTALL(no)])
236 # AC_PROG_LD - find the path to the GNU or non-GNU linker
239 [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
240 test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
241 AC_REQUIRE([AC_PROG_CC])dnl
242 AC_REQUIRE([AC_CANONICAL_HOST])dnl
243 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
245 if test "$ac_cv_prog_gcc" = yes; then
246 # Check if gcc -print-prog-name=ld gives a path.
247 AC_MSG_CHECKING([for ld used by GCC])
248 ac_prog=`($CC -print-prog-name=ld) 2>&5`
250 # Accept absolute paths.
252 /* | [A-Za-z]:[\\/]*)
253 re_direlt='/[^/][^/]*/\.\./'
255 # Canonicalize the path of ld
256 ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
257 while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
258 ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
260 test -z "$LD" && LD="$ac_prog"
263 # If it fails, then pretend we aren't using GCC.
267 # If it is relative, then search for the first ld in PATH.
271 elif test "$with_gnu_ld" = yes; then
272 AC_MSG_CHECKING([for GNU ld])
274 AC_MSG_CHECKING([for non-GNU ld])
276 AC_CACHE_VAL(ac_cv_path_LD,
277 [if test -z "$LD"; then
278 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
279 for ac_dir in $PATH; do
280 test -z "$ac_dir" && ac_dir=.
281 if test -f "$ac_dir/$ac_prog"; then
282 ac_cv_path_LD="$ac_dir/$ac_prog"
283 # Check to see if the program is GNU ld. I'd rather use --version,
284 # but apparently some GNU ld's only accept -v.
285 # Break only if it was the GNU/non-GNU ld that we prefer.
286 if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
287 test "$with_gnu_ld" != no && break
289 test "$with_gnu_ld" != yes && break
295 ac_cv_path_LD="$LD" # Let the user override the test with a path.
298 if test -n "$LD"; then
303 test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
308 AC_DEFUN(AC_PROG_LD_GNU,
309 [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
310 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
311 if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
312 ac_cv_prog_gnu_ld=yes
318 # AC_PROG_NM - find the path to a BSD-compatible name lister
320 [AC_MSG_CHECKING([for BSD-compatible nm])
321 AC_CACHE_VAL(ac_cv_path_NM,
322 [if test -n "$NM"; then
323 # Let the user override the test.
326 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
327 for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
328 test -z "$ac_dir" && ac_dir=.
329 if test -f $ac_dir/nm; then
330 # Check to see if the nm accepts a BSD-compat flag.
331 # Adding the `sed 1q' prevents false positives on HP-UX, which says:
332 # nm: unknown option "B" ignored
333 if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
334 ac_cv_path_NM="$ac_dir/nm -B"
336 elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
337 ac_cv_path_NM="$ac_dir/nm -p"
340 ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
341 continue # so that we can try to find one that supports BSD flags
346 test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
353 # AC_SYS_NM_PARSE - Check for command to grab the raw symbol name followed
354 # by C symbol name from nm.
355 AC_DEFUN(AC_SYS_NM_PARSE,
356 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
357 AC_REQUIRE([AC_PROG_NM])dnl
358 # Check for command to grab the raw symbol name followed by C symbol from nm.
359 AC_MSG_CHECKING([command to parse $NM output])
360 AC_CACHE_VAL(ac_cv_sys_global_symbol_pipe,
361 [# These are sane defaults that work on at least a few old systems.
362 # {They come from Ultrix. What could be older than Ultrix?!! ;)}
365 # Character class describing NM global symbol codes.
366 ac_symcode='[BCDEGRST]'
368 # Regexp to match symbols that can be accessed directly from C.
369 ac_sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
371 # Transform the above into a raw symbol and a C symbol.
372 ac_symxfrm='\1 \2\3 \3'
374 # Transform an extracted symbol line into a proper C declaration
375 ac_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
377 # Define system-specific variables.
383 ac_symcode='[ABCDGISTW]'
386 ac_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
389 ac_symcode='[BCDEGRST]'
396 # If we're using GNU nm, then use its standard symbol codes.
397 if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
398 ac_symcode='[ABCDGISTW]'
402 # Try without a prefix undercore, then with it.
403 for ac_symprfx in "" "_"; do
405 ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($ac_symcode\)[ ][ ]*\($ac_symprfx\)$ac_sympat$/$ac_symxfrm/p'"
407 # Check to see that the pipe works correctly.
409 rm -f conftest.$ac_ext
410 cat > conftest.$ac_ext <<EOF
415 void nm_test_func(){}
419 int main(){nm_test_var='a';nm_test_func;return 0;}
422 if AC_TRY_EVAL(ac_compile); then
423 # Now try to grab the symbols.
426 if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
428 # Try sorting and uniquifying the output.
429 if sort "$ac_nlist" | uniq > "$ac_nlist"T; then
430 mv -f "$ac_nlist"T "$ac_nlist"
435 # Make sure that we snagged all the symbols we need.
436 if egrep ' nm_test_var$' "$ac_nlist" >/dev/null; then
437 if egrep ' nm_test_func$' "$ac_nlist" >/dev/null; then
438 cat <<EOF > conftest.c
444 # Now generate the symbol file.
445 eval "$ac_global_symbol_to_cdecl"' < "$ac_nlist" >> conftest.c'
447 cat <<EOF >> conftest.c
448 #if defined (__STDC__) && __STDC__
449 # define lt_ptr_t void *
451 # define lt_ptr_t char *
455 /* The mapping between symbol names and symbols. */
461 lt_preloaded_symbols[] =
465 sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$ac_nlist" >> conftest.c
466 cat <<\EOF >> conftest.c
474 # Now try linking the two files.
475 mv conftest.$ac_objext conftestm.$ac_objext
477 ac_save_CFLAGS="$CFLAGS"
478 LIBS="conftestm.$ac_objext"
479 CFLAGS="$CFLAGS$no_builtin_flag"
480 if AC_TRY_EVAL(ac_link) && test -s conftest; then
483 echo "configure: failed program was:" >&AC_FD_CC
484 cat conftest.c >&AC_FD_CC
487 CFLAGS="$ac_save_CFLAGS"
489 echo "cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
492 echo "cannot find nm_test_var in $ac_nlist" >&AC_FD_CC
495 echo "cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
498 echo "$progname: failed program was:" >&AC_FD_CC
499 cat conftest.c >&AC_FD_CC
503 # Do not use the global_symbol_pipe unless it works.
504 if test "$ac_pipe_works" = yes; then
505 if test x"$ac_symprfx" = x"_"; then
506 ac_cv_sys_symbol_underscore=yes
508 ac_cv_sys_symbol_underscore=no
512 ac_cv_sys_global_symbol_pipe=
518 if test -z "$ac_cv_sys_global_symbol_pipe"; then
521 AC_MSG_RESULT($ac_result)
524 # AC_SYS_LIBTOOL_CYGWIN - find tools needed on cygwin
525 AC_DEFUN(AC_SYS_LIBTOOL_CYGWIN,
526 [AC_CHECK_TOOL(DLLTOOL, dlltool, false)
527 AC_CHECK_TOOL(AS, as, false)
530 # AC_SYS_SYMBOL_UNDERSCORE - does the compiler prefix global symbols
531 # with an underscore?
532 AC_DEFUN(AC_SYS_SYMBOL_UNDERSCORE,
533 [AC_REQUIRE([AC_PROG_NM])dnl
534 AC_REQUIRE([AC_SYS_NM_PARSE])dnl
535 AC_MSG_CHECKING([for _ prefix in compiled symbols])
536 AC_CACHE_VAL(ac_cv_sys_symbol_underscore,
537 [ac_cv_sys_symbol_underscore=no
538 cat > conftest.$ac_ext <<EOF
539 void nm_test_func(){}
540 int main(){nm_test_func;return 0;}
542 if AC_TRY_EVAL(ac_compile); then
543 # Now try to grab the symbols.
545 if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
546 # See whether the symbols have a leading underscore.
547 if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
548 ac_cv_sys_symbol_underscore=yes
550 if egrep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
553 echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
557 echo "configure: cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
560 echo "configure: failed program was:" >&AC_FD_CC
561 cat conftest.c >&AC_FD_CC
565 AC_MSG_RESULT($ac_cv_sys_symbol_underscore)
566 USE_SYMBOL_UNDERSCORE=${ac_cv_sys_symbol_underscore=no}
567 AC_SUBST(USE_SYMBOL_UNDERSCORE)dnl
570 # AC_CHECK_LIBM - check for math library
571 AC_DEFUN(AC_CHECK_LIBM,
572 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
574 *-*-beos* | *-*-cygwin*)
575 # These system don't have libm
578 AC_CHECK_LIB(mw, _mwvalidcheckl)
587 # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
588 # the libltdl convenience library, adds --enable-ltdl-convenience to
589 # the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
590 # is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
591 # to be `${top_builddir}/libltdl'. Make sure you start DIR with
592 # '${top_builddir}/' (note the single quotes!) if your package is not
593 # flat, and, if you're not using automake, define top_builddir as
594 # appropriate in the Makefiles.
595 AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [
596 case "$enable_ltdl_convenience" in
597 no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
598 "") enable_ltdl_convenience=yes
599 ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
601 LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
604 # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
605 # the libltdl installable library, and adds --enable-ltdl-install to
606 # the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
607 # is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
608 # to be `${top_builddir}/libltdl'. Make sure you start DIR with
609 # '${top_builddir}/' (note the single quotes!) if your package is not
610 # flat, and, if you're not using automake, define top_builddir as
611 # appropriate in the Makefiles.
612 # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
613 AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [
614 AC_CHECK_LIB(ltdl, main, LIBLTDL="-lltdl", [
615 case "$enable_ltdl_install" in
616 no) AC_MSG_WARN([libltdl not installed, but installation disabled]) ;;
617 "") enable_ltdl_install=yes
618 ac_configure_args="$ac_configure_args --enable-ltdl-install" ;;
621 if test x"$enable_ltdl_install" != x"no"; then
622 LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
627 AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
628 AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
629 AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
630 AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
631 AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
632 AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
633 AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
634 AC_DEFUN(AM_SYS_NM_PARSE, [indir([AC_SYS_NM_PARSE])])dnl
635 AC_DEFUN(AM_SYS_SYMBOL_UNDERSCORE, [indir([AC_SYS_SYMBOL_UNDERSCORE])])dnl
636 AC_DEFUN(AM_SYS_LIBTOOL_CYGWIN, [indir([AC_SYS_LIBTOOL_CYGWIN])])dnl