diff options
author | Werner Koch <wk@gnupg.org> | 1999-03-08 20:50:18 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 1999-03-08 20:50:18 +0100 |
commit | b31145f3e25a3dd99ad2b84a4cd7ec0f43aafe2f (patch) | |
tree | c55d9d29f4fe50c598024dbaa31f8fb9f4c56299 /acinclude.m4 | |
parent | add some demo keys (diff) | |
download | gnupg2-b31145f3e25a3dd99ad2b84a4cd7ec0f43aafe2f.tar.xz gnupg2-b31145f3e25a3dd99ad2b84a4cd7ec0f43aafe2f.zip |
See ChangeLog: Mon Mar 8 20:47:17 CET 1999 Werner Koch
Diffstat (limited to 'acinclude.m4')
-rw-r--r-- | acinclude.m4 | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/acinclude.m4 b/acinclude.m4 index 2349da629..2d0b69b60 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -342,5 +342,222 @@ define(GNUPG_CHECK_MLOCK, fi ]) +##################################################################### +# AM_SYS_SYMBOL_UNDERSCORE, AM_SYS_NM_PARSE: +# This has been taken from glib 1.2.0 acinclude.m4 which states that +# it is copyrighted by the FSF +################################################################### ## +dnl AM_SYS_SYMBOL_UNDERSCORE - does the compiler prefix global symbols +dnl 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 +]) + + +dnl AM_SYS_NM_PARSE - Check for command to grab the raw symbol name followed +dnl 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) +]) +dnl end of AM_SYS_NM_PARSE + dnl *-*wedit:notab*-* Please keep this as the last line. |