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'.
This commit is contained in:
Marcus Brinkmann 2001-11-18 03:31:31 +00:00
parent 590bd5a7d8
commit 1a9da605ad
11 changed files with 208 additions and 128 deletions

View File

@ -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> 2001-10-22 Marcus Brinkmann <marcus@g10code.de>
* autogen.sh: Invoke automake with `-a' (add missing files). * autogen.sh: Invoke automake with `-a' (add missing files).

View File

@ -26,13 +26,17 @@ bonobo = bonobo
else else
bonobo = bonobo =
endif endif
if BUILD_COMPLUS if BUILD_COMPLUS
complus = complus complus = complus
else else
complus = complus =
endif endif
if RUN_GPG_TESTS
tests = tests
else
tests =
endif
SUBDIRS = jnlib gpgme tests doc ${bonobo} ${complus} SUBDIRS = jnlib gpgme ${tests} doc ${bonobo} ${complus}

3
NEWS
View File

@ -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 * New operation gpgme_op_decrypt_verify to decrypt and verify
signatures simultaneously. signatures simultaneously.

View File

@ -39,12 +39,15 @@
/* Some systems have a mkdir that takes a single argument. */ /* Some systems have a mkdir that takes a single argument. */
#undef MKDIR_TAKES_ONE_ARG #undef MKDIR_TAKES_ONE_ARG
/* path to the gpg binary */ /* Path to the GnuPG binary. */
#undef GPG_PATH #undef GPG_PATH
/* min. needed GPG version */ /* Min. needed GnuPG version. */
#undef NEED_GPG_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_BYTE_TYPEDEF
#undef HAVE_USHORT_TYPEDEF #undef HAVE_USHORT_TYPEDEF
#undef HAVE_ULONG_TYPEDEF #undef HAVE_ULONG_TYPEDEF

View File

@ -19,16 +19,22 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
# (Process this file with autoconf to produce a configure script.) # (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_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE(gpgme, 0.2.3a)
AM_MAINTAINER_MODE 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 removed: CURRENT++, AGE=0, REVISION=0)
# (Interfaces added: CURRENT++, AGE++, REVISION=0) # (Interfaces added: CURRENT++, AGE++, REVISION=0)
# (No interfaces changed: REVISION++) # (No interfaces changed: REVISION++)
AM_INIT_AUTOMAKE(gpgme,0.2.3a)
# XXXX new functions # XXXX new functions
LIBGPGME_LT_CURRENT=4 LIBGPGME_LT_CURRENT=4
LIBGPGME_LT_AGE=4 LIBGPGME_LT_AGE=4
@ -41,21 +47,12 @@ AC_SUBST(LIBGPGME_LT_AGE)
AC_SUBST(LIBGPGME_LT_REVISION) AC_SUBST(LIBGPGME_LT_REVISION)
AC_DEFINE_UNQUOTED(NEED_GPG_VERSION, "$NEED_GPG_VERSION") 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 GPG_DEFAULT=no
dnl Checks for programs GPGSM_DEFAULT=no
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=
component_system=None component_system=None
case "${target}" in case "${target}" in
*-*-mingw32* | i?86-emx-os2 | i?86-*-os2*emx | i?86-*-msdosdjgpp* ) *-*-mingw32* | i?86-emx-os2 | i?86-*-os2*emx | i?86-*-msdosdjgpp* )
@ -64,85 +61,119 @@ case "${target}" in
# DOS with the DJGPP environment # DOS with the DJGPP environment
AC_DEFINE(HAVE_DRIVE_LETTERS) AC_DEFINE(HAVE_DRIVE_LETTERS)
AC_DEFINE(HAVE_DOSISH_SYSTEM) 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+' #component_system='COM+'
;; ;;
*) *)
dnl # XXX: Probably use exec-prefix here?
dnl GPG_DEFAULT='/usr/bin/gpg'
dnl GPGSM_DEFAULT='/usr/bin/gpgsm'
;; ;;
esac esac
dnl
dnl Checks for libraries.
dnl
dnl FIXME: check whether Bonobo is installed
dnl dnl
dnl Checks for libraries dnl Checks for header files.
dnl dnl
dnl dnl
dnl Checks for header files dnl Checks for typedefs and structures.
dnl
dnl
dnl Checks for typedefs and structures
dnl dnl
GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF) GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF) GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF) GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF) GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF) GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
# We should not use them in this software; # We should not use them in this software;
# However jnlib/types.h needs them - so we take the easy way. # However jnlib/types.h needs them - so we take the easy way.
AC_CHECK_SIZEOF(unsigned short, 2) AC_CHECK_SIZEOF(unsigned short)
AC_CHECK_SIZEOF(unsigned int, 4) AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long, 4) AC_CHECK_SIZEOF(unsigned long)
if test "$ac_cv_sizeof_unsigned_short" = "0" \
|| test "$ac_cv_sizeof_unsigned_int" = "0" \ dnl
|| test "$ac_cv_sizeof_unsigned_long" = "0"; then dnl Checks for compiler features.
AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]); dnl
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
fi fi
dnl dnl
dnl Checks for compiler features dnl Checks for library functions.
dnl
dnl
dnl Checks for library functions
dnl dnl
dnl These are needed by libjnlib dnl These are needed by libjnlib
AC_CHECK_FUNCS(memicmp stpcpy strlwr strtoul memmove stricmp) AC_CHECK_FUNCS(memicmp stpcpy strlwr strtoul memmove stricmp)
dnl dnl
dnl Checks for system services dnl Checks for system services
dnl dnl
if test -z "$GPG"; then 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) AC_PATH_PROG(GPG, gpg)
fi
if test -z "$GPG"; then if test -z "$GPG"; then
AC_MSG_ERROR([[ GPG="$GPG_DEFAULT"
***
*** GnuPG not found. Please install GnuPG first.
*** See http://www.gnupg.org/download.html
***
]])
fi fi
fi fi
AC_DEFINE_UNQUOTED(GPG_PATH, "$GPG") if test "$GPG" = no; then
if test "$NO_OVERRIDE" = "yes"; then
if test "$cross_compiling" != "yes"; then
dnl AC_MSG_WARN([Could not find GnuPG, install GnuPG or use --with-gpg=PATH to enable it])
dnl FIXME: check whether Bonobo is installed else
dnl 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
dnl Create config files dnl Create config files
dnl dnl
dnl
AM_CONDITIONAL(BUILD_COMPLUS, test "$component_system" = "COM+") AM_CONDITIONAL(BUILD_COMPLUS, test "$component_system" = "COM+")
AM_CONDITIONAL(BUILD_BONOBO, test "$component_system" = "Bonobo") AM_CONDITIONAL(BUILD_BONOBO, test "$component_system" = "Bonobo")
@ -157,24 +188,16 @@ GPGME_CFLAGS=""
AC_SUBST(GPGME_LIBS) AC_SUBST(GPGME_LIBS)
AC_SUBST(GPGME_CFLAGS) AC_SUBST(GPGME_CFLAGS)
AC_OUTPUT_COMMANDS([ AC_CONFIG_FILES(Makefile jnlib/Makefile gpgme/Makefile tests/Makefile
chmod +x gpgme/gpgme-config doc/Makefile bonobo/Makefile complus/Makefile)
]) AC_CONFIG_FILES(gpgme/gpgme-config, chmod +x gpgme/gpgme-config)
AC_OUTPUT
AC_OUTPUT([
Makefile
jnlib/Makefile
gpgme/Makefile
gpgme/gpgme-config
tests/Makefile
doc/Makefile
bonobo/Makefile
complus/Makefile
])
echo " echo "
GPGME v${VERSION} has been configured as follows: GPGME v${VERSION} has been configured as follows:
GPG version: min. $NEED_GPG_VERSION GnuPG version: min. $NEED_GPG_VERSION
GPG path: $GPG GnuPG path: $GPG
GpgSM path: $GPGSM
" "

