* acinclude.m4 (GNUPG_CHECK_VA_COPY): Assume no when cross-compiling.
authorWerner Koch <wk@gnupg.org>
Wed, 9 Mar 2005 16:03:05 +0000 (16:03 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 9 Mar 2005 16:03:05 +0000 (16:03 +0000)
* Makefile.am (EXTRA_DIST): Include autogen.sh

* autogen.sh: Added the usual code to build for W32 (--build-w32).

* configure.ac: Fixed the mingw32 host string, removed OS/2 stuff.
(HAVE_DRIVE_LETTERS): Removed.
(HAVE_W32_SYSTEM): Added.
(AC_GNU_SOURCE): New to replace the identical AH_VERBATIM.
(AH_BOTTOM): Added.

* w32-util.c (_gpgme_get_gpg_path, _gpgme_get_gpgsm_path): Do not
cast away type checks.

* io.h [W32]: Do not include stdio.h.  If it is needed do it at
the right place.

* data.h [W32]: Removed kludge for EOPNOTSUP.
* data.c, data-compat.c [W32]: Explicitly test for it here.

16 files changed:
trunk/ChangeLog
trunk/Makefile.am
trunk/acinclude.m4
trunk/autogen.sh
trunk/complus/gpgcom.c
trunk/configure.ac
trunk/gpgme/ChangeLog
trunk/gpgme/ath-compat.c
trunk/gpgme/ath.h
trunk/gpgme/data-compat.c
trunk/gpgme/data.c
trunk/gpgme/engine-gpgsm.c
trunk/gpgme/gpgme.c
trunk/gpgme/gpgme.h
trunk/gpgme/io.h
trunk/gpgme/w32-util.c

index 2b6a949d5a9d8c43226f8bf13ea5bfdc9992f0c5..6e85315f86c64fc90f40cbef29878eba0f5cacf9 100644 (file)
@@ -1,3 +1,17 @@
+2005-03-09  Werner Koch  <wk@g10code.com>
+
+       * acinclude.m4 (GNUPG_CHECK_VA_COPY): Assume no when cross-compiling.
+
+       * Makefile.am (EXTRA_DIST): Include autogen.sh
+
+       * autogen.sh: Added the usual code to build for W32 (--build-w32).
+
+       * configure.ac: Fixed the mingw32 host string, removed OS/2 stuff.
+       (HAVE_DRIVE_LETTERS): Removed.
+       (HAVE_W32_SYSTEM): Added.
+       (AC_GNU_SOURCE): New to replace the identical AH_VERBATIM.
+       (AH_BOTTOM): Added.
+
 2004-12-28  Werner Koch  <wk@g10code.com>
 
        Released 1.0.2.
        * autogen.sh: Added option --build-w32.
 
 
- Copyright 2001, 2002, 2003, 2004 g10 Code GmbH
+ Copyright 2001, 2002, 2003, 2004, 2005 g10 Code GmbH
 
  This file is free software; as a special exception the author gives
  unlimited permission to copy and/or distribute it, with or without
index 2a5ed5e575fb864a1b99b560980f024ef0743e1a..905c3cea22ad23bc60fd81c2949b5af35048c4a0 100644 (file)
@@ -23,7 +23,7 @@
 ACLOCAL_AMFLAGS = -I m4
 AUTOMAKE_OPTIONS = dist-bzip2
 
-EXTRA_DIST = gpgme.spec.in
+EXTRA_DIST = gpgme.spec.in autogen.sh 
 
 if BUILD_ASSUAN
 assuan = assuan
index c62e596d27f05bbd26e07d001f277c2cbecf8dfa..96766561cc76ff5677cb4aaf3f1c60860e105f86 100644 (file)
@@ -50,8 +50,11 @@ dnl   Actual test code taken from glib-1.1.
 AC_DEFUN([GNUPG_CHECK_VA_COPY],
 [ AC_MSG_CHECKING(whether va_lists must be copied by value)
   AC_CACHE_VAL(gnupg_cv_must_copy_va_byval,[
-    gnupg_cv_must_copy_va_byval=no
-    AC_TRY_RUN([
+    if test "$cross_compiling" = yes; then
+      gnupg_cv_must_copy_va_byval=no
+    else
+      gnupg_cv_must_copy_va_byval=no
+      AC_TRY_RUN([
        #include <stdarg.h>
        void f (int i, ...)
        {
@@ -69,10 +72,15 @@ AC_DEFUN([GNUPG_CHECK_VA_COPY],
           f (0, 42);
             return 0;
        }
-    ],gnupg_cv_must_copy_va_byval=yes)
+      ],gnupg_cv_must_copy_va_byval=yes)
+    fi
   ])
   if test "$gnupg_cv_must_copy_va_byval" = yes; then
      AC_DEFINE(MUST_COPY_VA_BYVAL,1,[used to implement the va_copy macro])
   fi
-  AC_MSG_RESULT($gnupg_cv_must_copy_va_byval)
+  if test "$cross_compiling" = yes; then
+    AC_MSG_RESULT(assuming $gnupg_cv_must_copy_va_byval)
+  else
+    AC_MSG_RESULT($gnupg_cv_must_copy_va_byval)
+  fi
 ])
index 3e4c96c04f12724abf3c93283a4ae705dc7c44eb..1d69d84f9820a44b919c5d2da2bb667e5e23b005 100755 (executable)
@@ -29,6 +29,62 @@ check_version () {
 }
 
 
+DIE=no
+
+# Used to cross-compile for Windows.
+if test "$1" = "--build-w32"; then
+    tmp=`dirname $0`
+    tsdir=`cd "$tmp"; pwd`
+    shift
+    if [ ! -f $tsdir/config.guess ]; then
+        echo "$tsdir/config.guess not found" >&2
+        exit 1
+    fi
+    build=`$tsdir/config.guess`
+
+    [ -z "$w32root" ] && w32root="$HOME/w32root"
+    echo "Using $w32root as standard install directory" >&2
+    
+    # See whether we have the Debian cross compiler package or the
+    # old mingw32/cpd system
+    if i586-mingw32msvc-gcc --version >/dev/null 2>&1 ; then
+        host=i586-mingw32msvc
+        crossbindir=/usr/$host/bin
+    else
+       host=i386--mingw32
+       if ! mingw32 --version >/dev/null; then
+          echo "We need at least version 0.3 of MingW32/CPD" >&2
+          exit 1
+       fi
+       crossbindir=`mingw32 --install-dir`/bin
+       # Old autoconf version required us to setup the environment
+       # with the proper tool names.
+       CC=`mingw32 --get-path gcc`
+       CPP=`mingw32 --get-path cpp`
+       AR=`mingw32 --get-path ar`
+       RANLIB=`mingw32 --get-path ranlib`
+       export CC CPP AR RANLIB 
+    fi
+   
+    if [ -f "$tsdir/config.log" ]; then
+        if ! head $tsdir/config.log | grep "$host" >/dev/null; then
+            echo "Pease run a 'make distclean' first" >&2
+            exit 1
+        fi
+    fi
+
+    ./configure --enable-maintainer-mode  --prefix=${w32root}  \
+            --host=i586-mingw32msvc --build=${build} \
+            --with-gpg-error-prefix=${w32root}  \
+            --disable-shared --with-gpgsm=c:/gnupg/gpgsm.exe
+
+    exit $?
+fi
+
+
+
+
+
 # Grep the required versions from configure.ac
 autoconf_vers=`sed -n '/^AC_PREREQ(/ { 
 s/^.*(\(.*\))/\1/p
index 7c967be8b54c125a85bc236d99a2ac256290753a..66703696423315eb93993f1e4a73c6a5bedb4838 100644 (file)
@@ -123,7 +123,7 @@ main (int argc, char **argv )
 
     opt.homedir = getenv("GNUPGHOME");
     if( !opt.homedir || !*opt.homedir ) {
-      #ifdef HAVE_DRIVE_LETTERS
+      #ifdef HAVE_DOSISH_SYSTEM
        opt.homedir = "c:/gnupg";
       #else
        opt.homedir = "~/.gnupg";
index 80c2cfad2c55be673a22cb6abcfbb6fd59be4884..b62e3578fba1b0cc4071091c93e1d35dc9bbe041 100644 (file)
@@ -1,6 +1,6 @@
 # configure.ac for GPGME
 # Copyright (C) 2000 Werner Koch (dd9jn)
-# Copyright (C) 2001, 2002, 2003, 2004 g10 Code GmbH
+# Copyright (C) 2001, 2002, 2003, 2004, 2005 g10 Code GmbH
 # 
 # This file is part of GPGME.
 # 
@@ -43,8 +43,7 @@ GPGME_CONFIG_API_VERSION=1
 NEED_GPG_VERSION=1.2.2
 NEED_GPGSM_VERSION=1.9.6
 ##############################################
-AC_PREREQ(2.52)
-AC_REVISION($Revision$)
+
 
 PACKAGE=$PACKAGE_NAME
 VERSION=$PACKAGE_VERSION
@@ -57,11 +56,8 @@ AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
 AM_MAINTAINER_MODE
 AC_CANONICAL_HOST
 
-AH_VERBATIM([_GNU_SOURCE],
-[/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE
-#endif])
+# Enable GNU extensions on systems that have them.
+AC_GNU_SOURCE
 
 AH_VERBATIM([_REENTRANT],
 [/* To allow the use of GPGME in multithreaded programs we have to use
@@ -72,6 +68,16 @@ AH_VERBATIM([_REENTRANT],
 # define _REENTRANT 1
 #endif])
 
+AH_BOTTOM([
+/* Some environments miss the definition for EOPNOTSUPP.  We provide
+   the error code here and test where neded whether it should be
+   defined.  Can't do the test here due to the order of includes.  */
+#ifdef HAVE_W32_SYSTEM
+#define VALUE_FOR_EOPNOTSUPP 95
+#endif /*!HAVE_W32_SYSTEM*/
+
+])
+
 
 AC_PROG_CC
 
@@ -109,17 +115,13 @@ AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
 GPG_DEFAULT=no
 GPGSM_DEFAULT=no
 component_system=None
+have_dosish_system=no
+have_w32_system=no
 case "${host}" in
-    *-*-mingw32* | i?86-emx-os2 | i?86-*-os2*emx | i?86-*-msdosdjgpp* )
+    *-mingw32*)
         # special stuff for Windoze NT
-        # OS/2 with the EMX environment
-        # DOS with the DJGPP environment
-        AC_DEFINE(HAVE_DRIVE_LETTERS, ,
-                 [Defined if we run on some of the PCDOS like systems (DOS,
-                  Windoze, OS/2) with special properties like no file modes.])
-        AC_DEFINE(HAVE_DOSISH_SYSTEM, ,
-                 [Defined if the filesystem uses driver letters.])
        have_dosish_system=yes
+        have_w32_system=yes
         GPG_DEFAULT='c:\\gnupg\\gpg.exe'
        # XXX Assuan is not supported in this configuration.
        #GPGSM_DEFAULT='c:\\gnupg\\gpgsm.exe'
@@ -141,7 +143,21 @@ case "${host}" in
 #      GPGSM_DEFAULT='/usr/bin/gpgsm'
        ;;
 esac
-AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = "yes")
+
+if test "$have_dosish_system" = yes; then
+   AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
+             [Defined if we run on some of the PCDOS like systems 
+              (DOS, Windoze. OS/2) with special properties like
+              no file modes])
+fi
+AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
+
+if test "$have_w32_system" = yes; then
+   AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
+fi
+AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
+
+
 AM_CONDITIONAL(HAVE_PTH, test "$have_pth" = "yes")
 AM_CONDITIONAL(HAVE_PTHREAD, test "$have_pthread" = "yes")
 
index dc398fe79793941520ba24127a1371af2f8e5d91..8ba7807b2123155b3a8c4e78a17dbc6858e9bf70 100644 (file)
@@ -1,3 +1,17 @@
+2005-03-09  Werner Koch  <wk@g10code.com>
+
+       * w32-util.c (_gpgme_get_gpg_path, _gpgme_get_gpgsm_path): Do not
+       cast away type checks.
+
+       * io.h [W32]: Do not include stdio.h.  If it is needed do it at
+       the right place.
+
+       * data.h [W32]: Removed kludge for EOPNOTSUP.
+       * data.c, data-compat.c [W32]: Explicitly test for it here.
+
+       Replaced use of _WIN32 by HAVE_W32_SYSTEM except for public header
+       files.
+
 2005-03-07  Timo Schulz  <twoaday@g10code.de>
  
         * gpgme.h: [_WIN32] Removed ssize_t typedef.
index 110bd51c2831753c90d4a9ee3572e6980e6a474c..3ac7a2638a2938961d7356a4e226b72a85872c24 100644 (file)
 #include <config.h>
 #endif
 
-#include <unistd.h>
 #include <stdio.h>
+#include <unistd.h>
 #ifdef HAVE_SYS_SELECT_H
 # include <sys/select.h>
 #else
 # include <sys/time.h>
 #endif
 #include <sys/types.h>
-#ifndef _WIN32
+#ifndef HAVE_W32_SYSTEM
 #include <sys/wait.h>
-#endif
+#endif /*!HAVE_W32_SYSTEM*/
+
 
 #include "ath.h"
 
index ef74126afc2ff0965cb330fceb7057c7439b073a..8a323eb1d0d733d756a022fec5cf1137ff85ab4c 100644 (file)
 #ifndef ATH_H
 #define ATH_H
 
-#ifdef _WIN32
-struct msghdr { int dummy; };
-typedef int socklen_t;
+#ifdef HAVE_W32_SYSTEM
+  /* fixme: Check how we did it in libgcrypt.  */
+  struct msghdr { int dummy; };
+  typedef int socklen_t;
 # include <windows.h>
 # include <io.h>
-#else
+
+#else /*!HAVE_W32_SYSTEM*/
+
 # ifdef HAVE_SYS_SELECT_H
 #  include <sys/select.h>
 # else
@@ -34,7 +37,8 @@ typedef int socklen_t;
 # endif
 # include <sys/types.h>
 # include <sys/socket.h>
-#endif
+
+#endif  /*!HAVE_W32_SYSTEM*/
 
 
 \f
index 6b6663b3f0b1788e83da8081401c9d6771230b4d..b55fd61ba4469deb0aefde16a423076c5770f411 100644 (file)
 #include "data.h"
 #include "util.h"
 
+#if defined(HAVE_W32_SYSTEM) && !defined(EOPNOTSUPP)
+#define EOPNOTSUPP VALUE_FOR_EOPNOTSUPP
+#endif
+
+
 \f
 /* Create a new data buffer filled with LENGTH bytes starting from
    OFFSET within the file FNAME or stream STREAM (exactly one must be
index 3ba644fa8e0e7b6a7c7b35f3ec1d4c5bcc5244dc..d4bac06bc85ebeab099fbbae4a20401a48c0d0c0 100644 (file)
 #include "ops.h"
 #include "io.h"
 
+#if defined(HAVE_W32_SYSTEM) && !defined(EOPNOTSUPP)
+#define EOPNOTSUPP VALUE_FOR_EOPNOTSUPP
+#endif
+
+
 \f
 gpgme_error_t
 _gpgme_data_new (gpgme_data_t *r_dh, struct _gpgme_data_cbs *cbs)
index 71b01c9fb571a75cfe031506b73a5cab91a1c2fe..c35087bb2efc58a6adc3f4f762f260230619cb55 100644 (file)
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
    02111-1307, USA.  */
 
-#ifndef _WIN32
 #if HAVE_CONFIG_H
 #include <config.h>
 #endif
 
+#ifndef HAVE_W32_SYSTEM
+
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -1597,4 +1598,5 @@ struct engine_ops _gpgme_engine_ops_gpgsm =
     gpgsm_io_event,
     gpgsm_cancel
   };
-#endif
+
+#endif /*!HAVE_W32_SYSTEM*/
index f95ae3fd939d7a82902abd437549432d31d9c945..9e5171c9ae3756c7994eefb5a0f2f6842c81551a 100644 (file)
@@ -344,7 +344,7 @@ gpgme_get_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs)
 gpgme_error_t
 gpgme_set_locale (gpgme_ctx_t ctx, int category, const char *value)
 {
-#ifndef _WIN32
+#ifndef HAVE_W32_SYSTEM
   int failed = 0;
   char *new_lc_ctype;
   char *new_lc_messages;
@@ -398,7 +398,8 @@ gpgme_set_locale (gpgme_ctx_t ctx, int category, const char *value)
   SET_ONE_LOCALE (messages, MESSAGES);
   if (!ctx)
     UNLOCK (def_lc_lock);
-#endif
+
+#endif /*!HAVE_W32_SYSTEM*/
   
   return 0;
 }
index 2e22113ac38abd05bc93fa4a27730d381ae258c6..3db2d972280c3209d323bac029a3b32256dd0d78 100644 (file)
@@ -72,7 +72,8 @@ extern "C" {
    AM_PATH_GPGME macro) check that this header matches the installed
    library.  Warning: Do not edit the next line.  configure will do
    that for you!  */
-#define GPGME_VERSION "1.0.1"
+#define GPGME_VERSION "1.1.0-cvs"
+
 
 \f
 /* Some opaque data types used by GPGME.  */
index 58de0714b6a7bb2a6b67c21c62eed1c2e0858cb6..47707017e0231ca3c61e742157f5d53423a42ca0 100644 (file)
@@ -22,9 +22,6 @@
 #ifndef IO_H
 #define IO_H
 
-#ifdef _WIN32
-#include <stdio.h>
-#endif
 
 /* A single file descriptor passed to spawn.  For child fds, dup_to
    specifies the fd it should become in the child.  */
index 5254fcce1e3332b3e513542350bc6f7abfec6fe8..e4fac8e2ee8b4da7a2bee246fe4c5d0670474687 100644 (file)
@@ -51,6 +51,10 @@ read_w32_registry_string (const char *root, const char *dir, const char *name)
   DWORD n1, nbytes;
   char *result = NULL;
 
+#ifdef HAVE_W32_SYSTEM
+#warning Check that this code matches the one used by gnupg
+#endif
+
   if (!root)
     root_key = HKEY_CURRENT_USER;
   else if (!strcmp (root, "HKEY_CLASSES_ROOT"))
@@ -120,7 +124,7 @@ _gpgme_get_gpg_path (void)
 
   LOCK (get_path_lock);
   if (!gpg_program)
-    gpg_program = (char*)find_program_in_registry ("gpgProgram");
+    gpg_program = find_program_in_registry ("gpgProgram");
 #ifdef GPG_PATH
   if (!gpg_program)
     gpg_program = GPG_PATH;
@@ -136,7 +140,7 @@ _gpgme_get_gpgsm_path (void)
 
   LOCK (get_path_lock);
   if (!gpgsm_program)
-    gpgsm_program = (char*)find_program_in_registry ("gpgsmProgram");
+    gpgsm_program = find_program_in_registry ("gpgsmProgram");
 #ifdef GPGSM_PATH
   if (!gpgsm_program)
     gpgsm_program = GPGSM_PATH;