diff options
Diffstat (limited to 'build-aux/speedo.mk')
-rw-r--r-- | build-aux/speedo.mk | 582 |
1 files changed, 515 insertions, 67 deletions
diff --git a/build-aux/speedo.mk b/build-aux/speedo.mk index 48702560f..34d5f98dc 100644 --- a/build-aux/speedo.mk +++ b/build-aux/speedo.mk @@ -19,7 +19,7 @@ # speedo does only work with GNU make. The build system is similar to # that of gpg4win. The following commands are supported: # -# make -f speedo.mk all +# make -f speedo.mk all pkg2rep=/dir/with/tarballs # or # make -f speedo.mk # @@ -42,47 +42,113 @@ # Lists packages and versions. # +# We need to know our own name. +SPEEDO_MK := $(realpath $(lastword $(MAKEFILE_LIST))) + # Set this to "git" or "release". -WHAT=release +WHAT=git # Set target to "native" or "w32" -TARGETOS=native +TARGETOS=w32 + +# Set to the location of the directory with traballs of +# external packages. +TARBALLS=$(shell pwd)/../tarballs # Number of parallel make jobs MAKE_J=3 +# =====BEGIN LIST OF PACKAGES===== # The packages that should be built. The order is also the build order. -speedo_spkgs = libgpg-error npth libgcrypt libassuan libksba gnupg gpgme +# Fixme: Do we need to build pkg-config for cross-building? + +speedo_spkgs = \ + libgpg-error npth libgcrypt + +ifeq ($(TARGETOS),w32) +speedo_spkgs += \ + zlib libiconv gettext +endif + +speedo_spkgs += \ + libassuan libksba gnupg -ifneq ($(TARGETOS),w32) -speedo_spkgs += gpa +ifeq ($(TARGETOS),w32) +speedo_spkgs += \ + libffi glib pkg-config endif +speedo_spkgs += \ + gpgme + ifeq ($(TARGETOS),w32) -speedo_spkgs += gpgex +speedo_spkgs += \ + libpng \ + gdk-pixbuf atk pixman cairo pango gtk+ endif +speedo_spkgs += \ + pinentry gpa + +ifeq ($(TARGETOS),w32) +speedo_spkgs += \ + gpgex +endif + +# =====END LIST OF PACKAGES===== + + +# Packages which are additionally build for 64 bit Windows +speedo_w64_spkgs = \ + libgpg-error libiconv gettext libassuan gpgex + +# Packages which use the gnupg autogen.sh build style +speedo_gnupg_style = \ + libgpg-error npth libgcrypt \ + libassuan libksba gnupg gpgme \ + pinentry gpa gpgex + +# Packages which use only make and no build directory +speedo_make_only_style = \ + zlib # Version numbers of the released packages # Fixme: Take the version numbers from gnupg-doc/web/swdb.mac -libgpg_error_ver = 1.12 +libgpg_error_ver = 1.13 npth_ver = 0.91 -libgcrypt_ver = 1.6.0 +libgcrypt_ver = 1.6.1 libassuan_ver = 2.1.1 libksba_ver = 1.3.0 -gnupg_ver = 2.0.22 gpgme_ver = 1.5.0 +pinentry_ver = 0.8.4 gpa_ver = 0.9.5 gpgex_ver = 1.0.0 + +# Version number for external packages +pkg_config_ver = 0.23 +zlib_ver = 1.2.8 +libiconv_ver = 1.14 +gettext_ver = 0.18.2.1 +libffi_ver = 3.0.13 +glib_ver = 2.34.3 +libpng_ver = 1.4.12 +gdk_pixbuf_ver = 2.26.5 +atk_ver = 1.32.0 +pango_ver = 1.29.4 +pixman_ver = 0.32.4 +cairo_ver = 1.12.16 +gtk__ver = 2.24.17 + + # The GIT repository. Using a local repo is much faster. #gitrep = git://git.gnupg.org gitrep = ${HOME}/s -# The tarball directory +# The tarball directories pkgrep = ftp://ftp.gnupg.org/gcrypt - +pkg2rep = $(TARBALLS) # For each package, the following variables can be defined: # @@ -117,10 +183,10 @@ ifeq ($(WHAT),git) speedo_pkg_libgcrypt_gitref = LIBGCRYPT-1-6-BRANCH speedo_pkg_libksba_git = $(gitrep)/libksba speedo_pkg_libksba_gitref = master - speedo_pkg_gnupg_git = $(gitrep)/gnupg - speedo_pkg_gnupg_gitref = master speedo_pkg_gpgme_git = $(gitrep)/gpgme speedo_pkg_gpgme_gitref = master + speedo_pkg_pinentry_git = $(gitrep)/pinentry + speedo_pkg_pinentry_gitref = master speedo_pkg_gpa_git = $(gitrep)/gpa speedo_pkg_gpa_gitref = master speedo_pkg_gpgex_git = $(gitrep)/gpgex @@ -136,57 +202,182 @@ else $(pkgrep)/libgcrypt/libgcrypt-$(libgcrypt_ver).tar.bz2 speedo_pkg_libksba_tar = \ $(pkgrep)/libksba/libksba-$(libksba_ver).tar.bz2 - speedo_pkg_gnupg_tar = \ - $(pkgrep)/gnupg/gnupg-$(gnupg_ver).tar.bz2 speedo_pkg_gpgme_tar = \ $(pkgrep)/gpgme/gpgme-$(gpgme_ver).tar.bz2 + speedo_pkg_pinentry_tar = \ + $(pkgrep)/pinentry/pinentry-$(pinentry_ver).tar.bz2 speedo_pkg_gpa_tar = \ $(pkgrep)/gpa/gpa-$(gpa_ver).tar.bz2 - speedo_pkg_gpex_tar = \ + speedo_pkg_gpgex_tar = \ $(pkgrep)/gpex/gpgex-$(gpa_ver).tar.bz2 endif +speedo_pkg_pkg_config_tar = $(pkg2rep)/pkg-config-$(pkg_config_ver).tar.gz +speedo_pkg_zlib_tar = $(pkg2rep)/zlib-$(zlib_ver).tar.gz +speedo_pkg_libiconv_tar = $(pkg2rep)/libiconv-$(libiconv_ver).tar.gz +speedo_pkg_gettext_tar = $(pkg2rep)/gettext-$(gettext_ver).tar.gz +speedo_pkg_libffi_tar = $(pkg2rep)/libffi-$(libffi_ver).tar.gz +speedo_pkg_glib_tar = $(pkg2rep)/glib-$(glib_ver).tar.xz +speedo_pkg_libpng_tar = $(pkg2rep)/libpng-$(libpng_ver).tar.bz2 +speedo_pkg_gdk_pixbuf_tar = $(pkg2rep)/gdk-pixbuf-$(gdk_pixbuf_ver).tar.xz +speedo_pkg_atk_tar = $(pkg2rep)/atk-$(atk_ver).tar.bz2 +speedo_pkg_pango_tar = $(pkg2rep)/pango-$(pango_ver).tar.bz2 +speedo_pkg_pixman_tar = $(pkg2rep)/pixman-$(pixman_ver).tar.gz +speedo_pkg_cairo_tar = $(pkg2rep)/cairo-$(cairo_ver).tar.xz +speedo_pkg_gtk__tar = $(pkg2rep)/gtk+-$(gtk__ver).tar.xz + + +# +# Package build options +# + speedo_pkg_libgpg_error_configure = --enable-static +speedo_pkg_w64_libgpg_error_configure = --enable-static speedo_pkg_libassuan_configure = --enable-static +speedo_pkg_w64_libassuan_configure = --enable-static speedo_pkg_libgcrypt_configure = --disable-static speedo_pkg_libksba_configure = --disable-static +speedo_pkg_gnupg_configure = --enable-gpg2-is-gpg --disable-g13 +speedo_pkg_gnupg_extracflags = -g + +define speedo_pkg_gnupg_post_install +(set -e; \ + sed -n 's/.*PACKAGE_VERSION "\(.*\)"/\1/p' config.h >$(idir)/INST_VERSION; \ + sed -n 's/.*W32INFO_VI_PRODUCTVERSION \(.*\)/\1/p' common/w32info-rc.h \ + |sed 's/,/./g' >$(idir)/INST_PROD_VERSION ) +endef + + +# The LDFLAGS is needed for -lintl for glib. +speedo_pkg_gpgme_configure = \ + --enable-static --enable-w32-glib --disable-w32-qt \ + --with-gpg-error-prefix=$(idir) \ + LDFLAGS=-L$(idir)/lib + +speedo_pkg_pinentry_configure = \ + --disable-pinentry-qt --disable-pinentry-qt4 --disable-pinentry-gtk \ + --enable-pinentry-gtk2 \ + --with-glib-prefix=$(idir) --with-gtk-prefix=$(idir) \ + CPPFLAGS=-I$(idir)/include \ + LDFLAGS=-L$(idir)/lib \ + CXXFLAGS=-static-libstdc++ + +speedo_pkg_gpa_configure = \ + --with-libiconv-prefix=$(idir) --with-libintl-prefix=$(idir) \ + --with-gpgme-prefix=$(idir) --with-zlib=$(idir) \ + --with-libassuan-prefix=$(idir) --with-gpg-error-prefix=$(idir) + +speedo_pkg_gpgex_configure = \ + --with-gpg-error-prefix=$(idir) \ + --with-libassuan-prefix=$(idir) + +speedo_pkg_w64_gpgex_configure = \ + --with-gpg-error-prefix=$(idir6) \ + --with-libassuan-prefix=$(idir6) + + +# +# External packages +# + +speedo_pkg_zlib_make_args = \ + -fwin32/Makefile.gcc PREFIX=$(host)- IMPLIB=libz.dll.a + +speedo_pkg_zlib_make_args_inst = \ + -fwin32/Makefile.gcc \ + BINARY_PATH=$(idir)/bin INCLUDE_PATH=$(idir)/include \ + LIBRARY_PATH=$(idir)/lib SHARED_MODE=1 IMPLIB=libz.dll.a + +# Zlib needs some special magic to generate a libtool file. +# We also install the pc file here. +define speedo_pkg_zlib_post_install +(set -e; mkdir $(idir)/lib/pkgconfig || true; \ +cp $(auxsrc)/zlib.pc $(idir)/lib/pkgconfig/; \ +cd $(idir); \ +echo "# Generated by libtool" > lib/libz.la \ +echo "dlname='../bin/zlib1.dll'" >> lib/libz.la; \ +echo "library_names='libz.dll.a'" >> lib/libz.la; \ +echo "old_library='libz.a'" >> lib/libz.la; \ +echo "dependency_libs=''" >> lib/libz.la; \ +echo "current=1" >> lib/libz.la; \ +echo "age=2" >> lib/libz.la; \ +echo "revision=5" >> lib/libz.la; \ +echo "installed=yes" >> lib/libz.la; \ +echo "shouldnotlink=no" >> lib/libz.la; \ +echo "dlopen=''" >> lib/libz.la; \ +echo "dlpreopen=''" >> lib/libz.la; \ +echo "libdir=\"$(idir)/lib\"" >> lib/libz.la) +endef + +speedo_pkg_w64_libiconv_configure = \ + --enable-shared=no --enable-static=yes + +speedo_pkg_gettext_configure = \ + --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \ + CPPFLAGS=-I$(idir)/include LDFLAGS=-L$(idir)/lib +speedo_pkg_w64_gettext_configure = \ + --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \ + CPPFLAGS=-I$(idir6)/include LDFLAGS=-L$(idir6)/lib +speedo_pkg_gettext_extracflags = -O2 +# We only need gettext-runtime and there is sadly no top level +# configure option for this +speedo_pkg_gettext_make_dir = gettext-runtime + + +speedo_pkg_glib_configure = \ + --disable-modular-tests \ + --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \ + CPPFLAGS=-I$(idir)/include \ + LDFLAGS=-L$(idir)/lib \ + CCC=$(host)-g++ \ + LIBFFI_CFLAGS=-I$(idir)/lib/libffi-$(libffi_ver)/include \ + LIBFFI_LIBS=\"-L$(idir)/lib -lffi\" +speedo_pkg_glib_extracflags = -march=i486 + + +speedo_pkg_libpng_configure = \ + CPPFLAGS=\"-I$(idir)/include -DPNG_BUILD_DLL\" \ + LDFLAGS=\"-L$(idir)/lib\" LIBPNG_DEFINES=\"-DPNG_BUILD_DLL\" + +speedo_pkg_pixman_configure = \ + CPPFLAGS=-I$(idir)/include \ + LDFLAGS=-L$(idir)/lib + +speedo_pkg_cairo_configure = \ + --disable-qt --disable-ft --disable-fc \ + --enable-win32 --enable-win32-font \ + CPPFLAGS=-I$(idir)/include \ + LDFLAGS=-L$(idir)/lib + +speedo_pkg_pango_configure = \ + --disable-gtk-doc \ + CPPFLAGS=-I$(idir)/include \ + LDFLAGS=-L$(idir)/lib + +speedo_pkg_gtk__configure = \ + --disable-cups \ + CPPFLAGS=-I$(idir)/include \ + LDFLAGS=-L$(idir)/lib + # --------- all: all-speedo - @echo export PATH=\"$(idir)/bin\":\$$PATH - @echo export LD_LIBRARY_PATH=\"$(idir)/lib\":\$$LD_LIBRARY_PATH - @echo hash -r report: report-speedo clean: clean-speedo - -# Fixme: The dist target does not work anymore. +ifeq ($(TARGETOS),w32) STRIP = i686-w64-mingw32-strip - -dist: all - set -e; date=$$(date -u +%Y%m%d); pkgname=gpg-w32-dev-$$date; \ - rm -rf $$pkgname $${pkgname}.zip || true; \ - cp -rL playground/install $${pkgname}; \ - rm -r $${pkgname}/share/info || true; \ - mkdir -p $${pkgname}/share/doc/gpg-w32-dev ;\ - echo "Included versions:" > $${pkgname}/README.txt ; \ - echo "" >> $${pkgname}/README.txt ; \ - $(MAKE) --no-print-directory report \ - | awk '{print $$2}' >> $${pkgname}/README.txt ; \ - cp GNUmakefile speedo.mk $${pkgname}/README.txt \ - $${pkgname}/share/doc/gpg-w32-dev/ ; \ - $(STRIP) $${pkgname}/bin/*.dll ; \ - zip -r9 $${pkgname}.zip $${pkgname} >/dev/null ; \ - rm -rf $$pkgname; \ - echo "$$pkgname.zip ready for distribution" >&2 - +else +STRIP = strip +endif +W32CC = i686-w64-mingw32-gcc -include config.mk @@ -195,21 +386,45 @@ dist: all # MKDIR=mkdir - +MAKENSIS=makensis +BUILD_ISODATE=$(shell date -u +%Y-%m-%d) # These paths must be absolute, as we switch directories pretty often. root := $(shell pwd)/play -stampdir := $(root)/stamps sdir := $(root)/src bdir := $(root)/build +bdir6:= $(root)/build-w64 idir := $(root)/inst +idir6:= $(root)/inst-w64 +stampdir := $(root)/stamps +topsrc := $(shell cd $(dir $(SPEEDO_MK)).. && pwd) +auxsrc := $(topsrc)/build-aux/speedo +patdir := $(topsrc)/build-aux/speedo/patches +w32src := $(topsrc)/build-aux/speedo/w32 +# The next two macros will work only after gnupg has been build. +INST_VERSION=$(shell head -1 $(idir)/INST_VERSION) +INST_PROD_VERSION=$(shell head -1 $(idir)/INST_PROD_VERSION) + +# List with packages speedo_build_list = $(speedo_spkgs) +speedo_w64_build_list = $(speedo_w64_spkgs) +# Determine build and host system +build := $(shell $(topsrc)/autogen.sh --silent --print-build) ifeq ($(TARGETOS),w32) - speedo_autogen_buildopt="--build-w32" + speedo_autogen_buildopt := --build-w32 + speedo_autogen_buildopt6 := --build-w64 + host := $(shell $(topsrc)/autogen.sh --silent --print-host --build-w32) + host6:= $(shell $(topsrc)/autogen.sh --silent --print-host --build-w64) + speedo_host_build_option := --host=$(host) --build=$(build) + speedo_host_build_option6 := --host=$(host6) --build=$(build) + speedo_w32_cflags := -mms-bitfields else - speedo_autogen_buildopt= + speedo_autogen_buildopt := + host := + speedo_host_build_option := + speedo_w32_cflags := endif ifeq ($(MAKE_J),) @@ -219,14 +434,20 @@ else endif + + # The playground area is our scratch area, where we unpack, build and # install the packages. $(stampdir)/stamp-directories: - $(MKDIR) $(root) - $(MKDIR) $(stampdir) - $(MKDIR) $(sdir) - $(MKDIR) $(bdir) - $(MKDIR) $(idir) + $(MKDIR) $(root) || true + $(MKDIR) $(stampdir) || true + $(MKDIR) $(sdir) || true + $(MKDIR) $(bdir) || true + $(MKDIR) $(idir) || true +ifeq ($(TARGETOS),w32) + $(MKDIR) $(bdir6) || true + $(MKDIR) $(idir6) || true +endif touch $(stampdir)/stamp-directories # Frob the name $1 by converting all '-' and '+' characters to '_'. @@ -246,17 +467,60 @@ define SETVARS gitref="$(call GETVAR,speedo_pkg_$(1)_gitref)"; \ tar="$(call GETVAR,speedo_pkg_$(1)_tar)"; \ pkgsdir="$(sdir)/$(1)"; \ + if [ "$(1)" = "gnupg" ]; then \ + git=''; \ + gitref=''; \ + tar=''; \ + pkgsdir="$(topsrc)"; \ + fi; \ pkgbdir="$(bdir)/$(1)"; \ pkgcfg="$(call GETVAR,speedo_pkg_$(1)_configure)"; \ + pkgextracflags="$(call GETVAR,speedo_pkg_$(1)_extracflags)"; \ + pkgmkdir="$(call GETVAR,speedo_pkg_$(1)_make_dir)"; \ pkgmkargs="$(call GETVAR,speedo_pkg_$(1)_make_args)"; \ pkgmkargs_inst="$(call GETVAR,speedo_pkg_$(1)_make_args_inst)"; \ + export PKG_CONFIG="/usr/bin/pkg-config"; \ + export PKG_CONFIG_PATH="$(idir)/lib/pkgconfig"; \ + export PKG_CONFIG_LIBDIR=""; \ + export SYSROOT="$(idir)"; \ export PATH="$(idir)/bin:$${PATH}"; \ export LD_LIBRARY_PATH="$(idir)/lib:$${LD_LIBRARY_PATH}" endef +define SETVARS_W64 + pkg="$(1)"; \ + git="$(call GETVAR,speedo_pkg_$(1)_git)"; \ + gitref="$(call GETVAR,speedo_pkg_$(1)_gitref)"; \ + tar="$(call GETVAR,speedo_pkg_$(1)_tar)"; \ + pkgsdir="$(sdir)/$(1)"; \ + if [ "$(1)" = "gnupg" ]; then \ + git=''; \ + gitref=''; \ + tar=''; \ + pkgsdir="$(topsrc)"; \ + fi; \ + pkgbdir="$(bdir6)/$(1)"; \ + pkgcfg="$(call GETVAR,speedo_pkg_w64_$(1)_configure)"; \ + pkgextracflags="$(call GETVAR,speedo_pkg_$(1)_extracflags)"; \ + pkgmkdir="$(call GETVAR,speedo_pkg_$(1)_make_dir)"; \ + pkgmkargs="$(call GETVAR,speedo_pkg_$(1)_make_args)"; \ + pkgmkargs_inst="$(call GETVAR,speedo_pkg_$(1)_make_args_inst)"; \ + export PKG_CONFIG="/usr/bin/pkg-config"; \ + export PKG_CONFIG_PATH="$(idir6)/lib/pkgconfig"; \ + export PKG_CONFIG_LIBDIR=""; \ + export SYSROOT="$(idir6)"; \ + export PATH="$(idir6)/bin:$${PATH}"; \ + export LD_LIBRARY_PATH="$(idir6)/lib:$${LD_LIBRARY_PATH}" +endef + # Template for source packages. - +# +# Note that the gnupg package is special: The package source dir is +# the same as the topsrc dir and thus we need to detect the gnupg +# package and cd to that directory. We also test that no in-source build +# has been done. autogen.sh is not run for gnupg. +# define SPKG_template $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories @@ -265,7 +529,15 @@ $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories @echo "speedo: */" @(set -e; cd $(sdir); \ $(call SETVARS,$(1)); \ - if [ -n "$$$${git}" ]; then \ + if [ "$(1)" = "gnupg" ]; then \ + cd $$$${pkgsdir}; \ + if [ -f config.log ]; then \ + echo "GnuPG has already been build in-source" >&2 ;\ + echo "Please run \"make distclean\" and retry" >&2 ;\ + exit 1 ; \ + fi; \ + echo "speedo: unpacking gnupg not needed"; \ + elif [ -n "$$$${git}" ]; then \ echo "speedo: unpacking $(1) from $$$${git}:$$$${gitref}"; \ git clone -b "$$$${gitref}" "$$$${git}" "$$$${pkg}"; \ cd "$$$${pkg}"; \ @@ -275,6 +547,7 @@ $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories case "$$$${tar}" in \ *.gz) opt=z ;; \ *.bz2) opt=j ;; \ + *.xz) opt=J ;; \ *) opt= ;; \ esac; \ case "$$$${tar}" in \ @@ -285,6 +558,13 @@ $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories base=`echo "$$$${tar}" | sed -e 's,^.*/,,' \ | sed -e 's,\.tar.*$$$$,,'`; \ mv $$$${base} $(1); \ + patch="$(patdir)/$(1)-$$$${base#$(1)-}.patch";\ + if [ -x "$$$${patch}" ]; then \ + echo "speedo: applying patch $$$${patch}"; \ + cd $(1); "$$$${patch}"; \ + elif [ -f "$$$${patch}" ]; then \ + echo "speedo: warning: $$$${patch} is not executable"; \ + fi; \ else \ echo "speedo: unpacking $(1) from UNKNOWN"; \ fi) @@ -292,43 +572,152 @@ $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(stampdir)/stamp-$(1)-01-configure: $(stampdir)/stamp-$(1)-00-unpack @echo "speedo: configuring $(1)" +ifneq ($(findstring $(1),$(speedo_make_only_style)),) + @echo "speedo: configure run not required" +else ifneq ($(findstring $(1),$(speedo_gnupg_style)),) @($(call SETVARS,$(1)); \ mkdir "$$$${pkgbdir}"; \ - cd "$$$${pkgbdir}"; \ - if [ -n "$(speedo_autogen_buildopt)" ]; then \ - eval AUTOGEN_SH_SILENT=1 w32root="$(idir)" \ - "$$$${pkgsdir}/autogen.sh" \ - $(speedo_autogen_buildopt) \ - $$$${pkgcfg}; \ - else \ + cd "$$$${pkgbdir}"; \ + if [ -n "$(speedo_autogen_buildopt)" ]; then \ + eval AUTOGEN_SH_SILENT=1 w32root="$(idir)" \ + "$$$${pkgsdir}/autogen.sh" \ + $(speedo_autogen_buildopt) \ + $$$${pkgcfg} \ + CFLAGS=\"$(speedo_w32_cflags) $$$${pkgextracflags}\";\ + else \ eval "$$$${pkgsdir}/configure" \ - --silent \ - --enable-maintainer-mode \ - --prefix="$(idir)" \ - $$$${pkgcfg}; \ + --silent \ + --enable-maintainer-mode \ + --prefix="$(idir)" \ + $$$${pkgcfg} \ + CFLAGS=\"$(speedo_w32_cflags) $$$${pkgextracflags}\";\ fi) +else + @($(call SETVARS,$(1)); \ + mkdir "$$$${pkgbdir}"; \ + cd "$$$${pkgbdir}"; \ + eval "$$$${pkgsdir}/configure" \ + --silent $(speedo_host_build_option) \ + --prefix="$(idir)" \ + $$$${pkgcfg} \ + CFLAGS=\"$(speedo_w32_cflags) $$$${pkgextracflags}\";\ + ) +endif @touch $(stampdir)/stamp-$(1)-01-configure +# Note that unpack has no 64 bit version becuase it is just the source. +# Fixme: We should use templates to create the standard and w64 +# version of these rules. +$(stampdir)/stamp-w64-$(1)-01-configure: $(stampdir)/stamp-$(1)-00-unpack + @echo "speedo: configuring $(1) (64 bit)" +ifneq ($(findstring $(1),$(speedo_make_only_style)),) + @echo "speedo: configure run not required" +else ifneq ($(findstring $(1),$(speedo_gnupg_style)),) + @($(call SETVARS_W64,$(1)); \ + mkdir "$$$${pkgbdir}"; \ + cd "$$$${pkgbdir}"; \ + if [ -n "$(speedo_autogen_buildopt)" ]; then \ + eval AUTOGEN_SH_SILENT=1 w64root="$(idir6)" \ + "$$$${pkgsdir}/autogen.sh" \ + $(speedo_autogen_buildopt6) \ + $$$${pkgcfg} \ + CFLAGS=\"$(speedo_w32_cflags) $$$${pkgextracflags}\";\ + else \ + eval "$$$${pkgsdir}/configure" \ + --silent \ + --enable-maintainer-mode \ + --prefix="$(idir6)" \ + $$$${pkgcfg} \ + CFLAGS=\"$(speedo_w32_cflags) $$$${pkgextracflags}\";\ + fi) +else + @($(call SETVARS_W64,$(1)); \ + mkdir "$$$${pkgbdir}"; \ + cd "$$$${pkgbdir}"; \ + eval "$$$${pkgsdir}/configure" \ + --silent $(speedo_host_build_option6) \ + --prefix="$(idir6)" \ + $$$${pkgcfg} \ + CFLAGS=\"$(speedo_w32_cflags) $$$${pkgextracflags}\";\ + ) +endif + @touch $(stampdir)/stamp-w64-$(1)-01-configure + + $(stampdir)/stamp-$(1)-02-make: $(stampdir)/stamp-$(1)-01-configure @echo "speedo: making $(1)" +ifneq ($(findstring $(1),$(speedo_make_only_style)),) @($(call SETVARS,$(1)); \ - cd "$$$${pkgbdir}"; \ + cd "$$$${pkgsdir}"; \ + test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ $(MAKE) --no-print-directory $(speedo_makeopt) $$$${pkgmkargs} V=0) +else + @($(call SETVARS,$(1)); \ + cd "$$$${pkgbdir}"; \ + test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ + $(MAKE) --no-print-directory $(speedo_makeopt) $$$${pkgmkargs} V=1) +endif @touch $(stampdir)/stamp-$(1)-02-make +$(stampdir)/stamp-w64-$(1)-02-make: $(stampdir)/stamp-w64-$(1)-01-configure + @echo "speedo: making $(1) (64 bit)" +ifneq ($(findstring $(1),$(speedo_make_only_style)),) + @($(call SETVARS_W64,$(1)); \ + cd "$$$${pkgsdir}"; \ + test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ + $(MAKE) --no-print-directory $(speedo_makeopt) $$$${pkgmkargs} V=0) +else + @($(call SETVARS_W64,$(1)); \ + cd "$$$${pkgbdir}"; \ + test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ + $(MAKE) --no-print-directory $(speedo_makeopt) $$$${pkgmkargs} V=1) +endif + @touch $(stampdir)/stamp-w64-$(1)-02-make + # Note that post_install must come last because it may be empty and # "; ;" is a syntax error. $(stampdir)/stamp-$(1)-03-install: $(stampdir)/stamp-$(1)-02-make @echo "speedo: installing $(1)" +ifneq ($(findstring $(1),$(speedo_make_only_style)),) @($(call SETVARS,$(1)); \ - cd "$$$${pkgbdir}"; \ + cd "$$$${pkgsdir}"; \ + test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ + $(MAKE) --no-print-directory $$$${pkgmkargs_inst} install V=1;\ + $(call speedo_pkg_$(call FROB_macro,$(1))_post_install)) +else + @($(call SETVARS,$(1)); \ + cd "$$$${pkgbdir}"; \ + test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ + $(MAKE) --no-print-directory $$$${pkgmkargs_inst} install-strip V=0;\ + $(call speedo_pkg_$(call FROB_macro,$(1))_post_install)) +endif + touch $(stampdir)/stamp-$(1)-03-install + +$(stampdir)/stamp-w64-$(1)-03-install: $(stampdir)/stamp-w64-$(1)-02-make + @echo "speedo: installing $(1) (64 bit)" +ifneq ($(findstring $(1),$(speedo_make_only_style)),) + @($(call SETVARS_W64,$(1)); \ + cd "$$$${pkgsdir}"; \ + test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ + $(MAKE) --no-print-directory $$$${pkgmkargs_inst} install V=1;\ + $(call speedo_pkg_$(call FROB_macro,$(1))_post_install)) +else + @($(call SETVARS_W64,$(1)); \ + cd "$$$${pkgbdir}"; \ + test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ $(MAKE) --no-print-directory $$$${pkgmkargs_inst} install-strip V=0;\ - $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install)) - @touch $(stampdir)/stamp-$(1)-03-install + $(call speedo_pkg_$(call FROB_macro,$(1))_post_install)) +endif + touch $(stampdir)/stamp-w64-$(1)-03-install $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-03-install + @echo "speedo: $(1) done" @touch $(stampdir)/stamp-final-$(1) +$(stampdir)/stamp-w64-final-$(1): $(stampdir)/stamp-w64-$(1)-03-install + @echo "speedo: $(1) (64 bit) done" + @touch $(stampdir)/stamp-w64-final-$(1) + .PHONY : clean-$(1) clean-$(1): @echo "speedo: uninstalling $(1)" @@ -339,6 +728,11 @@ clean-$(1): rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}" || true) -rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-* + +.PHONY : build-$(1) +build-$(1): $(stampdir)/stamp-final-$(1) + + .PHONY : report-$(1) report-$(1): @($(call SETVARS,$(1)); \ @@ -363,6 +757,9 @@ endef $(foreach spkg, $(speedo_spkgs), $(eval $(call SPKG_template,$(spkg)))) $(stampdir)/stamp-final: $(stampdir)/stamp-directories +ifeq ($(TARGETOS),w32) +$(stampdir)/stamp-final: $(addprefix $(stampdir)/stamp-w64-final-,$(speedo_w64_build_list)) +endif $(stampdir)/stamp-final: $(addprefix $(stampdir)/stamp-final-,$(speedo_build_list)) touch $(stampdir)/stamp-final @@ -377,4 +774,55 @@ clean-stamps: clean-speedo: $(RM) -fR play -.PHONY : all-speedo report-speedo clean-stamps clean-speedo + +# +# Windows installer +# + +dist-source: all + for i in 00 01 02 03; do sleep 1;touch play/stamps/stamp-*-${i}-*;done + tar -cvJf gnupg-$(INST_VERSION)_$(BUILD_ISODATE).tar.xz \ + --exclude-backups --exclude-vc \ + patches play/stamps/stamp-*-00-unpack play/src + + +$(bdir)/NEWS.tmp: $(topsrc)/NEWS + sed -e '/^#/d' <$(topsrc)/NEWS >$(bdir)/NEWS.tmp + +$(bdir)/README.txt: $(bdir)/NEWS.tmp $(w32src)/README.txt \ + $(w32src)/pkg-copyright.txt + sed -e '/^;.*/d;' \ + -e '/!NEWSFILE!/{r NEWS.tmp' -e 'd;}' \ + -e '/!PKG-COPYRIGHT!/{r $(w32src)/pkg-copyright.txt' -e 'd;}' \ + -e 's,!VERSION!,$(INST_VERSION),g' \ + < $(w32src)/README.txt \ + | awk '{printf "%s\r\n", $$0}' >$(bdir)/README.txt + +$(bdir)/g4wihelp.dll: $(w32src)/g4wihelp.c $(w32src)/exdll.h + (set -e; cd $(bdir); \ + $(W32CC) -I. -shared -O2 -o g4wihelp.dll $(w32src)/g4wihelp.c \ + -lwinmm -lgdi32; \ + $(STRIP) g4wihelp.dll) + +w32_insthelpers: $(bdir)/g4wihelp.dll + +$(bdir)/inst-options.ini: $(w32src)/inst-options.ini + cat $(w32src)/inst-options.ini >$(bdir)/inst-options.ini + +installer: all w32_insthelpers $(bdir)/inst-options.ini $(bdir)/README.txt + $(MAKENSIS) -V2 \ + -DINST_DIR=$(idir) \ + -DINST6_DIR=$(idir6) \ + -DBUILD_DIR=$(bdir) \ + -DTOP_SRCDIR=$(topsrc) \ + -DW32_SRCDIR=$(w32src) \ + -DBUILD_ISODATE=$(BUILD_ISODATE) \ + -DVERSION=$(INST_VERSION) \ + -DPROD_VERSION=$(INST_PROD_VERSION) \ + $(w32src)/inst.nsi + +# +# Mark phony targets +# +.PHONY: all-speedo report-speedo clean-stamps clean-speedo installer \ + w32_insthelpers |