summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog16
-rw-r--r--Makefile.am2
-rw-r--r--acinclude.m416
-rwxr-xr-xautogen.sh56
-rw-r--r--complus/gpgcom.c2
-rw-r--r--configure.ac50
-rw-r--r--gpgme/ChangeLog14
-rw-r--r--gpgme/ath-compat.c7
-rw-r--r--gpgme/ath.h14
-rw-r--r--gpgme/data-compat.c5
-rw-r--r--gpgme/data.c5
-rw-r--r--gpgme/engine-gpgsm.c6
-rw-r--r--gpgme/gpgme.c5
-rw-r--r--gpgme/gpgme.h3
-rw-r--r--gpgme/io.h3
-rw-r--r--gpgme/w32-util.c8
16 files changed, 170 insertions, 42 deletions
diff --git a/ChangeLog b/ChangeLog
index 2b6a949d..6e85315f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
@@ -564,7 +578,7 @@
* 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
diff --git a/Makefile.am b/Makefile.am
index 2a5ed5e5..905c3cea 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -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
diff --git a/acinclude.m4 b/acinclude.m4
index c62e596d..96766561 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -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
])
diff --git a/autogen.sh b/autogen.sh
index 3e4c96c0..1d69d84f 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -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
diff --git a/complus/gpgcom.c b/complus/gpgcom.c
index 7c967be8..66703696 100644
--- a/complus/gpgcom.c
+++ b/complus/gpgcom.c
@@ -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";
diff --git a/configure.ac b/configure.ac
index 80c2cfad..b62e3578 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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")
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index dc398fe7..8ba7807b 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -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.
diff --git a/gpgme/ath-compat.c b/gpgme/ath-compat.c
index 110bd51c..3ac7a263 100644
--- a/gpgme/ath-compat.c
+++ b/gpgme/ath-compat.c
@@ -22,17 +22,18 @@
#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"
diff --git a/gpgme/ath.h b/gpgme/ath.h
index ef74126a..8a323eb1 100644
--- a/gpgme/ath.h
+++ b/gpgme/ath.h
@@ -21,12 +21,15 @@
#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*/
diff --git a/gpgme/data-compat.c b/gpgme/data-compat.c
index 6b6663b3..b55fd61b 100644
--- a/gpgme/data-compat.c
+++ b/gpgme/data-compat.c
@@ -30,6 +30,11 @@
#include "data.h"
#include "util.h"
+#if defined(HAVE_W32_SYSTEM) && !defined(EOPNOTSUPP)
+#define EOPNOTSUPP VALUE_FOR_EOPNOTSUPP
+#endif
+
+
/* Create a new data buffer filled with LENGTH bytes starting from
OFFSET within the file FNAME or stream STREAM (exactly one must be
diff --git a/gpgme/data.c b/gpgme/data.c
index 3ba644fa..d4bac06b 100644
--- a/gpgme/data.c
+++ b/gpgme/data.c
@@ -33,6 +33,11 @@
#include "ops.h"
#include "io.h"
+#if defined(HAVE_W32_SYSTEM) && !defined(EOPNOTSUPP)
+#define EOPNOTSUPP VALUE_FOR_EOPNOTSUPP
+#endif
+
+
gpgme_error_t
_gpgme_data_new (gpgme_data_t *r_dh, struct _gpgme_data_cbs *cbs)
diff --git a/gpgme/engine-gpgsm.c b/gpgme/engine-gpgsm.c
index 71b01c9f..c35087bb 100644
--- a/gpgme/engine-gpgsm.c
+++ b/gpgme/engine-gpgsm.c
@@ -19,11 +19,12 @@
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*/
diff --git a/gpgme/gpgme.c b/gpgme/gpgme.c
index f95ae3fd..9e5171c9 100644
--- a/gpgme/gpgme.c
+++ b/gpgme/gpgme.c
@@ -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;
}
diff --git a/gpgme/gpgme.h b/gpgme/gpgme.h
index 2e22113a..3db2d972 100644
--- a/gpgme/gpgme.h
+++ b/gpgme/gpgme.h
@@ -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"
+
/* Some opaque data types used by GPGME. */
diff --git a/gpgme/io.h b/gpgme/io.h
index 58de0714..47707017 100644
--- a/gpgme/io.h
+++ b/gpgme/io.h
@@ -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. */
diff --git a/gpgme/w32-util.c b/gpgme/w32-util.c
index 5254fcce..e4fac8e2 100644
--- a/gpgme/w32-util.c
+++ b/gpgme/w32-util.c
@@ -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;