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>
* autogen.sh: Invoke automake with `-a' (add missing files).

View File

@ -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}

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
signatures simultaneously.

View File

@ -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

View File

@ -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
dnl FIXME: check whether Bonobo is installed
dnl
dnl Checks for libraries
dnl Checks for header files.
dnl
dnl
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]);
AC_CHECK_SIZEOF(unsigned short)
AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long)
dnl
dnl Checks for compiler features.
dnl
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
fi
dnl
dnl Checks for compiler features
dnl
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
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
"

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>
* decrypt-verify.c: New file.

View File

@ -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";
*/
#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*/

View File

@ -786,9 +786,12 @@ _gpgme_gpg_spawn( GpgObject gpg, void *opaque )
int pid;
struct spawn_fd_item_s *fd_child_list, *fd_parent_list;
if ( !gpg )
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 */
if ( gpg->arg_error )

View File

@ -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 */

View File

@ -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;
}

View File

@ -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;
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 {
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*/