View File

@ -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> 2001-11-16 Marcus Brinkmann <marcus@g10code.de>
* decrypt-verify.c: New file. * decrypt-verify.c: New file.

View File

@ -30,21 +30,24 @@
#include "util.h" #include "util.h"
const char * const char *
_gpgme_get_gpg_path (void) _gpgme_get_gpg_path (void)
{ {
/* #warning Forced to take GPG development version #ifdef GPG_PATH
* return "/home/wk/work/gnupg-stable/g10/gpg";
*/
return 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*/ #endif /*!HAVE_DOSISH_SYSTEM*/

View File

@ -786,9 +786,12 @@ _gpgme_gpg_spawn( GpgObject gpg, void *opaque )
int pid; int pid;
struct spawn_fd_item_s *fd_child_list, *fd_parent_list; struct spawn_fd_item_s *fd_child_list, *fd_parent_list;
if ( !gpg ) if (!gpg)
return mk_error (Invalid_Value); 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 /* Kludge, so that we don't need to check the return code of
* all the gpgme_gpg_add_arg(). we bail out here instead */ * all the gpgme_gpg_add_arg(). we bail out here instead */
if ( gpg->arg_error ) if ( gpg->arg_error )

View File

@ -123,8 +123,7 @@ char *stpcpy (char *a, const char *b);
/*-- {posix,w32}-util.c --*/ /*-- {posix,w32}-util.c --*/
const char *_gpgme_get_gpg_path (void); const char *_gpgme_get_gpg_path (void);
const char *_gpgme_get_gpgsm_path (void);
#endif /* UTIL_H */ #endif /* UTIL_H */

View File

@ -228,6 +228,13 @@ get_engine_info (void)
return engine_info; return engine_info;
path = _gpgme_get_gpg_path (); path = _gpgme_get_gpg_path ();
if (!path)
{
engine_info = "<GnupgInfo>\n"
" <error>Not supported</error>\n"
"</GnupgInfo>\n";
goto leave;
}
err = gpgme_new (&c); err = gpgme_new (&c);
if (err) if (err)
goto leave; goto leave;
@ -299,9 +306,3 @@ get_engine_info (void)
gpgme_release ( c ); gpgme_release ( c );
return engine_info; return engine_info;
} }

View File

@ -41,7 +41,7 @@
/**************** /****************
* Return a string from the Win32 Registry or NULL in case of * Return a string from the Win32 Registry or NULL in case of
* error. Caller must release the return value. A NULL for root * 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 * static char *
read_w32_registry_string ( const char *root, read_w32_registry_string ( const char *root,
@ -88,38 +88,53 @@ read_w32_registry_string ( const char *root,
return result; 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 * const char *
_gpgme_get_gpg_path (void) _gpgme_get_gpg_path (void)
{ {
static char *gpg_program = NULL; static char *gpg_program = NULL;
if (!gpg_program) { if (!gpg_program)
gpg_program = read_w32_registry_string ( NULL, gpg_program = find_program_in_registry ("gpgProgram");
"Software\\GNU\\GnuPG", "gpgProgram" ); #ifdef GPG_PATH
if (gpg_program) { 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; gpg_program = GPG_PATH;
} #endif
}
return gpg_program; 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*/ #endif /*HAVE_DOSISH_SYSTEM*/