Changes to allow building a W32 DLL
This commit is contained in:
parent
b71096a832
commit
dbe0df44b6
@ -1,3 +1,9 @@
|
||||
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.
|
||||
|
2
NEWS
2
NEWS
@ -1,6 +1,8 @@
|
||||
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.
|
||||
|
||||
|
@ -76,7 +76,7 @@ if test "$1" = "--build-w32"; then
|
||||
./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
|
||||
|
25
configure.ac
25
configure.ac
@ -69,6 +69,8 @@ AH_VERBATIM([_REENTRANT],
|
||||
#endif])
|
||||
|
||||
AC_PROG_CC
|
||||
AC_CHECK_TOOL(DLLTOOL, dlltool, :)
|
||||
AC_CHECK_TOOL(WINDRES, windres, :)
|
||||
|
||||
|
||||
AC_SUBST(LIBGPGME_LT_CURRENT)
|
||||
@ -342,9 +344,11 @@ if test "$GPGSM" = no; then
|
||||
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
|
||||
@ -439,6 +443,22 @@ AM_CONDITIONAL(BUILD_COMPLUS, test "$component_system" = "COM+")
|
||||
# (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=""
|
||||
@ -456,7 +476,8 @@ AC_SUBST(LTLIBOBJS)
|
||||
|
||||
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
|
||||
|
||||
|
@ -1,3 +1,14 @@
|
||||
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 ..
|
||||
|
@ -19,7 +19,8 @@
|
||||
|
||||
## 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
|
||||
@ -124,3 +125,34 @@ libgpgme_pth_la_LIBADD = libgpgme-real.la $(assuan_libobjs) @LTLIBOBJS@ \
|
||||
|
||||
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
|
||||
|
@ -133,7 +133,11 @@ ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@ -143,7 +147,11 @@ ath_waitpid (pid_t pid, int *status, int options)
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@ -153,7 +161,11 @@ ath_accept (int s, struct sockaddr *addr, socklen_t *length_ptr)
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@ -163,7 +175,11 @@ ath_connect (int s, const struct sockaddr *addr, socklen_t length)
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@ -173,7 +189,11 @@ ath_sendmsg (int s, const struct msghdr *msg, int flags)
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@ -183,5 +203,9 @@ ath_recvmsg (int s, struct msghdr *msg, int flags)
|
||||
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
|
||||
}
|
||||
|
@ -63,7 +63,11 @@ stream_seek (gpgme_data_t dh, off_t offset, int whence)
|
||||
if (err)
|
||||
return -1;
|
||||
|
||||
#ifdef HAVE_FSEEKO
|
||||
return ftello (dh->data.stream);
|
||||
#else
|
||||
return ftell (dh->data.stream);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
148
gpgme/gpgme.def
Normal file
148
gpgme/gpgme.def
Normal file
@ -0,0 +1,148 @@
|
||||
; 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
|
||||
|
@ -17,6 +17,9 @@
|
||||
# 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:
|
||||
|
@ -32,6 +32,9 @@
|
||||
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);
|
||||
@ -41,4 +44,5 @@ ttyname_r (int fd, char *buf, size_t buflen)
|
||||
strncpy (buf, tty, buflen);
|
||||
buf[buflen - 1] = '\0';
|
||||
return (strlen (tty) >= buflen) ? ERANGE : 0;
|
||||
#endif
|
||||
}
|
||||
|
52
gpgme/versioninfo.rc.in
Normal file
52
gpgme/versioninfo.rc.in
Normal file
@ -0,0 +1,52 @@
|
||||
/* 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
|
||||
|
Loading…
Reference in New Issue
Block a user