mirror of
https://https.git.savannah.gnu.org/git/libtool.git
synced 2026-01-26 15:39:10 +00:00
* ltdl.m4 (AC_LTDL_DLPREOPEN): require the libtool.m4 symbol_pipe
macro. (AC_LTDL_SYMBOL_USCORE): ditto. (AC_LTDL_GLOBAL_SYMBOL_PIPE): Removed, since it is a duplicate of... * libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): ...this new macro, extracted from _LT_AC_LTCONFIG_HACK.
This commit is contained in:
parent
59806b1784
commit
2ccd27d360
@ -1,5 +1,13 @@
|
||||
2000-09-16 Gary V. Vaughan <gvv@techie.com>
|
||||
|
||||
* ltdl.m4 (AC_LTDL_DLPREOPEN): require the libtool.m4 symbol_pipe
|
||||
macro.
|
||||
(AC_LTDL_SYMBOL_USCORE): ditto.
|
||||
(AC_LTDL_GLOBAL_SYMBOL_PIPE): Removed, since it is a duplicate
|
||||
of...
|
||||
* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): ...this new
|
||||
macro, extracted from _LT_AC_LTCONFIG_HACK.
|
||||
|
||||
* ltdl.m4 (changequote): An audit of changequote and m4
|
||||
quote usage -- all changequotes have been removed, and some
|
||||
latent unquoted `[' and `]' bugs have been fixed.
|
||||
|
||||
359
libtool.m4
vendored
359
libtool.m4
vendored
@ -146,6 +146,183 @@ esac
|
||||
_LT_AC_LTCONFIG_HACK
|
||||
])
|
||||
|
||||
# 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([ac_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 declaration
|
||||
ac_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
|
||||
# Define system-specific variables.
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
[symcode='[BCDT]']
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
[symcode='[ABCDGISTW]']
|
||||
;;
|
||||
hpux*) # Its linker distinguishes data from code symbols
|
||||
ac_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
;;
|
||||
irix*)
|
||||
[symcode='[BCDEGRST]']
|
||||
;;
|
||||
solaris* | sysv5*)
|
||||
[symcode='[BDT]']
|
||||
;;
|
||||
sysv4)
|
||||
[symcode='[DFNSTU]']
|
||||
;;
|
||||
esac
|
||||
|
||||
# Handle CRLF in mingw tool chain
|
||||
opt_cr=
|
||||
case "$host_os" in
|
||||
mingw*)
|
||||
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.
|
||||
[ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"]
|
||||
|
||||
# Check to see that the pipe works correctly.
|
||||
pipe_works=no
|
||||
rm -f conftest*
|
||||
cat > conftest.c <<EOF
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
char nm_test_var;
|
||||
void nm_test_func(){}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
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 \| $ac_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.c
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
EOF
|
||||
# Now generate the symbol file.
|
||||
eval "$ac_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
|
||||
|
||||
cat <<EOF >> conftest.c
|
||||
#if defined (__STDC__) && __STDC__
|
||||
# define lt_ptr_t void *
|
||||
#else
|
||||
# define lt_ptr_t char *
|
||||
# define const
|
||||
#endif
|
||||
|
||||
/* The mapping between symbol names and symbols. */
|
||||
const struct {
|
||||
const char *name;
|
||||
lt_ptr_t address;
|
||||
}
|
||||
[lt_preloaded_symbols[] =]
|
||||
{
|
||||
EOF
|
||||
sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
|
||||
cat <<\EOF >> conftest.c
|
||||
{0, (lt_ptr_t) 0}
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
EOF
|
||||
# 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 $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "$progname: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&5
|
||||
fi
|
||||
rm -f conftest* conftst*
|
||||
|
||||
# Do not use the global_symbol_pipe unless it works.
|
||||
if test "$pipe_works" = yes; then
|
||||
break
|
||||
else
|
||||
ac_cv_sys_global_symbol_pipe=
|
||||
ac_cv_global_symbol_to_cdecl=
|
||||
fi
|
||||
done
|
||||
])
|
||||
global_symbol_pipe="$ac_cv_sys_global_symbol_pipe"
|
||||
if test -z "$ac_cv_sys_global_symbol_pipe"; then
|
||||
global_symbol_to_cdecl=
|
||||
else
|
||||
global_symbol_to_cdecl="$ac_cv_global_symbol_to_cdecl"
|
||||
fi
|
||||
if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; 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],
|
||||
@ -318,7 +495,8 @@ AC_SUBST(ECHO)
|
||||
AC_DIVERT_POP
|
||||
])# _LT_AC_PROG_ECHO_BACKSLASH
|
||||
|
||||
AC_DEFUN([_LT_AC_LTCONFIG_HACK], [dnl
|
||||
AC_DEFUN([_LT_AC_LTCONFIG_HACK],
|
||||
[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
|
||||
# Sed substitution that helps us do robust quoting. It backslashifies
|
||||
# metacharacters that are still active within double-quoted strings.
|
||||
Xsed='sed -e s/^X//'
|
||||
@ -362,7 +540,7 @@ test -z "$NM" && NM=nm
|
||||
test -z "$OBJDUMP" && OBJDUMP=objdump
|
||||
test -z "$RANLIB" && RANLIB=:
|
||||
test -z "$STRIP" && STRIP=:
|
||||
test -z "$objext" && objext=o
|
||||
test -z "$ac_objext" && ac_objext=o
|
||||
|
||||
if test x"$host" != x"$build"; then
|
||||
ac_tool_prefix=${host_alias}-
|
||||
@ -883,9 +1061,9 @@ EOF
|
||||
# recent cygwin and mingw systems supply a stub DllMain which the user
|
||||
# can override, but on older systems we have to supply one (in ltdll.c)
|
||||
if test "x$lt_cv_need_dllmain" = "xyes"; then
|
||||
ltdll_obj='$output_objdir/$soname-ltdll.'"$objext "
|
||||
ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
|
||||
ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~
|
||||
test -f $output_objdir/$soname-ltdll.$objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
|
||||
test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
|
||||
else
|
||||
ltdll_obj=
|
||||
ltdll_cmds=
|
||||
@ -1666,177 +1844,6 @@ test "$dynamic_linker" = no && can_build_shared=no
|
||||
##
|
||||
## END FIXME
|
||||
|
||||
## FIXME: this should be a separate macro
|
||||
##
|
||||
# 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], [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 declaration
|
||||
global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
|
||||
# Define system-specific variables.
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
[symcode='[BCDT]']
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
[symcode='[ABCDGISTW]']
|
||||
;;
|
||||
hpux*) # Its linker distinguishes data from code symbols
|
||||
global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
;;
|
||||
irix*)
|
||||
[symcode='[BCDEGRST]']
|
||||
;;
|
||||
solaris* | sysv5*)
|
||||
[symcode='[BDT]']
|
||||
;;
|
||||
sysv4)
|
||||
[symcode='[DFNSTU]']
|
||||
;;
|
||||
esac
|
||||
|
||||
# Handle CRLF in mingw tool chain
|
||||
opt_cr=
|
||||
case "$host_os" in
|
||||
mingw*)
|
||||
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.
|
||||
[ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"]
|
||||
|
||||
# Check to see that the pipe works correctly.
|
||||
pipe_works=no
|
||||
$rm conftest*
|
||||
cat > conftest.c <<EOF
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
char nm_test_var;
|
||||
void nm_test_func(){}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
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 \| $ac_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.c
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
EOF
|
||||
# Now generate the symbol file.
|
||||
eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
|
||||
|
||||
cat <<EOF >> conftest.c
|
||||
#if defined (__STDC__) && __STDC__
|
||||
# define lt_ptr_t void *
|
||||
#else
|
||||
# define lt_ptr_t char *
|
||||
# define const
|
||||
#endif
|
||||
|
||||
/* The mapping between symbol names and symbols. */
|
||||
const struct {
|
||||
const char *name;
|
||||
lt_ptr_t address;
|
||||
}
|
||||
[lt_preloaded_symbols[] =]
|
||||
{
|
||||
EOF
|
||||
sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
|
||||
cat <<\EOF >> conftest.c
|
||||
{0, (lt_ptr_t) 0}
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
EOF
|
||||
# Now try linking the two files.
|
||||
mv conftest.$objext conftstm.$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 $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "$progname: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&5
|
||||
fi
|
||||
$rm conftest* conftst*
|
||||
|
||||
# Do not use the global_symbol_pipe unless it works.
|
||||
if test "$pipe_works" = yes; then
|
||||
break
|
||||
else
|
||||
ac_cv_sys_global_symbol_pipe=
|
||||
fi
|
||||
done
|
||||
])
|
||||
global_symbol_pipe="$ac_cv_sys_global_symbol_pipe"
|
||||
if test -z "$ac_cv_sys_global_symbol_pipe"; then
|
||||
global_symbol_to_cdecl=
|
||||
fi
|
||||
if test "$pipe_works" = yes; then
|
||||
AC_MSG_RESULT(ok)
|
||||
else
|
||||
AC_MSG_RESULT(failed)
|
||||
fi
|
||||
##
|
||||
## END FIXME
|
||||
|
||||
## FIXME: this should be a separate macro
|
||||
##
|
||||
# Report the final consequences.
|
||||
@ -2205,7 +2212,7 @@ reload_cmds=$lt_reload_cmds
|
||||
wl=$lt_wl
|
||||
|
||||
# Object file suffix (normally "o").
|
||||
objext="$objext"
|
||||
objext="$ac_objext"
|
||||
|
||||
# Old archive suffix (normally "a").
|
||||
libext="$libext"
|
||||
|
||||
175
ltdl.m4
175
ltdl.m4
@ -139,7 +139,7 @@ AC_DEFINE_UNQUOTED(LTDL_OBJDIR, "$libltdl_cv_objdir/",
|
||||
])
|
||||
|
||||
AC_DEFUN(AC_LTDL_DLPREOPEN,
|
||||
[AC_REQUIRE([AC_LTDL_GLOBAL_SYMBOL_PIPE])dnl
|
||||
[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl
|
||||
AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen],
|
||||
libltdl_cv_preloaded_symbols, [dnl
|
||||
if test -n "$global_symbol_pipe"; then
|
||||
@ -183,176 +183,9 @@ if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; the
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN(AC_LTDL_GLOBAL_SYMBOL_PIPE,
|
||||
[dnl Check for command to grab the raw symbol name followed
|
||||
dnl by C symbol name from nm.
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
AC_REQUIRE([AC_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?!! ;)}
|
||||
|
||||
# Character class describing NM global symbol codes.
|
||||
[ac_symcode='[BCDEGRST]']
|
||||
|
||||
# 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 \2\3 \3'
|
||||
|
||||
# Transform an extracted symbol line into a proper C declaration
|
||||
ac_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
|
||||
# Define system-specific variables.
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
[ac_symcode='[BCDT]']
|
||||
;;
|
||||
cygwin* | mingw*)
|
||||
[ac_symcode='[ABCDGISTW]']
|
||||
;;
|
||||
hpux*)
|
||||
ac_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
;;
|
||||
irix*)
|
||||
[ac_symcode='[BCDEGRST]']
|
||||
;;
|
||||
solaris*)
|
||||
[ac_symcode='[BDT]']
|
||||
;;
|
||||
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='[ABCDGISTW]']
|
||||
fi
|
||||
|
||||
# Try without a prefix undercore, then with it.
|
||||
for ac_symprfx in "" "_"; do
|
||||
|
||||
[ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($ac_symcode\)[ ][ ]*\($ac_symprfx\)$ac_sympat$/$ac_symxfrm/p'"]
|
||||
|
||||
# Check to see that the pipe works correctly.
|
||||
ac_pipe_works=no
|
||||
rm -f conftest.$ac_ext
|
||||
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"
|
||||
else
|
||||
rm -f "$ac_nlist"T
|
||||
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.
|
||||
eval "$ac_global_symbol_to_cdecl"' < "$ac_nlist" >> conftest.c'
|
||||
|
||||
cat <<EOF >> conftest.c
|
||||
#if defined (__STDC__) && __STDC__
|
||||
# define lt_ptr_t void *
|
||||
#else
|
||||
# define lt_ptr_t char *
|
||||
# define const
|
||||
#endif
|
||||
|
||||
/* The mapping between symbol names and symbols. */
|
||||
const struct {
|
||||
const char *name;
|
||||
lt_ptr_t address;
|
||||
}
|
||||
[lt_preloaded_symbols[] =]
|
||||
{
|
||||
EOF
|
||||
sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$ac_nlist" >> conftest.c
|
||||
cat <<\EOF >> conftest.c
|
||||
{0, (lt_ptr_t) 0}
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
EOF
|
||||
# Now try linking the two files.
|
||||
mv conftest.$ac_objext conftstm.$ac_objext
|
||||
ac_save_LIBS="$LIBS"
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
LIBS="conftstm.$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* conftst*
|
||||
|
||||
# Do not use the global_symbol_pipe unless it works.
|
||||
if test "$ac_pipe_works" = yes; then
|
||||
if test x"$ac_symprfx" = x"_"; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
else
|
||||
ac_cv_sys_symbol_underscore=no
|
||||
fi
|
||||
break
|
||||
else
|
||||
ac_cv_sys_global_symbol_pipe=
|
||||
fi
|
||||
done
|
||||
])
|
||||
|
||||
ac_result=yes
|
||||
if test -z "$ac_cv_sys_global_symbol_pipe"; then
|
||||
ac_result=no
|
||||
fi
|
||||
AC_MSG_RESULT($ac_result)
|
||||
])
|
||||
|
||||
AC_DEFUN(AC_LTDL_SYMBOL_USCORE,
|
||||
[dnl does the compiler prefix global symbols with an underscore?
|
||||
AC_REQUIRE([AC_LTDL_GLOBAL_SYMBOL_PIPE])dnl
|
||||
AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl
|
||||
AC_MSG_CHECKING([for _ prefix in compiled symbols])
|
||||
AC_CACHE_VAL(ac_cv_sys_symbol_underscore,
|
||||
[ac_cv_sys_symbol_underscore=no
|
||||
@ -363,7 +196,7 @@ 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
|
||||
if AC_TRY_EVAL(NM conftest.$ac_objext \| $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
|
||||
@ -375,7 +208,7 @@ if AC_TRY_EVAL(ac_compile); then
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "configure: cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
echo "configure: cannot run $global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "configure: failed program was:" >&AC_FD_CC
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user