diff options
Diffstat (limited to 'acinclude.m4')
-rw-r--r-- | acinclude.m4 | 119 |
1 files changed, 87 insertions, 32 deletions
diff --git a/acinclude.m4 b/acinclude.m4 index 20c92be52..9f8bfd01d 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -50,6 +50,25 @@ AC_DEFUN(GNUPG_FIX_HDR_VERSION, ]) +dnl GNUPG_CHECK_GNUMAKE +dnl +AC_DEFUN(GNUPG_CHECK_GNUMAKE, + [ + if ${MAKE-make} --version 2>/dev/null | grep '^GNU ' >/dev/null 2>&1; then + : + else + AC_MSG_WARN([[ +*** +*** It seems that you are not using GNU make. Some make tools have serious +*** flaws and you may not be able to build this software at all. Before you +*** complain, please try GNU make: GNU make is easy to build and available +*** at all GNU archives. It is always available from ftp.gnu.org:/gnu/make. +***]]) + fi + ]) + + + dnl GNUPG_LINK_FILES( SRC, DEST ) dnl same as AC_LINK_FILES, but collect the files to link in dnl some special variables and do the link @@ -212,39 +231,38 @@ define(GNUPG_CHECK_PIC, ###################################################################### -# Check for rdynamic flag -# This sets CFLAGS_RDYNAMIC to the required flags +# Check for export-dynamic flag +# This sets CFLAGS_EXPORTDYNAMIC to the required flags ###################################################################### -dnl GNUPG_CHECK_RDYNAMIC +dnl GNUPG_CHECK_EXPORTDYNAMIC dnl -define(GNUPG_CHECK_RDYNAMIC, - [ AC_MSG_CHECKING(how to specify -rdynamic) - CFLAGS_RDYNAMIC= +define(GNUPG_CHECK_EXPORTDYNAMIC, + [ AC_MSG_CHECKING(how to specify -export-dynamic) if test "$cross_compiling" = yes; then - AC_MSG_RESULT(assume none) + AC_MSG_RESULT(assume none) + CFLAGS_EXPORTDYNAMIC="" else - case "$host_os" in - solaris* ) - CFLAGS_RDYNAMIC="-Wl,-dy" - ;; - - hpux* ) - CFLAGS_RDYNAMIC="-Wl,-E" - ;; - - openbsd* | freebsd2* | osf4* | irix* ) - CFLAGS_RDYNAMIC="" - ;; - - * ) - CFLAGS_RDYNAMIC="-Wl,-export-dynamic" - ;; - esac - AC_MSG_RESULT($CFLAGS_RDYNAMIC) + AC_CACHE_VAL(gnupg_cv_export_dynamic,[ + if AC_TRY_COMMAND([${CC-cc} $CFLAGS -Wl,--version 2>&1 | + grep "GNU ld" >/dev/null]); then + # using gnu's linker + gnupg_cv_export_dynamic="-Wl,-export-dynamic" + else + case "$host_os" in + hpux* ) + gnupg_cv_export_dynamic="-Wl,-E" + ;; + * ) + gnupg_cv_export_dynamic="" + ;; + esac + fi + ]) + AC_MSG_RESULT($gnupg_cv_export_dynamic) + CFLAGS_EXPORTDYNAMIC="$gnupg_cv_export_dynamic" fi ]) - ##################################################################### # Check for SysV IPC (from GIMP) # And see whether we have a SHM_LOCK (FreeBSD does not have it). @@ -299,7 +317,8 @@ define(GNUPG_CHECK_IPC, AC_TRY_COMPILE([#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h>],[ - int foo( int shm_id ) { shmctl(shm_id, SHM_LOCK, 0); } + int shm_id; + shmctl(shm_id, SHM_LOCK, 0); ], gnupg_cv_ipc_have_shm_lock="yes", gnupg_cv_ipc_have_shm_lock="no" @@ -318,11 +337,46 @@ define(GNUPG_CHECK_IPC, ###################################################################### # Check whether mlock is broken (hpux 10.20 raises a SIGBUS if mlock # is not called from uid 0 (not tested whether uid 0 works) +# For DECs Tru64 we have also to check whether mlock is in librt +# mlock is there a macro using memlk() ###################################################################### dnl GNUPG_CHECK_MLOCK dnl define(GNUPG_CHECK_MLOCK, [ AC_CHECK_FUNCS(mlock) + if test "$ac_cv_func_mlock" = "no"; then + AC_CHECK_HEADERS(sys/mman.h) + if test "$ac_cv_header_sys_mman_h" = "yes"; then + # Add librt to LIBS: + AC_CHECK_LIB(rt, memlk) + AC_CACHE_CHECK([whether mlock is in sys/mman.h], + gnupg_cv_mlock_is_in_sys_mman, + [AC_TRY_LINK([ + #include <assert.h> + #ifdef HAVE_SYS_MMAN_H + #include <sys/mman.h> + #endif + ], [ + int i; + mkdir ("foo", 0); + /* glibc defines this for functions which it implements + * to always fail with ENOSYS. Some functions are actually + * named something starting with __ and the normal name + * is an alias. */ + #if defined (__stub_mlock) || defined (__stub___mlock) + choke me + #else + mlock(&i, 4); + #endif + ; return 0; + ], + gnupg_cv_mlock_is_in_sys_mman=yes, + gnupg_cv_mlock_is_in_sys_mman=no)]) + if test "$gnupg_cv_mlock_is_in_sys_mman" = "yes"; then + AC_DEFINE(HAVE_MLOCK) + fi + fi + fi if test "$ac_cv_func_mlock" = "yes"; then AC_MSG_CHECKING(whether mlock is broken) AC_CACHE_VAL(gnupg_cv_have_broken_mlock, @@ -372,9 +426,10 @@ define(GNUPG_CHECK_MLOCK, ]) -################################################################ +################################################################ # GNUPG_PROG_NM - find the path to a BSD-compatible name lister +################################################################ AC_DEFUN(GNUPG_PROG_NM, [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(ac_cv_path_NM, @@ -433,7 +488,7 @@ case "$host_os" in aix*) ac_symcode='[BCDTU]' ;; -freebsd* | netbsd* | openbsd* | sunos* | cygwin32* | mingw32*) +freebsd* | netbsd* | openbsd* | bsdi* | sunos* | cygwin32* | mingw32*) ac_sympat='_\([_A-Za-z][_A-Za-z0-9]*\)' ac_symxfrm='_\1 \1' ;; @@ -586,7 +641,7 @@ AC_CHECK_TOOL(AS, as, false) AC_DEFUN(GNUPG_SYS_SYMBOL_UNDERSCORE, [tmp_do_check="no" case "${target}" in - i386-emx-os2 | i[3456]86-pc-os2*emx ) + i386-emx-os2 | i[3456]86-pc-os2*emx | i386-pc-msdosdjgpp) ac_cv_sys_symbol_underscore=yes ;; *) @@ -645,7 +700,8 @@ dnl Stolen from gcc dnl Define MKDIR_TAKES_ONE_ARG if mkdir accepts only one argument instead dnl of the usual 2. AC_DEFUN(GNUPG_FUNC_MKDIR_TAKES_ONE_ARG, -[AC_CACHE_CHECK([if mkdir takes one argument], gnupg_cv_mkdir_takes_one_arg, +[AC_CHECK_HEADERS(sys/stat.h unistd.h direct.h) +AC_CACHE_CHECK([if mkdir takes one argument], gnupg_cv_mkdir_takes_one_arg, [AC_TRY_COMPILE([ #include <sys/types.h> #ifdef HAVE_SYS_STAT_H @@ -663,7 +719,6 @@ if test $gnupg_cv_mkdir_takes_one_arg = yes ; then fi ]) - dnl GPH_PROG_DOCBOOK() dnl Check whether we have the needed Docbook environment dnl and issue a warning if this is not the case. |