From 5f981d30e2f186ab6b7fc925832b6eb1ae658308 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Sun, 24 Sep 2017 10:28:05 +0200 Subject: gpg4libre: build libassuan natively on windows Change-Id: Id374ebc5ed70a1b4313dc74461524ac2b864b114 Reviewed-on: https://gerrit.libreoffice.org/42745 Reviewed-by: Siegmund Gorr Reviewed-by: Thorsten Behrens Tested-by: Thorsten Behrens --- configure.ac | 8 ++- external/libassuan/ExternalProject_libassuan.mk | 16 +++++ external/libassuan/UnpackedTarball_libassuan.mk | 1 + external/libassuan/w32-build-fixes.patch.1 | 77 +++++++++++++++++++++++++ 4 files changed, 101 insertions(+), 1 deletion(-) create mode 100755 external/libassuan/w32-build-fixes.patch.1 diff --git a/configure.ac b/configure.ac index fe5731470d2e..dacb5ee98ffe 100644 --- a/configure.ac +++ b/configure.ac @@ -10160,7 +10160,13 @@ if test "$_os" = "Linux" -o "$_os" = "Darwin"; then LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan" fi else - BUILD_TYPE="$BUILD_TYPE LIBGPGERROR" + # TODO(davido): Windows build must be protected with a configure option + # unless CI doesn't support libtool with windres with gcc preprocessor + BUILD_TYPE="$BUILD_TYPE LIBASSUAN LIBGPGERROR" + GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src" + GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error" + LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src" + LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan" fi AC_SUBST(SYSTEM_GPGMEPP) AC_SUBST(GPG_ERROR_CFLAGS) diff --git a/external/libassuan/ExternalProject_libassuan.mk b/external/libassuan/ExternalProject_libassuan.mk index bcfc08a82cca..e796f16bf017 100644 --- a/external/libassuan/ExternalProject_libassuan.mk +++ b/external/libassuan/ExternalProject_libassuan.mk @@ -19,6 +19,21 @@ $(eval $(call gb_ExternalProject_use_externals,libassuan,\ libgpg-error \ )) +ifeq ($(COM),MSC) +$(call gb_ExternalProject_get_state_target,libassuan,build): + $(call gb_ExternalProject_run,build,\ + autoreconf \ + && ./configure \ + --enable-static \ + --disable-shared \ + CXXFLAGS="$(CXXFLAGS)" \ + GPG_ERROR_CFLAGS="$(GPG_ERROR_CFLAGS)" \ + GPG_ERROR_LIBS="$(GPG_ERROR_LIBS)" \ + --host=$(if $(filter INTEL,$(CPUNAME)),i686-mingw32,x86_64-w64-mingw32) \ + && $(MAKE) \ + ) + +else $(call gb_ExternalProject_get_state_target,libassuan,build): $(call gb_ExternalProject_run,build,\ autoreconf \ @@ -32,4 +47,5 @@ $(call gb_ExternalProject_get_state_target,libassuan,build): && $(MAKE) \ ) +endif # vim: set noet sw=4 ts=4: diff --git a/external/libassuan/UnpackedTarball_libassuan.mk b/external/libassuan/UnpackedTarball_libassuan.mk index 924d610bf9c9..f23608eb6a6c 100644 --- a/external/libassuan/UnpackedTarball_libassuan.mk +++ b/external/libassuan/UnpackedTarball_libassuan.mk @@ -16,6 +16,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libassuan,0)) $(eval $(call gb_UnpackedTarball_add_patches,libassuan, \ external/libassuan/find-libgpg-error.patch \ external/libassuan/fix-autoconf-macros.patch \ + $(if $(filter MSC,$(COM)),external/libassuan/w32-build-fixes.patch.1) \ )) # vim: set noet sw=4 ts=4: diff --git a/external/libassuan/w32-build-fixes.patch.1 b/external/libassuan/w32-build-fixes.patch.1 new file mode 100755 index 000000000000..c9250c4e5573 --- /dev/null +++ b/external/libassuan/w32-build-fixes.patch.1 @@ -0,0 +1,77 @@ +--- libassuan.orig/src/Makefile.in 2017-09-15 08:16:41.601057500 +0200 ++++ libassuan/src/Makefile.in 2017-09-24 13:01:24.950711300 +0200 +@@ -424,7 +424,7 @@ + nodist_include_HEADERS = assuan.h + @HAVE_LD_VERSION_SCRIPT_FALSE@libassuan_version_script_cmd = + @HAVE_LD_VERSION_SCRIPT_TRUE@libassuan_version_script_cmd = -Wl,--version-script=$(srcdir)/libassuan.vers +-CLEANFILES = mkheader assuan.h ++CLEANFILES = mkheader$(EXEEXT) assuan.h + BUILT_SOURCES = assuan.h + parts_of_assuan_h = \ + posix-includes.inc.h w32-includes.inc.h \ +@@ -1183,10 +1183,10 @@ + @HAVE_W32CE_SYSTEM_TRUE@ mv -f $(DESTDIR)$(bindir)/libgpgcedev-0.dll \ + @HAVE_W32CE_SYSTEM_TRUE@ $(DESTDIR)$(bindir)/gpgcedev.dll + +-mkheader: mkheader.c Makefile ++mkheader$(EXEEXT): mkheader.c Makefile + $(CC_FOR_BUILD) -I. -I$(srcdir) -o $@ $(srcdir)/mkheader.c + +-assuan.h: assuan.h.in mkheader $(parts_of_assuan_h) ++assuan.h: assuan.h.in mkheader$(EXEEXT) $(parts_of_assuan_h) + ./mkheader $(host_os) $(srcdir)/assuan.h.in \ + @VERSION@ @VERSION_NUMBER@ >$@ + +--- libassuan.orig/src/mkheader.c 2013-03-15 20:26:09.000000000 +0100 ++++ libassuan/src/mkheader.c 2017-09-24 14:17:33.584583300 +0200 +@@ -99,7 +99,7 @@ + "# include \n" + "#endif\n", stdout); + else +- fputs ("#include \n", stdout); ++ fputs ("#include \n", stdout); + } + else if (!strcmp (tag, "include:types")) + { +diff -ru libassuan.orig/src/Makefile.am libassuan/src/Makefile.am +--- libassuan.orig/src/Makefile.am 2017-09-24 14:20:05.906065400 +0200 ++++ libassuan/src/Makefile.am 2017-09-24 14:40:59.038850200 +0200 +@@ -142,11 +142,11 @@ + $(DESTDIR)$(bindir)/gpgcedev.dll + endif + +-mkheader: mkheader.c Makefile ++mkheader$(EXEEXT): mkheader.c Makefile + $(CC_FOR_BUILD) -I. -I$(srcdir) -o $@ $(srcdir)/mkheader.c + +-assuan.h: assuan.h.in mkheader $(parts_of_assuan_h) +- ./mkheader $(host_os) $(srcdir)/assuan.h.in \ ++assuan.h: assuan.h.in mkheader$(EXEEXT) $(parts_of_assuan_h) ++ ./mkheader$(EXEEXT) $(host_os) $(srcdir)/assuan.h.in \ + @VERSION@ @VERSION_NUMBER@ >$@ + + +diff -ru libassuan.orig/src/assuan-handler.c libassuan/src/assuan-handler.c +--- libassuan.orig/src/assuan-handler.c 2016-06-25 16:27:49.000000000 +0200 ++++ libassuan/src/assuan-handler.c 2017-09-24 15:32:51.200956200 +0200 +@@ -395,7 +395,7 @@ + + { "INPUT", std_handler_input, std_help_input, 0 }, + { "OUTPUT", std_handler_output, std_help_output, 0 }, +- { } }; ++}; + + + /** +diff -ru libassuan.orig/Makefile.am libassuan/Makefile.am +--- libassuan.orig/Makefile.am 2016-07-14 10:09:22.000000000 +0200 ++++ libassuan/Makefile.am 2017-09-25 21:20:19.928317500 +0200 +@@ -28,7 +28,7 @@ + tests/ChangeLog-2011 contrib/ChangeLog-2011 \ + build-aux/git-log-footer build-aux/git-log-fix + +-SUBDIRS = m4 src doc tests ++SUBDIRS = m4 src doc + + + dist-hook: gen-ChangeLog -- cgit