# 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
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* )
# 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")
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
"
/****************
* 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,
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*/
-
-
-
-
-