summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Brinkmann <mb@g10code.com>2001-11-18 03:31:31 +0000
committerMarcus Brinkmann <mb@g10code.com>2001-11-18 03:31:31 +0000
commit1a9da605ad2f801324342b68b49aa8aebefc2c27 (patch)
treea6d59e0d05e09d470a55b9158a49094cef85a62f
parent590bd5a7d88cb8aa21bae45789fb321136e4820a (diff)
downloadgpgme-1a9da605ad2f801324342b68b49aa8aebefc2c27.tar.gz
2001-11-18 Marcus Brinkmann <marcus@g10code.de>
* configure.in: Renamed to ... * configure.ac: ... this. Update to autoconf 2.52. Lots of small changes in the transition. Support --with-gpg=PATH and --with-gpgsm=PATH options. Check if test suites can be run. * acconfig.h: Add GPGSM_PATH. * Makefile.am: New variable `tests', set to `tests' if RUN_GPG_TESTS. (SUBDIRS): Replace string `tests' with variable `tests'. gpgme/ 2001-11-18 Marcus Brinkmann <marcus@g10code.de> * configure.in: Renamed to ... * configure.ac: ... this. Update to autoconf 2.52. Lots of small changes in the transition. Support --with-gpg=PATH and --with-gpgsm=PATH options. Check if test suites can be run. * acconfig.h: Add GPGSM_PATH. * Makefile.am: New variable `tests', set to `tests' if RUN_GPG_TESTS. (SUBDIRS): Replace string `tests' with variable `tests'.
-rw-r--r--ChangeLog11
-rw-r--r--Makefile.am10
-rw-r--r--NEWS3
-rw-r--r--acconfig.h9
-rw-r--r--configure.ac (renamed from configure.in)169
-rw-r--r--gpgme/ChangeLog15
-rw-r--r--gpgme/posix-util.c25
-rw-r--r--gpgme/rungpg.c7
-rw-r--r--gpgme/util.h3
-rw-r--r--gpgme/version.c13
-rw-r--r--gpgme/w32-util.c67
11 files changed, 206 insertions, 126 deletions
diff --git a/ChangeLog b/ChangeLog
index fac139cd..766731fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2001-11-18 Marcus Brinkmann <marcus@g10code.de>
+
+ * configure.in: Renamed to ...
+ * configure.ac: ... this. Update to autoconf 2.52. Lots of small
+ changes in the transition. Support --with-gpg=PATH and
+ --with-gpgsm=PATH options. Check if test suites can be run.
+ * acconfig.h: Add GPGSM_PATH.
+ * Makefile.am: New variable `tests', set to `tests' if
+ RUN_GPG_TESTS.
+ (SUBDIRS): Replace string `tests' with variable `tests'.
+
2001-10-22 Marcus Brinkmann <marcus@g10code.de>
* autogen.sh: Invoke automake with `-a' (add missing files).
diff --git a/Makefile.am b/Makefile.am
index df846864..efe8c9ce 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -26,13 +26,17 @@ bonobo = bonobo
else
bonobo =
endif
+
if BUILD_COMPLUS
complus = complus
else
complus =
endif
+if RUN_GPG_TESTS
+tests = tests
+else
+tests =
+endif
-SUBDIRS = jnlib gpgme tests doc ${bonobo} ${complus}
-
-
+SUBDIRS = jnlib gpgme ${tests} doc ${bonobo} ${complus}
diff --git a/NEWS b/NEWS
index 90b6e038..237fbb9a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,7 @@
+ * GPGME can be compiled without GnuPG being installed (--with-gpg=PATH),
+ and even cross-compiled.
+
* New operation gpgme_op_decrypt_verify to decrypt and verify
signatures simultaneously.
diff --git a/acconfig.h b/acconfig.h
index 1a7f63c2..2eb2460b 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -39,12 +39,15 @@
/* Some systems have a mkdir that takes a single argument. */
#undef MKDIR_TAKES_ONE_ARG
-/* path to the gpg binary */
+/* Path to the GnuPG binary. */
#undef GPG_PATH
-/* min. needed GPG version */
+/* Min. needed GnuPG version. */
#undef NEED_GPG_VERSION
-/* stuff needed by lnlib/ */
+/* Path to the GpgSM binary. */
+#undef GPGSM_PATH
+
+/* Stuff needed by jnlib. */
#undef HAVE_BYTE_TYPEDEF
#undef HAVE_USHORT_TYPEDEF
#undef HAVE_ULONG_TYPEDEF
diff --git a/configure.in b/configure.ac
index 8e830334..9ef4d44a 100644
--- a/configure.in
+++ b/configure.ac
@@ -19,16 +19,22 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
# (Process this file with autoconf to produce a configure script.)
-AC_REVISION($Revision$)dnl
-AC_INIT(gpgme/gpgme.h)
+AC_INIT(gpgme, 0.2.3a, [gnupg-devel@gnupg.org])
+AC_PREREQ(2.52)
+AC_REVISION($Revision$)
+
+AC_CONFIG_SRCDIR(gpgme/gpgme.h)
AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(gpgme, 0.2.3a)
AM_MAINTAINER_MODE
-# Version numbers (Remember to change them just before a release)
+
+AC_PROG_CC
+
+# Version numbers (Remember to change them just before a release.)
# (Interfaces removed: CURRENT++, AGE=0, REVISION=0)
# (Interfaces added: CURRENT++, AGE++, REVISION=0)
# (No interfaces changed: REVISION++)
-AM_INIT_AUTOMAKE(gpgme,0.2.3a)
# XXXX new functions
LIBGPGME_LT_CURRENT=4
LIBGPGME_LT_AGE=4
@@ -41,21 +47,12 @@ AC_SUBST(LIBGPGME_LT_AGE)
AC_SUBST(LIBGPGME_LT_REVISION)
AC_DEFINE_UNQUOTED(NEED_GPG_VERSION, "$NEED_GPG_VERSION")
+dnl Don't default to build static libs.
+dnl AC_DISABLE_STATIC
+AC_PROG_LIBTOOL
-dnl
-dnl Checks for programs
-dnl
-AC_ARG_PROGRAM
-
-dnl Don't default to build static libs
-dnl AM_DISABLE_STATIC
-AM_PROG_LIBTOOL
-
-if test "$GCC" = yes; then
- CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
-fi
-
-GPG=
+GPG_DEFAULT=no
+GPGSM_DEFAULT=no
component_system=None
case "${target}" in
*-*-mingw32* | i?86-emx-os2 | i?86-*-os2*emx | i?86-*-msdosdjgpp* )
@@ -64,85 +61,119 @@ case "${target}" in
# DOS with the DJGPP environment
AC_DEFINE(HAVE_DRIVE_LETTERS)
AC_DEFINE(HAVE_DOSISH_SYSTEM)
- GPG='c:\\gnupg\\gpg.exe'
+ GPG_DEFAULT='c:\\gnupg\\gpg.exe'
+ GPGSM_DEFAULT='c:\\gnupg\\gpgsm.exe'
#component_system='COM+'
;;
*)
- ;;
+dnl # XXX: Probably use exec-prefix here?
+dnl GPG_DEFAULT='/usr/bin/gpg'
+dnl GPGSM_DEFAULT='/usr/bin/gpgsm'
+ ;;
esac
-
-
-
dnl
-dnl Checks for libraries
+dnl Checks for libraries.
dnl
+dnl FIXME: check whether Bonobo is installed
+
dnl
-dnl Checks for header files
+dnl Checks for header files.
dnl
-
-
dnl
-dnl Checks for typedefs and structures
+dnl Checks for typedefs and structures.
dnl
GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
+
# We should not use them in this software;
# However jnlib/types.h needs them - so we take the easy way.
-AC_CHECK_SIZEOF(unsigned short, 2)
-AC_CHECK_SIZEOF(unsigned int, 4)
-AC_CHECK_SIZEOF(unsigned long, 4)
-if test "$ac_cv_sizeof_unsigned_short" = "0" \
- || test "$ac_cv_sizeof_unsigned_int" = "0" \
- || test "$ac_cv_sizeof_unsigned_long" = "0"; then
- AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
-fi
-
-
+AC_CHECK_SIZEOF(unsigned short)
+AC_CHECK_SIZEOF(unsigned int)
+AC_CHECK_SIZEOF(unsigned long)
dnl
-dnl Checks for compiler features
+dnl Checks for compiler features.
dnl
+if test "$GCC" = yes; then
+ CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
+fi
+
dnl
-dnl Checks for library functions
+dnl Checks for library functions.
dnl
dnl These are needed by libjnlib
AC_CHECK_FUNCS(memicmp stpcpy strlwr strtoul memmove stricmp)
-
dnl
dnl Checks for system services
dnl
-if test -z "$GPG"; then
- AC_PATH_PROG(GPG, gpg)
+NO_OVERRIDE=no
+AC_ARG_WITH(gpg,
+ AC_HELP_STRING([--with-gpg=PATH], [use GnuPG binary at PATH]),
+ GPG=$withval, NO_OVERRIDE=yes)
+if test "$NO_OVERRIDE" = "yes" || test "$GPG" = "yes"; then
+ GPG=
+ NO_OVERRIDE=yes
+ if test "$cross_compiling" != "yes"; then
+ AC_PATH_PROG(GPG, gpg)
+ fi
if test -z "$GPG"; then
- AC_MSG_ERROR([[
-***
-*** GnuPG not found. Please install GnuPG first.
-*** See http://www.gnupg.org/download.html
-***
- ]])
+ GPG="$GPG_DEFAULT"
fi
fi
-AC_DEFINE_UNQUOTED(GPG_PATH, "$GPG")
-
-
-dnl
-dnl FIXME: check whether Bonobo is installed
-dnl
-
+if test "$GPG" = no; then
+ if test "$NO_OVERRIDE" = "yes"; then
+ if test "$cross_compiling" != "yes"; then
+ AC_MSG_WARN([Could not find GnuPG, install GnuPG or use --with-gpg=PATH to enable it])
+ else
+ AC_MSG_ERROR([Can not determine path to GnuPG when cross-compiling, use --with-gpg=PATH])
+ fi
+ fi
+else
+ AC_DEFINE_UNQUOTED(GPG_PATH, "$GPG")
+fi
+AM_CONDITIONAL(RUN_GPG_TESTS,
+ [test "$cross_compiling" != "yes" && test -n "$GPG" && test -r "$GPG"])
+
+NO_OVERRIDE=no
+AC_ARG_WITH(gpgsm,
+ AC_HELP_STRING([--with-gpgsm=PATH], [use GpgSM binary at PATH]),
+ GPGSM=$withval, NO_OVERRIDE=yes)
+if test "$NO_OVERRIDE" = "yes" || test "$GPGSM" = "yes"; then
+ GPGSM=
+ NO_OVERRIDE=yes
+ if test "$cross_compiling" != "yes"; then
+ AC_PATH_PROG(GPGSM, gpgsm)
+ fi
+ if test -z "$GPGSM"; then
+ GPGSM="$GPGSM_DEFAULT"
+ fi
+fi
+if test "$GPGSM" = no; then
+ if test "$NO_OVERRIDE" = "yes"; then
+ if test "$cross_compiling" != "yes"; then
+ AC_MSG_WARN([Could not find GpgSM, install GpgSM or use --with-gpgsm=PATH to enable it])
+ else
+ AC_MSG_ERROR([Can not determine path to GpgSM when cross-compiling, use --with-gpgsm=PATH])
+ fi
+ fi
+else
+ AC_DEFINE_UNQUOTED(GPGSM_PATH, "$GPGSM")
+fi
+AM_CONDITIONAL(RUN_GPGSM_TESTS,
+ [test "$cross_compiling" != "yes" && test -n "$GPGSM" && test -r "$GPGSM"])
dnl
dnl Create config files
dnl
-dnl
AM_CONDITIONAL(BUILD_COMPLUS, test "$component_system" = "COM+")
AM_CONDITIONAL(BUILD_BONOBO, test "$component_system" = "Bonobo")
@@ -157,24 +188,16 @@ GPGME_CFLAGS=""
AC_SUBST(GPGME_LIBS)
AC_SUBST(GPGME_CFLAGS)
-AC_OUTPUT_COMMANDS([
-chmod +x gpgme/gpgme-config
-])
-
-AC_OUTPUT([
-Makefile
-jnlib/Makefile
-gpgme/Makefile
-gpgme/gpgme-config
-tests/Makefile
-doc/Makefile
-bonobo/Makefile
-complus/Makefile
-])
+AC_CONFIG_FILES(Makefile jnlib/Makefile gpgme/Makefile tests/Makefile
+ doc/Makefile bonobo/Makefile complus/Makefile)
+AC_CONFIG_FILES(gpgme/gpgme-config, chmod +x gpgme/gpgme-config)
+AC_OUTPUT
echo "
GPGME v${VERSION} has been configured as follows:
- GPG version: min. $NEED_GPG_VERSION
- GPG path: $GPG
+ GnuPG version: min. $NEED_GPG_VERSION
+ GnuPG path: $GPG
+
+ GpgSM path: $GPGSM
"
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index d7cf9101..83676950 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,3 +1,18 @@
+2001-11-18 Marcus Brinkmann <marcus@g10code.de>
+
+ * version.c (get_engine_info): If GnuPG is not available, return
+ an error message.
+ * posix-util.c (_gpgme_get_gpg_path): Allow GPG_PATH to be
+ undefined.
+ (_gpgme_get_gpgsm_path): New function.
+ * w32-util.c (find_program_in_registry): New static function.
+ (_gpgme_get_gpg_path): Allow GPG_PATH to be undefined. Rework
+ to use find_program_in_registry.
+ (_gpgme_get_gpgsm_path): New function.
+ (util.h): Prototype _gpgme_get_gpgsm_path).
+ * rungpg.c (_gpgme_gpg_spawn): Verify that _gpgme_get_gpg_path()
+ returns non-null.
+
2001-11-16 Marcus Brinkmann <marcus@g10code.de>
* decrypt-verify.c: New file.
diff --git a/gpgme/posix-util.c b/gpgme/posix-util.c
index a0c755e0..ef590760 100644
--- a/gpgme/posix-util.c
+++ b/gpgme/posix-util.c
@@ -30,21 +30,24 @@
#include "util.h"
-
const char *
_gpgme_get_gpg_path (void)
{
- /* #warning Forced to take GPG development version
- * return "/home/wk/work/gnupg-stable/g10/gpg";
- */
-
- return GPG_PATH;
+#ifdef GPG_PATH
+ return GPG_PATH;
+#else
+ return NULL;
+#endif
}
+const char *
+_gpgme_get_gpgsm_path (void)
+{
+#ifdef GPGSM_PATH
+ return GPGSM_PATH;
+#else
+ return NULL;
+#endif
+}
#endif /*!HAVE_DOSISH_SYSTEM*/
-
-
-
-
-
diff --git a/gpgme/rungpg.c b/gpgme/rungpg.c
index 60cfa225..7a914445 100644
--- a/gpgme/rungpg.c
+++ b/gpgme/rungpg.c
@@ -786,8 +786,11 @@ _gpgme_gpg_spawn( GpgObject gpg, void *opaque )
int pid;
struct spawn_fd_item_s *fd_child_list, *fd_parent_list;
- if ( !gpg )
- return mk_error (Invalid_Value);
+ if (!gpg)
+ return mk_error (Invalid_Value);
+
+ if (! _gpgme_get_gpg_path ())
+ return mk_error (Invalid_Engine);
/* Kludge, so that we don't need to check the return code of
* all the gpgme_gpg_add_arg(). we bail out here instead */
diff --git a/gpgme/util.h b/gpgme/util.h
index 437276ea..029a8463 100644
--- a/gpgme/util.h
+++ b/gpgme/util.h
@@ -123,8 +123,7 @@ char *stpcpy (char *a, const char *b);
/*-- {posix,w32}-util.c --*/
const char *_gpgme_get_gpg_path (void);
-
-
+const char *_gpgme_get_gpgsm_path (void);
#endif /* UTIL_H */
diff --git a/gpgme/version.c b/gpgme/version.c
index 5c486f20..565c4127 100644
--- a/gpgme/version.c
+++ b/gpgme/version.c
@@ -228,6 +228,13 @@ get_engine_info (void)
return engine_info;
path = _gpgme_get_gpg_path ();
+ if (!path)
+ {
+ engine_info = "<GnupgInfo>\n"
+ " <error>Not supported</error>\n"
+ "</GnupgInfo>\n";
+ goto leave;
+ }
err = gpgme_new (&c);
if (err)
goto leave;
@@ -299,9 +306,3 @@ get_engine_info (void)
gpgme_release ( c );
return engine_info;
}
-
-
-
-
-
-
diff --git a/gpgme/w32-util.c b/gpgme/w32-util.c
index 693a9c77..2cbf6c2b 100644
--- a/gpgme/w32-util.c
+++ b/gpgme/w32-util.c
@@ -41,7 +41,7 @@
/****************
* Return a string from the Win32 Registry or NULL in case of
* error. Caller must release the return value. A NULL for root
- * is an alias fro HKEY_CURRENT_USER
+ * is an alias for HKEY_CURRENT_USER.
*/
static char *
read_w32_registry_string ( const char *root,
@@ -88,38 +88,53 @@ read_w32_registry_string ( const char *root,
return result;
}
+static const char *
+find_program_in_registry (const char *name)
+{
+ char *program = NULL;
+
+ program = read_w32_registry_string (NULL, "Software\\GNU\\GnuPG", name);
+ if (program)
+ {
+ int i;
+
+ DEBUG1 ("found %s in registry: `%s'", name, program );
+ for (i = 0; program[i]; i++)
+ {
+ if (program[i] == '/')
+ program[i] = '\\';
+ }
+ }
+ return program;
+}
const char *
_gpgme_get_gpg_path (void)
{
- static char *gpg_program = NULL;
+ static char *gpg_program = NULL;
- if (!gpg_program) {
- gpg_program = read_w32_registry_string ( NULL,
- "Software\\GNU\\GnuPG", "gpgProgram" );
- if (gpg_program) {
- int i;
-
- DEBUG1 ("found gpgProgram in registry: `%s'", gpg_program );
- for (i=0; gpg_program[i]; i++) {
- if (gpg_program[i] == '/')
- gpg_program[i] = '\\';
- }
- }
- else {
- gpg_program = GPG_PATH;
- }
- }
-
- return gpg_program;
+ if (!gpg_program)
+ gpg_program = find_program_in_registry ("gpgProgram");
+#ifdef GPG_PATH
+ if (!gpg_program)
+ gpg_program = GPG_PATH;
+#endif
+ return gpg_program;
}
-
+const char *
+_gpgme_get_gpgsm_path (void)
+{
+ static char *gpgsm_program = NULL;
+
+ if (!gpgsm_program)
+ gpgsm_program = find_program_in_registry ("gpgsmProgram");
+#ifdef GPGSM_PATH
+ if (!gpgsm_program)
+ gpgsm_program = GPGSM_PATH;
+#endif
+ return gpgsm_program;
+}
#endif /*HAVE_DOSISH_SYSTEM*/
-
-
-
-
-