+2005-08-19 Werner Koch <wk@g10code.com>
+
+ * configure.ac [W32]: Create values for versioninfo.rc and list
+ substuture versioninfo.rc.
+ * configure.ac: Define ENABLE_GPGSM.
+
2005-08-08 Werner Koch <wk@g10code.com>
* configure.ac (stpcpy): Changed from replace to test.
Noteworthy changes in version 1.1.0 (unreleased)
------------------------------------------------
+ * "./autogen.sh --build-w32" does now build gpgme.dll.
+
* You can now configure the backend engine file name and home
directory to be used, as default and per context.
./configure --enable-maintainer-mode --prefix=${w32root} \
--host=i586-mingw32msvc --build=${build} \
--with-gpg-error-prefix=${w32root} \
- --disable-shared --with-gpgsm=c:/gnupg/gpgsm.exe
+ --disable-shared --without-gpgsm
exit $?
fi
#endif])
AC_PROG_CC
+AC_CHECK_TOOL(DLLTOOL, dlltool, :)
+AC_CHECK_TOOL(WINDRES, windres, :)
AC_SUBST(LIBGPGME_LT_CURRENT)
fi
else
AC_DEFINE_UNQUOTED(GPGSM_PATH, "$GPGSM", [Path to the GPGSM binary.])
- AC_SUBST(GPGSM)
+ AC_DEFINE(ENABLE_GPGSM,1,[Whether GPGSM support is enabled])
fi
AM_CONDITIONAL(HAVE_GPGSM, test "$GPGSM" != "no")
+
+
dnl Check for GPGSM version requirement.
GPGSM_VERSION=unknown
ok=maybe
# (this is easier than to have a *.in file just for one substitution)
GNUPG_FIX_HDR_VERSION(gpgme/gpgme.h, GPGME_VERSION)
+# Generate values for the DLL version info
+if test "$have_w32_system" = yes; then
+ BUILD_TIMESTAMP=`date --iso-8601=minutes`
+ changequote(,)dnl
+ BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
+ changequote([,])dnl
+ case "$VERSION" in
+ *-cvs) BUILD_FILEVERSION="${BUILD_FILEVERSION}0" ;;
+ *-rc*) BUILD_FILEVERSION="${BUILD_FILEVERSION}1" ;;
+ *) BUILD_FILEVERSION="${BUILD_FILEVERSION}2" ;;
+ esac
+fi
+AC_SUBST(BUILD_TIMESTAMP)
+AC_SUBST(BUILD_FILEVERSION)
+
+
# Substitution used for gpgme-config
GPGME_CONFIG_LIBS="-lgpgme"
GPGME_CONFIG_CFLAGS=""
AC_CONFIG_FILES(Makefile assuan/Makefile gpgme/Makefile
tests/Makefile tests/gpg/Makefile tests/gpgsm/Makefile
- doc/Makefile complus/Makefile)
+ doc/Makefile complus/Makefile
+ gpgme/versioninfo.rc)
AC_CONFIG_FILES(gpgme/gpgme-config, chmod +x gpgme/gpgme-config)
AC_OUTPUT
+2005-08-19 Werner Koch <wk@g10code.com>
+
+ * gpgme.def: New.
+ * versioninfo.rc.in: New.
+ * Makefile.am: Addes support for building a W32 DLL.
+
+ * ttyname_r.c (ttyname_r) [W32]: Return error.
+ * ath-compat.c [W32]: select and co are not yet supported; return
+ error.
+ * data-stream.c (stream_seek): Use ftell if ftello is not available.
+
2005-08-08 Werner Koch <wk@g10code.com>
* util.h (stpcpy): Renamed to ..
## Process this file with automake to produce Makefile.in
-EXTRA_DIST = gpgme-config.in gpgme.m4 mkstatus libgpgme.vers
+EXTRA_DIST = gpgme-config.in gpgme.m4 mkstatus libgpgme.vers \
+ versioninfo.rc.in gpgme.de
BUILT_SOURCES = status-table.h
MOSTLYCLEANFILES = status-table.h
bin_SCRIPTS = gpgme-config
status-table.h : gpgme.h
$(srcdir)/mkstatus < $(srcdir)/gpgme.h > status-table.h
+
+# Special code to build a DLL. The current libtool (1.5.6) is not
+# able to do this properly; we better use gcc's built in magic.
+if HAVE_W32_SYSTEM
+
+w32_o_files = ath-compat.o conversion.o data-compat.o data-fd.o \
+ data-mem.o data-stream.o data-user.o data.o debug.o \
+ decrypt-verify.o decrypt.o delete.o edit.o encrypt-sign.o \
+ encrypt.o engine-gpgsm.o engine.o error.o export.o genkey.o \
+ get-env.o gpgme.o import.o key.o keylist.o memrchr.o \
+ op-support.o passphrase.o progress.o putc_unlocked.o \
+ rungpg.o sign.o signers.o trust-item.o trustlist.o \
+ ttyname_r.o vasprintf.o verify.o version.o \
+ w32-io.o w32-sema.o w32-util.o \
+ wait-global.o wait-private.o wait-user.o wait.o
+
+all-local: gpgme.dll gpgme.dll.a
+
+install-exec-hook:
+ cp gpgme.dll gpgme.dll.a $(DESTDIR)$(libdir)/
+ $(STRIP) $(DESTDIR)$(libdir)/gpgme.dll
+
+gpgme.dll gpgme.dll.a: gpgme.def $(w32_o_files) versioninfo.o
+ $(CC) -shared -o gpgme.dll gpgme.def $(w32_o_files) \
+ versioninfo.o @GPG_ERROR_LIBS@ -Wl,--out-implib,gpgme.dll.a
+
+
+.rc.o:
+ $(WINDRES) `test -f '$<' || echo '$(srcdir)/'`$< $@
+
+endif
if (ath_ops && ath_ops->select)
return ath_ops->select (nfd, rset, wset, eset, timeout);
else
+#ifdef HAVE_W32_SYSTEM
+ return -1; /* We don't support this yet. */
+#else
return select (nfd, rset, wset, eset, timeout);
+#endif
}
if (ath_ops && ath_ops->waitpid)
return ath_ops->waitpid (pid, status, options);
else
+#ifdef HAVE_W32_SYSTEM
+ return -1; /* We don't support this yet. */
+#else
return waitpid (pid, status, options);
+#endif
}
if (ath_ops && ath_ops->accept)
return ath_ops->accept (s, addr, length_ptr);
else
+#ifdef HAVE_W32_SYSTEM
+ return -1; /* We don't support this yet. */
+#else
return accept (s, addr, length_ptr);
+#endif
}
if (ath_ops && ath_ops->connect)
return ath_ops->connect (s, addr, length);
else
+#ifdef HAVE_W32_SYSTEM
+ return -1; /* We don't support this yet. */
+#else
return connect (s, addr, length);
+#endif
}
if (ath_ops && ath_ops->sendmsg)
return ath_ops->sendmsg (s, msg, flags);
else
+#ifdef HAVE_W32_SYSTEM
+ return -1; /* We don't support this yet. */
+#else
return sendmsg (s, msg, flags);
+#endif
}
if (ath_ops && ath_ops->recvmsg)
return ath_ops->recvmsg (s, msg, flags);
else
+#ifdef HAVE_W32_SYSTEM
+ return -1; /* We don't support this yet. */
+#else
return recvmsg (s, msg, flags);
+#endif
}
if (err)
return -1;
+#ifdef HAVE_FSEEKO
return ftello (dh->data.stream);
+#else
+ return ftell (dh->data.stream);
+#endif
}
--- /dev/null
+; gpgme.def - List of symbols to export.
+; Copyright (C) 2005 g10 Code GmbH
+;
+; This file is part of GPGME.
+;
+; GPGME is free software; you can redistribute it and/or modify
+; it under the terms of the GNU Lesser general Public License as
+; published by the Free Software Foundation; either version 2.1 of
+; the License, or (at your option) any later version.
+;
+; GPGME is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+; GNU Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this program; if not, write to the Free Software
+; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+
+EXPORTS
+ gpgme_check_version @1
+ gpgme_get_engine_info @2
+ gpgme_engine_check_version @3
+
+ gpgme_err_code_from_errno @4
+ gpgme_err_code_to_errno @5
+ gpgme_err_make_from_errno @6
+ gpgme_error_from_errno @7
+ gpgme_strerror @8
+ gpgme_strerror_r @9
+ gpgme_strsource @10
+
+ gpgme_data_get_encoding @11
+ gpgme_data_new @12
+ gpgme_data_new_from_cbs @13
+ gpgme_data_new_from_fd @14
+ gpgme_data_new_from_file @15
+ gpgme_data_new_from_filepart @16
+ gpgme_data_new_from_mem @17
+ gpgme_data_new_from_stream @18
+ gpgme_data_read @19
+ gpgme_data_release @20
+ gpgme_data_release_and_get_mem @21
+ gpgme_data_seek @22
+ gpgme_data_set_encoding @23
+ gpgme_data_write @24
+
+ gpgme_get_protocol_name @25
+ gpgme_hash_algo_name @26
+ gpgme_pubkey_algo_name @27
+
+ gpgme_new @28
+ gpgme_get_armor @29
+ gpgme_get_include_certs @30
+ gpgme_get_io_cbs @31
+ gpgme_get_keylist_mode @32
+ gpgme_get_passphrase_cb @33
+ gpgme_get_progress_cb @34
+ gpgme_get_protocol @35
+ gpgme_get_textmode @36
+ gpgme_release @37
+ gpgme_set_armor @38
+ gpgme_set_include_certs @39
+ gpgme_set_io_cbs @40
+ gpgme_set_keylist_mode @41
+ gpgme_set_locale @42
+ gpgme_set_passphrase_cb @43
+ gpgme_set_progress_cb @44
+ gpgme_set_protocol @45
+ gpgme_set_textmode @46
+ gpgme_signers_add @47
+ gpgme_signers_clear @48
+ gpgme_signers_enum @49
+
+ gpgme_key_ref @50
+ gpgme_key_unref @51
+ gpgme_key_release @52
+
+ gpgme_trust_item_ref @53
+ gpgme_trust_item_unref @54
+
+ gpgme_cancel @55
+ gpgme_op_card_edit @56
+ gpgme_op_card_edit_start @57
+ gpgme_op_decrypt @58
+ gpgme_op_decrypt_result @59
+ gpgme_op_decrypt_start @60
+ gpgme_op_decrypt_verify @61
+ gpgme_op_decrypt_verify_start @62
+ gpgme_op_delete @63
+ gpgme_op_delete_start @64
+ gpgme_op_edit @65
+ gpgme_op_edit_start @66
+ gpgme_op_encrypt @67
+ gpgme_op_encrypt_result @68
+ gpgme_op_encrypt_sign @69
+ gpgme_op_encrypt_sign_start @70
+ gpgme_op_encrypt_start @71
+ gpgme_op_export @72
+ gpgme_op_export_ext @73
+ gpgme_op_export_ext_start @74
+ gpgme_op_export_start @75
+ gpgme_op_genkey @76
+ gpgme_op_genkey_result @77
+ gpgme_op_genkey_start @78
+ gpgme_get_key @79
+ gpgme_op_import @80
+ gpgme_op_import_result @81
+ gpgme_op_import_start @82
+ gpgme_op_keylist_end @83
+ gpgme_op_keylist_ext_start @84
+ gpgme_op_keylist_next @85
+ gpgme_op_keylist_result @86
+ gpgme_op_keylist_start @87
+ gpgme_op_sign @88
+ gpgme_op_sign_result @89
+ gpgme_op_sign_start @90
+ gpgme_op_trustlist_end @91
+ gpgme_op_trustlist_next @92
+ gpgme_op_trustlist_start @93
+ gpgme_op_verify @94
+ gpgme_op_verify_result @95
+ gpgme_op_verify_start @96
+ gpgme_wait @97
+
+ gpgme_data_new_with_read_cb @98
+ gpgme_data_rewind @99
+ gpgme_get_sig_status @100
+ gpgme_get_sig_string_attr @101
+ gpgme_get_sig_ulong_attr @102
+ gpgme_get_sig_key @103
+ gpgme_key_get_string_attr @104
+ gpgme_key_get_ulong_attr @105
+ gpgme_key_sig_get_string_attr @106
+ gpgme_key_sig_get_ulong_attr @107
+ gpgme_op_import_ext @108
+ gpgme_trust_item_get_int_attr @109
+ gpgme_trust_item_get_string_attr @110
+ gpgme_trust_item_release @111
+
+ gpgme_set_engine_info @112
+
+ gpgme_ctx_get_engine_info @113
+ gpgme_ctx_set_engine_info @114
+
+; END
+
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+#-------------------------------------------------------
+# Please remember to add new functions also to gpgme.def
+#-------------------------------------------------------
GPGME_1.1 {
global:
int
ttyname_r (int fd, char *buf, size_t buflen)
{
+#if HAVE_W32_SYSTEM
+ errno = ENOTTY; /* The best error code I have under mingw. */
+#else
char *tty;
tty = ttyname (fd);
strncpy (buf, tty, buflen);
buf[buflen - 1] = '\0';
return (strlen (tty) >= buflen) ? ERANGE : 0;
+#endif
}
--- /dev/null
+/* versioninfo.rc.in - for gpgme
+ * Copyright (C) 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
+ * modifications, as long as this notice is preserved.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+/* This file is processed by configure to create versioninfo.rc */
+
+#line __LINE__ "versioninfo.rc.in"
+
+#include <afxres.h>
+
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION @BUILD_FILEVERSION@
+ PRODUCTVERSION @BUILD_FILEVERSION@
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x21L
+#else
+ FILEFLAGS 0x20L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "Provided under the terms of the GNU Lesser General Public License.\0"
+ VALUE "CompanyName", "g10 Code GmbH\0"
+ VALUE "FileDescription", "GPGME - GnuPG Made Easy\0"
+ VALUE "FileVersion", "@VERSION@\0"
+ VALUE "InternalName", "gpgme\0"
+ VALUE "LegalCopyright", "Copyright © 2005 g10 Code GmbH\0"
+ VALUE "LegalTrademarks", "\0"
+ VALUE "OriginalFilename", "gpgme.dll\0"
+ VALUE "PrivateBuild", "\0"
+ VALUE "ProductName", "GPGME\0"
+ VALUE "ProductVersion", "@VERSION@\0"
+ VALUE "SpecialBuild", "@BUILD_TIMESTAMP@\0"
+ END
+ END
+END
+