# Makefile.am - Top level Makefile for GPGME. # Copyright (C) 2000 Werner Koch (dd9jn) # Copyright (C) 2001, 2002, 2004, 2005, 2008, 2009, 2024 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, see . # SPDX-License-Identifier: LGPL-2.1-or-later ## Process this file with automake to produce Makefile.in # Location of the released tarball archives. This is prefixed by # the variable RELEASE_ARCHIVE in ~/.gnupg-autogen.rc. For example: # RELEASE_ARCHIVE=user@host:archive/tarballs RELEASE_ARCHIVE_SUFFIX = gpgme # The variable RELEASE_SIGNKEY in ~/.gnupg-autogen.rc is used # to specify the key for signing. For example: # RELEASE_SIGNKEY=D8692123C4065DEA5E0F3AB5249B39D24F25E3B6 # Autoconf flags ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS = EXTRA_DIST = autogen.sh autogen.rc gpgme.spec.in \ ChangeLog-2011 m4/ChangeLog-2011 \ build-aux/libtool-patch.sed \ conf/whatisthis VERSION LICENSES # This artificial line is to put a dependency to conf/config.h for 'all' BUILT_SOURCES = conf/config.h if RUN_GPG_TESTS tests = tests else tests = endif SUBDIRS = src ${tests} doc lang # Fix the version of the spec file. dist-hook: gen-ChangeLog @set -e; \ sed -e 's/@pkg_version@/$(PACKAGE_VERSION)/g' \ $(top_srcdir)/gpgme.spec.in > $(distdir)/gpgme.spec distcheck-hook: set -e; ( \ pref="#+macro: gpgme_" ;\ reldate="$$(date -u +%Y-%m-%d)" ;\ echo "$${pref}ver $(PACKAGE_VERSION)" ;\ echo "$${pref}date $${reldate}" ;\ list='$(DIST_ARCHIVES)'; for i in $$list; do \ case "$$i" in *.tar.bz2) \ echo "$${pref}size $$(wc -c <$$i|awk '{print int($$1/1024)}')k" ;\ echo "$${pref}sha1 $$(sha1sum <$$i|cut -d' ' -f1)" ;\ echo "$${pref}sha2 $$(sha256sum <$$i|cut -d' ' -f1)" ;;\ esac;\ done ) | tee $(distdir).swdb gen_start_date = 2011-12-01T00:00:00 gen-ChangeLog: if test -d $(top_srcdir)/.git; then \ (cd $(top_srcdir) && \ $(GITLOG_TO_CHANGELOG) --append-dot --tear-off \ --amend=build-aux/git-log-fix \ --since=$(gen_start_date) ) > $(distdir)/cl-t; \ cat $(top_srcdir)/build-aux/git-log-footer >> $(distdir)/cl-t;\ rm -f $(distdir)/ChangeLog; \ mv $(distdir)/cl-t $(distdir)/ChangeLog; \ fi # Macro to help the release target. RELEASE_NAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) release: +(set -e;\ if [ "$(abs_top_builddir)" = "$(abs_top_srcdir)" ]; then \ echo "error: build directory must not be the source directory" >&2;\ exit 2;\ fi ;\ echo "/* Build started at $$(date -uIseconds) */" ;\ cd $(top_srcdir); \ ./autogen.sh --force; \ cd $(abs_top_builddir); \ rm -rf dist; mkdir dist ; cd dist ; \ $(abs_top_srcdir)/configure --enable-maintainer-mode; \ $(MAKE) distcheck; \ echo "/* Build finished at $$(date -uIseconds) */" ;\ echo "/*" ;\ echo " * Please run the final step interactively:" ;\ echo " * make sign-release" ;\ echo " */" ;\ ) 2>&1 | tee "$(RELEASE_NAME).buildlog" sign-release: +(set -e; \ test $$(pwd | sed 's,.*/,,') = dist || cd dist; \ x=$$(grep '^RELEASE_ARCHIVE=' $$HOME/.gnupg-autogen.rc|cut -d= -f2);\ if [ -z "$$x" ]; then \ echo "error: RELEASE_ARCHIVE missing in ~/.gnupg-autogen.rc">&2; \ exit 2;\ fi;\ myarchive="$$x/$(RELEASE_ARCHIVE_SUFFIX)";\ x=$$(grep '^RELEASE_SIGNKEY=' $$HOME/.gnupg-autogen.rc|cut -d= -f2);\ if [ -z "$$x" ]; then \ echo "error: RELEASE_SIGNKEY missing in ~/.gnupg-autogen.rc">&2; \ exit 2;\ fi;\ mysignkey="$$x";\ files1="$(RELEASE_NAME).tar.bz2" ;\ files2="$(RELEASE_NAME).tar.bz2.sig \ $(RELEASE_NAME).swdb \ $(RELEASE_NAME).buildlog" ;\ echo "/* Signing the source tarball ..." ;\ gpg -sbu $$mysignkey $(RELEASE_NAME).tar.bz2 ;\ cat $(RELEASE_NAME).swdb >swdb.snippet;\ echo >>swdb.snippet ;\ sha1sum $${files1} >>swdb.snippet ;\ cat "../$(RELEASE_NAME).buildlog" swdb.snippet \ | gzip >$(RELEASE_NAME).buildlog ;\ echo "Copying to local archive ..." ;\ scp -p $${files1} $${files2} $$myarchive/ || true;\ echo "Uploading documentation ..." ;\ $(MAKE) -C doc online; \ echo '/*' ;\ echo ' * All done; for checksums see dist/swdb.snippet' ;\ echo ' */' ;\ ) languages = $(NESTED_LANGUAGES) dist_languages = $(languages:%=dist-%) $(dist_languages): +(set -e;\ lang=$$(echo "$@" | sed 's/.*-//');\ cd "lang/$$lang";\ $(MAKE) dist;\ ) distcheck_languages = $(languages:%=distcheck-%) $(distcheck_languages): +(set -e;\ lang=$$(echo "$@" | sed 's/.*-//');\ cd "lang/$$lang";\ $(MAKE) distcheck;\ ) release_languages = $(languages:%=release-%) $(release_languages): +(set -e;\ lang=$$(echo "$@" | sed 's/.*-//');\ cd "lang/$$lang";\ $(MAKE) release;\ ) sign_release_languages = $(languages:%=sign-release-%) $(sign_release_languages): +(set -e;\ lang=$$(echo "$@" | sed 's/.*-//');\ cd "lang/$$lang";\ $(MAKE) sign-release;\ ) distclean_languages = $(languages:%=distclean-%) $(distclean_languages): +(set -e;\ lang=$$(echo "$@" | sed 's/.*-//');\ cd "lang/$$lang";\ $(MAKE) distclean;\ ) distclean-local: $(distclean_languages) dist-all: dist $(dist_languages) distcheck-all: distcheck $(distcheck_languages) release-all: release $(release_languages) sign-release-all: sign-release $(sign_release_languages) .PHONY: gen-ChangeLog release sign-release dist-all $(dist_languages) \ distcheck-all $(distcheck_languages) release-all $release_languages) \ sign-release-all $(sign_release_languages) $(distclean_languages)