2005-10-20 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Thu, 20 Oct 2005 13:05:04 +0000 (13:05 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 20 Oct 2005 13:05:04 +0000 (13:05 +0000)
* configure.ac: Instead checking for windres and dlltool, invoke
AC_LIBTOOL_WIN32_DLL and AC_LIBTOOL_RC.
* src/Makefile.am [HAVE_W32_SYSTEM]: Use libtool, which simplifies
the rules.

ChangeLog
configure.ac
gpgme/Makefile.am

index d7fa95d..0314602 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-10-20  Marcus Brinkmann  <marcus@g10code.de>
+
+       * configure.ac: Instead checking for windres and dlltool, invoke
+       AC_LIBTOOL_WIN32_DLL and AC_LIBTOOL_RC.
+       * src/Makefile.am [HAVE_W32_SYSTEM]: Use libtool, which simplifies
+       the rules.
+
 2005-10-01  Marcus Brinkmann  <marcus@g10code.de>
 
        Released 1.1.0.
index 9288b26..831ca31 100644 (file)
@@ -69,9 +69,6 @@ AH_VERBATIM([_REENTRANT],
 #endif])
 
 AC_PROG_CC
-AC_CHECK_TOOL(DLLTOOL, dlltool, :)
-AC_CHECK_TOOL(WINDRES, windres, :)
-
 
 AC_SUBST(LIBGPGME_LT_CURRENT)
 AC_SUBST(LIBGPGME_LT_AGE)
@@ -88,6 +85,8 @@ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
 
 # Don't default to build static libs.
 AC_DISABLE_STATIC
+AC_LIBTOOL_WIN32_DLL
+AC_LIBTOOL_RC
 AC_PROG_LIBTOOL
 
 # For now we hardcode the use of version scripts.  It would be better
index ef12d46..94b46aa 100644 (file)
@@ -89,7 +89,41 @@ libgpgme_pth_la_SOURCES = ath.h ath-pth.c
 
 AM_CPPFLAGS = $(assuan_cppflags) @GPG_ERROR_CFLAGS@
 
-libgpgme_la_LDFLAGS = $(libgpgme_version_script_cmd) -version-info \
+
+if HAVE_W32_SYSTEM
+
+LTRCCOMPILE = $(LIBTOOL) --mode=compile $(RC) \
+     `echo $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) | \
+     sed -e 's/-I/--include-dir /g;s/-D/--define /g'`
+
+%.o : %.rc
+       $(LTRCCOMPILE) -i $< -o $@
+
+gpgme_res = versioninfo.o
+gpgme_res_ldflag = -Wl,$(gpgme_res)
+no_undefined = -no-undefined
+export_symbols = -export-symbols $(srcdir)/gpgme.def
+
+install-def-file:
+       $(INSTALL) gpg-error.def $(DESTDIR)$(libdir)/gpgme.def
+
+uninstall-def-file:
+       -rm $(DESTDIR)$(libdir)/gpgme.def
+
+libgpgme_la_DEPENDENCIES = $(gpgme_res) gpgme.def
+
+else
+gpgme_res =
+gpgme_res_ldflag =
+no_undefined =
+export_symbols =
+install-def-file:
+uninstall-def-file:
+
+endif
+
+libgpgme_la_LDFLAGS = $(gpgme_res_ldflag) $(no_undefined) $(export_symbols) \
+       $(libgpgme_version_script_cmd) -version-info \
        @LIBGPGME_LT_CURRENT@:@LIBGPGME_LT_REVISION@:@LIBGPGME_LT_AGE@
 libgpgme_la_DEPENDENCIES = libgpgme-real.la $(assuan_libobjs) \
        @LTLIBOBJS@ $(srcdir)/libgpgme.vers
@@ -116,33 +150,6 @@ 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.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 $(srcdir)/gpgme.def $(w32_o_files) \
-          versioninfo.o @GPG_ERROR_LIBS@ -Wl,--out-implib,gpgme.dll.a
-
-
-.rc.o:
-       $(WINDRES) `test -f '$<' || echo '$(srcdir)/'`$< $@
-
-endif
+install-data-local: install-def-file
+  
+uninstall-local: uninstall-def-file