| ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- |
| ## Copyright (C) 1996-1998 Free Software Foundation, Inc. |
| ## Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 |
| ## |
| ## This program is free software; you can redistribute it and/or modify |
| ## it under the terms of the GNU General Public License as published by |
| ## the Free Software Foundation; either version 2 of the License, or |
| ## (at your option) any later version. |
| ## |
| ## This program is distributed in the hope that it will be useful, but |
| ## WITHOUT ANY WARRANTY; without even the implied warranty of |
| ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| ## General Public License for more details. |
| ## |
| ## You should have received a copy of the GNU General Public License |
| ## along with this program; if not, write to the Free Software |
| ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
| ## |
| ## As a special exception to the GNU General Public License, if you |
| ## distribute this file as part of a program that contains a |
| ## configuration script generated by Autoconf, you may include it under |
| ## the same distribution terms that you use for the rest of that program. |
| |
| # serial 29 AM_PROG_LIBTOOL |
| AC_DEFUN(AM_PROG_LIBTOOL, |
| [AC_REQUIRE([AM_ENABLE_SHARED])dnl |
| AC_REQUIRE([AM_ENABLE_STATIC])dnl |
| AC_REQUIRE([AC_CANONICAL_HOST])dnl |
| AC_REQUIRE([AC_CANONICAL_BUILD])dnl |
| AC_REQUIRE([AC_PROG_RANLIB])dnl |
| AC_REQUIRE([AC_PROG_CC])dnl |
| AC_REQUIRE([AM_PROG_LD])dnl |
| AC_REQUIRE([AM_PROG_NM])dnl |
| AC_REQUIRE([AM_SYS_NM_PARSE])dnl |
| AC_REQUIRE([AM_SYS_SYMBOL_UNDERSCORE])dnl |
| AC_REQUIRE([AC_PROG_LN_S])dnl |
| dnl |
| # Always use our own libtool. |
| LIBTOOL='$(SHELL) $(top_builddir)/libtool' |
| AC_SUBST(LIBTOOL)dnl |
| |
| # Check for any special flags to pass to ltconfig. |
| libtool_flags= |
| test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" |
| test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" |
| test "$silent" = yes && libtool_flags="$libtool_flags --silent" |
| test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" |
| test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" |
| |
| # Some flags need to be propagated to the compiler or linker for good |
| # libtool support. |
| case "$host" in |
| *-*-irix6*) |
| # Find out which ABI we are using. |
| echo '[#]line __oline__ "configure"' > conftest.$ac_ext |
| if AC_TRY_EVAL(ac_compile); then |
| case "`/usr/bin/file conftest.o`" in |
| *32-bit*) |
| LD="${LD-ld} -32" |
| ;; |
| *N32*) |
| LD="${LD-ld} -n32" |
| ;; |
| *64-bit*) |
| LD="${LD-ld} -64" |
| ;; |
| esac |
| fi |
| rm -rf conftest* |
| ;; |
| |
| *-*-sco3.2v5*) |
| # On SCO OpenServer 5, we need -belf to get full-featured binaries. |
| SAVE_CFLAGS="$CFLAGS" |
| CFLAGS="$CFLAGS -belf" |
| AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, |
| [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) |
| if test x"$lt_cv_cc_needs_belf" != x"yes"; then |
| # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf |
| CFLAGS="$SAVE_CFLAGS" |
| fi |
| ;; |
| |
| *-*-cygwin32*) |
| AM_SYS_LIBTOOL_CYGWIN32 |
| ;; |
| |
| esac |
| |
| # enable the --disable-libtool-lock switch |
| |
| AC_ARG_ENABLE(libtool-lock, |
| [ --disable-libtool-lock force libtool not to do file locking], |
| need_locks=$enableval, |
| need_locks=yes) |
| |
| if test x"$need_locks" = xno; then |
| libtool_flags="$libtool_flags --disable-lock" |
| fi |
| |
| |
| # Actually configure libtool. ac_aux_dir is where install-sh is found. |
| CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ |
| LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \ |
| DLLTOOL="$DLLTOOL" AS="$AS" \ |
| ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ |
| $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ |
| || AC_MSG_ERROR([libtool configure failed]) |
| |
| # Redirect the config.log output again, so that the ltconfig log is not |
| # clobbered by the next message. |
| exec 5>>./config.log |
| ]) |
| |
| # AM_ENABLE_SHARED - implement the --enable-shared flag |
| # Usage: AM_ENABLE_SHARED[(DEFAULT)] |
| # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to |
| # `yes'. |
| AC_DEFUN(AM_ENABLE_SHARED, |
| [define([AM_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl |
| AC_ARG_ENABLE(shared, |
| changequote(<<, >>)dnl |
| << --enable-shared[=PKGS] build shared libraries [default=>>AM_ENABLE_SHARED_DEFAULT], |
| changequote([, ])dnl |
| [p=${PACKAGE-default} |
| case "$enableval" in |
| yes) enable_shared=yes ;; |
| no) enable_shared=no ;; |
| *) |
| enable_shared=no |
| # Look at the argument we got. We use all the common list separators. |
| IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," |
| for pkg in $enableval; do |
| if test "X$pkg" = "X$p"; then |
| enable_shared=yes |
| fi |
| done |
| IFS="$ac_save_ifs" |
| ;; |
| esac], |
| enable_shared=AM_ENABLE_SHARED_DEFAULT)dnl |
| ]) |
| |
| # AM_DISABLE_SHARED - set the default shared flag to --disable-shared |
| AC_DEFUN(AM_DISABLE_SHARED, |
| [AM_ENABLE_SHARED(no)]) |
| |
| # AM_DISABLE_STATIC - set the default static flag to --disable-static |
| AC_DEFUN(AM_DISABLE_STATIC, |
| [AM_ENABLE_STATIC(no)]) |
| |
| # AM_ENABLE_STATIC - implement the --enable-static flag |
| # Usage: AM_ENABLE_STATIC[(DEFAULT)] |
| # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to |
| # `yes'. |
| AC_DEFUN(AM_ENABLE_STATIC, |
| [define([AM_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl |
| AC_ARG_ENABLE(static, |
| changequote(<<, >>)dnl |
| << --enable-static[=PKGS] build static libraries [default=>>AM_ENABLE_STATIC_DEFAULT], |
| changequote([, ])dnl |
| [p=${PACKAGE-default} |
| case "$enableval" in |
| yes) enable_static=yes ;; |
| no) enable_static=no ;; |
| *) |
| enable_static=no |
| # Look at the argument we got. We use all the common list separators. |
| IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," |
| for pkg in $enableval; do |
| if test "X$pkg" = "X$p"; then |
| enable_static=yes |
| fi |
| done |
| IFS="$ac_save_ifs" |
| ;; |
| esac], |
| enable_static=AM_ENABLE_STATIC_DEFAULT)dnl |
| ]) |
| |
| |
| # AM_PROG_LD - find the path to the GNU or non-GNU linker |
| AC_DEFUN(AM_PROG_LD, |
| [AC_ARG_WITH(gnu-ld, |
| [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], |
| test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) |
| AC_REQUIRE([AC_PROG_CC])dnl |
| AC_REQUIRE([AC_CANONICAL_HOST])dnl |
| AC_REQUIRE([AC_CANONICAL_BUILD])dnl |
| ac_prog=ld |
| if test "$ac_cv_prog_gcc" = yes; then |
| # Check if gcc -print-prog-name=ld gives a path. |
| AC_MSG_CHECKING([for ld used by GCC]) |
| ac_prog=`($CC -print-prog-name=ld) 2>&5` |
| case "$ac_prog" in |
| # Accept absolute paths. |
| changequote(,)dnl |
| /* | [A-Za-z]:/*) |
| # Canonicalize the path of ld |
| re_direlt='/[^/][^/]*/\.\./' |
| sub_uncdrive='s%^\([A-Za-z]\):/%//\1/%' |
| changequote([,])dnl |
| while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do |
| ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` |
| done |
| case "$host_os" in |
| cygwin*) |
| # Convert to a UNC path for cygwin |
| test -z "$LD" && LD=`echo X$ac_prog | sed -e "1s/^X//" -e "$sub_uncdrive"` |
| ;; |
| *) |
| test -z "$LD" && LD="$ac_prog" |
| ;; |
| esac |
| ;; |
| ## |
| ## FIXME: The code fails later on if we try to use an $LD with |
| ## '\\' path separators. |
| ## |
| changequote(,)dnl |
| [A-Za-z]:[\\]*) |
| # Canonicalize the path of ld |
| re_direlt='\\[^\\][^\\]*\\\.\.\(\\\)' |
| sub_uncdrive='s%^\([A-Za-z]\):\\%//\1/%' |
| changequote([,])dnl |
| sub_uncdir='s%\\%/%g' |
| while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do |
| ac_prog=`echo $ac_prog| sed "s%$re_direlt%\1%"` |
| done |
| case "$host_os" in |
| cygwin*) |
| # Convert to a UNC path for cygwin |
| test -z "$LD" && LD=`echo X$ac_prog | sed -e 's%^X%%' -e "$sub_uncdrive" -e "$sub_uncdir"` |
| ;; |
| *) |
| test -z "$LD" && LD="$ac_prog" |
| ;; |
| esac |
| ;; |
| "") |
| # If it fails, then pretend we aren't using GCC. |
| ac_prog=ld |
| ;; |
| *) |
| # If it is relative, then search for the first ld in PATH. |
| with_gnu_ld=unknown |
| ;; |
| esac |
| elif test "$with_gnu_ld" = yes; then |
| AC_MSG_CHECKING([for GNU ld]) |
| else |
| AC_MSG_CHECKING([for non-GNU ld]) |
| fi |
| AC_CACHE_VAL(ac_cv_path_LD, |
| [if test -z "$LD"; then |
| IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" |
| for ac_dir in $PATH; do |
| test -z "$ac_dir" && ac_dir=. |
| if test -f "$ac_dir/$ac_prog"; then |
| ac_cv_path_LD="$ac_dir/$ac_prog" |
| # Check to see if the program is GNU ld. I'd rather use --version, |
| # but apparently some GNU ld's only accept -v. |
| # Break only if it was the GNU/non-GNU ld that we prefer. |
| if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then |
| test "$with_gnu_ld" != no && break |
| else |
| test "$with_gnu_ld" != yes && break |
| fi |
| fi |
| done |
| IFS="$ac_save_ifs" |
| else |
| ac_cv_path_LD="$LD" # Let the user override the test with a path. |
| fi]) |
| LD="$ac_cv_path_LD" |
| if test -n "$LD"; then |
| AC_MSG_RESULT($LD) |
| else |
| AC_MSG_RESULT(no) |
| fi |
| test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) |
| AC_SUBST(LD) |
| AM_PROG_LD_GNU |
| ]) |
| |
| AC_DEFUN(AM_PROG_LD_GNU, |
| [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, |
| [# I'd rather use --version here, but apparently some GNU ld's only accept -v. |
| if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then |
| ac_cv_prog_gnu_ld=yes |
| else |
| ac_cv_prog_gnu_ld=no |
| fi]) |
| ]) |
| |
| # AM_PROG_NM - find the path to a BSD-compatible name lister |
| AC_DEFUN(AM_PROG_NM, |
| [AC_MSG_CHECKING([for BSD-compatible nm]) |
| AC_CACHE_VAL(ac_cv_path_NM, |
| [if test -n "$NM"; then |
| # Let the user override the test. |
| ac_cv_path_NM="$NM" |
| else |
| IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" |
| for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do |
| test -z "$ac_dir" && ac_dir=. |
| if test -f $ac_dir/nm; then |
| # Check to see if the nm accepts a BSD-compat flag. |
| # Adding the `sed 1q' prevents false positives on HP-UX, which says: |
| # nm: unknown option "B" ignored |
| if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then |
| ac_cv_path_NM="$ac_dir/nm -B" |
| elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then |
| ac_cv_path_NM="$ac_dir/nm -p" |
| else |
| ac_cv_path_NM="$ac_dir/nm" |
| fi |
| break |
| fi |
| done |
| IFS="$ac_save_ifs" |
| test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm |
| fi]) |
| NM="$ac_cv_path_NM" |
| AC_MSG_RESULT([$NM]) |
| AC_SUBST(NM) |
| ]) |
| |
| # AM_SYS_NM_PARSE - Check for command ro grab the raw symbol name followed |
| # by C symbol name from nm. |
| AC_DEFUN(AM_SYS_NM_PARSE, |
| [AC_REQUIRE([AC_CANONICAL_HOST])dnl |
| AC_REQUIRE([AM_PROG_NM])dnl |
| # Check for command to grab the raw symbol name followed by C symbol from nm. |
| AC_MSG_CHECKING([command to parse $NM output]) |
| AC_CACHE_VAL(ac_cv_sys_global_symbol_pipe, |
| [# These are sane defaults that work on at least a few old systems. |
| # {They come from Ultrix. What could be older than Ultrix?!! ;)} |
| |
| changequote(,)dnl |
| # Character class describing NM global symbol codes. |
| ac_symcode='[BCDEGRSTU]' |
| |
| # Regexp to match symbols that can be accessed directly from C. |
| ac_sympat='\([_A-Za-z][_A-Za-z0-9]*\)' |
| |
| # Transform the above into a raw symbol and a C symbol. |
| ac_symxfrm='\1 \1' |
| |
| # Define system-specific variables. |
| case "$host_os" in |
| aix*) |
| ac_symcode='[BCDTU]' |
| ;; |
| sunos* | cygwin32* | mingw32*) |
| ac_sympat='_\([_A-Za-z][_A-Za-z0-9]*\)' |
| ac_symxfrm='_\1 \1' |
| ;; |
| irix*) |
| # Cannot use undefined symbols on IRIX because inlined functions mess us up. |
| ac_symcode='[BCDEGRST]' |
| ;; |
| solaris*) |
| ac_symcode='[BDTU]' |
| ;; |
| esac |
| |
| # If we're using GNU nm, then use its standard symbol codes. |
| if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then |
| ac_symcode='[ABCDGISTUW]' |
| fi |
| |
| case "$host_os" in |
| cygwin32* | mingw32*) |
| # We do not want undefined symbols on cygwin32. The user must |
| # arrange to define them via -l arguments. |
| ac_symcode='[ABCDGISTW]' |
| ;; |
| esac |
| changequote([,])dnl |
| |
| # Write the raw and C identifiers. |
| ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.* $ac_symcode $ac_sympat$/$ac_symxfrm/p'" |
| |
| # Check to see that the pipe works correctly. |
| ac_pipe_works=no |
| cat > conftest.$ac_ext <<EOF |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| char nm_test_var; |
| void nm_test_func(){} |
| #ifdef __cplusplus |
| } |
| #endif |
| int main(){nm_test_var='a';nm_test_func;return 0;} |
| EOF |
| if AC_TRY_EVAL(ac_compile); then |
| # Now try to grab the symbols. |
| ac_nlist=conftest.nm |
| if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then |
| |
| # Try sorting and uniquifying the output. |
| if sort "$ac_nlist" | uniq > "$ac_nlist"T; then |
| mv -f "$ac_nlist"T "$ac_nlist" |
| ac_wcout=`wc "$ac_nlist" 2>/dev/null` |
| changequote(,)dnl |
| ac_count=`echo "X$ac_wcout" | sed -e 's,^X,,' -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` |
| changequote([,])dnl |
| (test "$ac_count" -ge 0) 2>/dev/null || ac_count=-1 |
| else |
| rm -f "$ac_nlist"T |
| ac_count=-1 |
| fi |
| |
| # Make sure that we snagged all the symbols we need. |
| if egrep ' nm_test_var$' "$ac_nlist" >/dev/null; then |
| if egrep ' nm_test_func$' "$ac_nlist" >/dev/null; then |
| cat <<EOF > conftest.c |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| EOF |
| # Now generate the symbol file. |
| sed 's/^.* \(.*\)$/extern char \1;/' < "$ac_nlist" >> conftest.c |
| |
| cat <<EOF >> conftest.c |
| #if defined (__STDC__) && __STDC__ |
| # define __ptr_t void * |
| #else |
| # define __ptr_t char * |
| #endif |
| |
| /* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ |
| int dld_preloaded_symbol_count = $ac_count; |
| |
| /* The mapping between symbol names and symbols. */ |
| struct { |
| char *name; |
| __ptr_t address; |
| } |
| changequote(,)dnl |
| dld_preloaded_symbols[] = |
| changequote([,])dnl |
| { |
| EOF |
| sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$ac_nlist" >> conftest.c |
| cat <<\EOF >> conftest.c |
| {0, (__ptr_t) 0} |
| }; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| EOF |
| # Now try linking the two files. |
| mv conftest.$ac_objext conftestm.$ac_objext |
| ac_save_LIBS="$LIBS" |
| ac_save_CFLAGS="$CFLAGS" |
| LIBS="conftestm.$ac_objext" |
| CFLAGS="$CFLAGS$no_builtin_flag" |
| if AC_TRY_EVAL(ac_link) && test -s conftest; then |
| ac_pipe_works=yes |
| else |
| echo "configure: failed program was:" >&AC_FD_CC |
| cat conftest.c >&AC_FD_CC |
| fi |
| LIBS="$ac_save_LIBS" |
| CFLAGS="$ac_save_CFLAGS" |
| else |
| echo "cannot find nm_test_func in $ac_nlist" >&AC_FD_CC |
| fi |
| else |
| echo "cannot find nm_test_var in $ac_nlist" >&AC_FD_CC |
| fi |
| else |
| echo "cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC |
| fi |
| else |
| echo "$progname: failed program was:" >&AC_FD_CC |
| cat conftest.c >&AC_FD_CC |
| fi |
| rm -rf conftest* |
| |
| # Do not use the global_symbol_pipe unless it works. |
| test "$ac_pipe_works" = yes || ac_cv_sys_global_symbol_pipe= |
| ]) |
| |
| ac_result=yes |
| if test -z "$ac_cv_sys_global_symbol_pipe"; then |
| ac_result=no |
| fi |
| AC_MSG_RESULT($ac_result) |
| ]) |
| |
| # AM_SYS_LIBTOOL_CYGWIN32 - find tools needed on cygwin32 |
| AC_DEFUN(AM_SYS_LIBTOOL_CYGWIN32, |
| [AC_CHECK_TOOL(DLLTOOL, dlltool, false) |
| AC_CHECK_TOOL(AS, as, false) |
| ]) |
| |
| # AM_SYS_SYMBOL_UNDERSCORE - does the compiler prefix global symbols |
| # with an underscore? |
| AC_DEFUN(AM_SYS_SYMBOL_UNDERSCORE, |
| [AC_REQUIRE([AM_PROG_NM])dnl |
| AC_REQUIRE([AM_SYS_NM_PARSE])dnl |
| AC_MSG_CHECKING([for _ prefix in compiled symbols]) |
| AC_CACHE_VAL(ac_cv_sys_symbol_underscore, |
| [ac_cv_sys_symbol_underscore=no |
| cat > conftest.$ac_ext <<EOF |
| void nm_test_func(){} |
| int main(){nm_test_func;return 0;} |
| EOF |
| if AC_TRY_EVAL(ac_compile); then |
| # Now try to grab the symbols. |
| ac_nlist=conftest.nm |
| if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then |
| # See whether the symbols have a leading underscore. |
| if egrep '^_nm_test_func' "$ac_nlist" >/dev/null; then |
| ac_cv_sys_symbol_underscore=yes |
| else |
| if egrep '^nm_test_func ' "$ac_nlist" >/dev/null; then |
| : |
| else |
| echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC |
| fi |
| fi |
| else |
| echo "configure: cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC |
| fi |
| else |
| echo "configure: failed program was:" >&AC_FD_CC |
| cat conftest.c >&AC_FD_CC |
| fi |
| rm -rf conftest* |
| ]) |
| AC_MSG_RESULT($ac_cv_sys_symbol_underscore) |
| if test x$ac_cv_sys_symbol_underscore = xyes; then |
| AC_DEFINE(WITH_SYMBOL_UNDERSCORE,1, |
| [define if compiled symbols have a leading underscore]) |
| fi |
| ]) |