📄 libtool.ac
字号:
# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*-## Copyright 1996, 1997, 1998, 1999, 2000, 2001## Free Software Foundation, Inc.## Originally by 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 46 AC_PROG_LIBTOOLAC_DEFUN([AC_PROG_LIBTOOL],[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl# This can be used to rebuild libtool when neededLIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"# Always use our own libtool.LIBTOOL='$(SHELL) $(top_builddir)/libtool'AC_SUBST(LIBTOOL)dnl# Prevent multiple expansiondefine([AC_PROG_LIBTOOL], [])])AC_DEFUN([AC_LIBTOOL_SETUP],[AC_PREREQ(2.13)dnlAC_REQUIRE([AC_ENABLE_SHARED])dnlAC_REQUIRE([AC_ENABLE_STATIC])dnlAC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnlAC_REQUIRE([AC_CANONICAL_HOST])dnlAC_REQUIRE([AC_CANONICAL_BUILD])dnlAC_REQUIRE([AC_PROG_CC])dnlAC_REQUIRE([AC_PROG_LD])dnlAC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnlAC_REQUIRE([AC_PROG_NM])dnlAC_REQUIRE([AC_PROG_LN_S])dnlAC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnlAC_REQUIRE([AC_OBJEXT])dnlAC_REQUIRE([AC_EXEEXT])dnldnl_LT_AC_PROG_ECHO_BACKSLASH# Only perform the check for file, if the check method requires itcase $deplibs_check_method infile_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;;esacAC_CHECK_TOOL(RANLIB, ranlib, :)AC_CHECK_TOOL(STRIP, strip, :)ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],enable_win32_dll=yes, enable_win32_dll=no)AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)])test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes# 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.$ac_objext` 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_LANG_SAVE AC_LANG_C AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_RESTORE]) 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 ;;ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],[*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, [AC_TRY_LINK([], [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); DllMain (0, 0, 0);], [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) case $host/$CC in *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) # old mingw systems require "-dll" to link a DLL, while more recent ones # require "-mdll" SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mdll" AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) CFLAGS="$SAVE_CFLAGS" ;; *-*-cygwin* | *-*-pw32*) # cygwin systems need to pass --dll to the linker, and not link # crt.o which will require a WinMain@16 definition. lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; esac ;; ])esac_LT_AC_LTCONFIG_HACK])# AC_LIBTOOL_HEADER_ASSERT# ------------------------AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT],[AC_CACHE_CHECK([whether $CC supports assert without backlinking], [lt_cv_func_assert_works], [case $host in *-*-solaris*) if test "$GCC" = yes && test "$with_gnu_ld" != yes; then case `$CC --version 2>/dev/null` in [[12]].*) lt_cv_func_assert_works=no ;; *) lt_cv_func_assert_works=yes ;; esac fi ;; esac])if test "x$lt_cv_func_assert_works" = xyes; then AC_CHECK_HEADERS(assert.h)fi])# AC_LIBTOOL_HEADER_ASSERT# _LT_AC_CHECK_DLFCN# --------------------AC_DEFUN([_LT_AC_CHECK_DLFCN],[AC_CHECK_HEADERS(dlfcn.h)])# _LT_AC_CHECK_DLFCN# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE# ---------------------------------AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],[AC_REQUIRE([AC_CANONICAL_HOST])AC_REQUIRE([AC_PROG_NM])AC_REQUIRE([AC_OBJEXT])# 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([lt_cv_sys_global_symbol_pipe], [dnl# These are sane defaults that work on at least a few old systems.# [They come from Ultrix. What could be older than Ultrix?!! ;)]# Character class describing NM global symbol codes.symcode='[[BCDEGRST]]'# Regexp to match symbols that can be accessed directly from C.sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'# Transform the above into a raw symbol and a C symbol.symxfrm='\1 \2\3 \3'# Transform an extracted symbol line into a proper C declarationlt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"# Transform an extracted symbol line into symbol name and symbol addresslt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"# Define system-specific variables.case $host_os inaix*) symcode='[[BCDT]]' ;;cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;;hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;;irix*) symcode='[[BCDEGRST]]' ;;solaris* | sysv5*) symcode='[[BDT]]' ;;sysv4) symcode='[[DFNSTU]]' ;;esac# Handle CRLF in mingw tool chainopt_cr=case $host_os inmingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;;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 symcode='[[ABCDGISTW]]'fi# Try without a prefix undercore, then with it.for ac_symprfx in "" "_"; do # Write the raw and C identifiers.lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<EOF#ifdef __cplusplusextern "C" {#endifchar nm_test_var;void nm_test_func(){}#ifdef __cplusplus}#endifint main(){nm_test_var='a';nm_test_func();return(0);}EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat <<EOF > conftest.$ac_ext#ifdef __cplusplusextern "C" {#endifEOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <<EOF >> conftest.$ac_ext#if defined (__STDC__) && __STDC__# define lt_ptr void *#else# define lt_ptr char *# define const#endif/* The mapping between symbol names and symbols. */const struct { const char *name; lt_ptr address;}lt_preloaded_symbols[[]] ={EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr) 0}};#ifdef __cplusplus}#endifEOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if AC_TRY_EVAL(ac_link) && test -s conftest; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AC_FD_CC fi else echo "cannot find nm_test_var in $nlist" >&AC_FD_CC fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC fi else echo "$progname: failed program was:" >&AC_FD_CC cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fidone])global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= global_symbol_to_c_name_address=else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"fiif test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";then AC_MSG_RESULT(failed)else AC_MSG_RESULT(ok)fi]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR# ---------------------------------AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],[# Find the correct PATH separator. Usually this is `:', but# DJGPP uses `;' like DOS.if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separatorfi])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR# _LT_AC_PROG_ECHO_BACKSLASH# --------------------------# Add some code to the start of the generated configure script which# will find an echo command which doesn't interpret backslashes.AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)])_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR# Check that we are running under the correct shell.SHELL=${CONFIG_SHELL-/bin/sh}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -