Blame Makefile.am

Packit aea12f
## Process this file with automake to produce Makefile.in
Packit aea12f
# Copyright (C) 2000-2012 Free Software Foundation, Inc.
Packit aea12f
#
Packit aea12f
# Author: Nikos Mavrogiannopoulos
Packit aea12f
#
Packit aea12f
# This file is part of GnuTLS.
Packit aea12f
#
Packit aea12f
# This file is free software; you can redistribute it and/or modify it
Packit aea12f
# under the terms of the GNU General Public License as published by
Packit aea12f
# the Free Software Foundation; either version 3 of the License, or
Packit aea12f
# (at your option) any later version.
Packit aea12f
#
Packit aea12f
# This file is distributed in the hope that it will be useful, but
Packit aea12f
# WITHOUT ANY WARRANTY; without even the implied warranty of
Packit aea12f
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit aea12f
# General Public License for more details.
Packit aea12f
#
Packit aea12f
# You should have received a copy of the GNU General Public License
Packit aea12f
# along with this file; if not, write to the Free Software Foundation,
Packit aea12f
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Packit aea12f
Packit aea12f
DISTCHECK_CONFIGURE_FLAGS = \
Packit aea12f
	--enable-doc \
Packit aea12f
	--enable-gtk-doc \
Packit aea12f
	--disable-valgrind-tests \
Packit aea12f
	--with-guile-site-dir='$$(datarootdir)/guile/site/$$(GUILE_EFFECTIVE_VERSION)' \
Packit aea12f
	--with-guile-site-ccache-dir='$$(libdir)/guile/$$(GUILE_EFFECTIVE_VERSION)/site-ccache' \
Packit aea12f
	--with-guile-extension-dir='$$(libdir)/guile/$$(GUILE_EFFECTIVE_VERSION)/extensions' \
Packit aea12f
	AUTOGEN=false
Packit aea12f
Packit aea12f
SUBDIRS = gl lib extra
Packit aea12f
Packit aea12f
if ENABLE_DANE
Packit aea12f
SUBDIRS += libdane
Packit aea12f
endif
Packit aea12f
Packit aea12f
SUBDIRS += po
Packit aea12f
if ENABLE_TOOLS
Packit aea12f
SUBDIRS += src/gl src
Packit aea12f
else
Packit aea12f
SUBDIRS += src/gl
Packit aea12f
endif
Packit aea12f
Packit aea12f
if ENABLE_TESTS
Packit aea12f
SUBDIRS += tests fuzz
Packit aea12f
endif
Packit aea12f
Packit aea12f
if HAVE_GUILE
Packit aea12f
SUBDIRS += guile
Packit aea12f
endif
Packit aea12f
Packit aea12f
if ENABLE_MANPAGES
Packit aea12f
SUBDIRS += doc/manpages
Packit aea12f
endif
Packit aea12f
Packit aea12f
if ENABLE_DOC
Packit aea12f
SUBDIRS += doc
Packit aea12f
endif
Packit aea12f
Packit aea12f
ACLOCAL_AMFLAGS = -I m4 -I src/libopts/m4 -I src/gl/m4 -I lib/unistring/m4 --install
Packit aea12f
Packit aea12f
EXTRA_DIST = cfg.mk maint.mk CONTRIBUTING.md README.md LICENSE AUTHORS NEWS \
Packit Service 991b93
	ChangeLog THANKS INSTALL.md RELEASES.md
Packit aea12f
Packit aea12f
DISTCLEANFILES = AUTHORS
Packit aea12f
Packit aea12f
AUTHORS:
Packit aea12f
	@echo -e "The authors list is autogenerated from the git history; sorted by number of commits\n" >AUTHORS
Packit aea12f
	@git shortlog -sen| cut -f 2 | sed 's/@/ at /g' >> AUTHORS
Packit aea12f
	@echo -e "\n\nThe translators list is autogenerated from po file history\n" >>AUTHORS
Packit aea12f
	@sed -n 's/.*Last-Translator: *\(.*\) *<.*/\1/p' po/*.po | sort -u >>AUTHORS
Packit aea12f
Packit aea12f
pic-check:
Packit aea12f
	@echo "Checking for position dependent code"
Packit aea12f
	readelf -d $(builddir)/lib/.libs/libgnutls.so|grep TEXTREL; if test $$? = 0;then \
Packit aea12f
	eu-findtextrel $(builddir)/lib/.libs/libgnutls.so; \
Packit aea12f
	false; \
Packit aea12f
	fi
Packit aea12f
Packit aea12f
ABIDW_COMMON = --no-show-locs --no-corpus-path
Packit aea12f
ABIGNORE_FILE = "$(top_srcdir)/devel/libgnutls.abignore"
Packit aea12f
SYMBOLS_LAST_FILE = "$(top_srcdir)/devel/symbols.last"
Packit aea12f
LIBGNUTLS_ABI_LAST_FILE = "$(top_srcdir)/devel/libgnutls-latest-$$(uname -m).abi"
Packit aea12f
LIBDANE_ABI_LAST_FILE = "$(top_srcdir)/devel/libdane-latest-$$(uname -m).abi"
Packit aea12f
Packit aea12f
abi-dump-versioned: lib/libgnutls.la libdane/libgnutls-dane.la
Packit aea12f
	@echo "**************************************************************************"
Packit aea12f
	@echo "Generating versioned ABI files of current gnutls and gnutls-dane libraries"
Packit aea12f
	@echo "**************************************************************************"
Packit aea12f
	@abidw lib/.libs/libgnutls.so $(ABIDW_COMMON) --suppressions $(ABIGNORE_FILE) --out-file "$(srcdir)/devel/libgnutls-$(VERSION)-$$(uname -m).abi"
Packit aea12f
	@abidw libdane/.libs/libgnutls-dane.so $(ABIDW_COMMON) --out-file "$(srcdir)/devel/libdane-$(VERSION)-$$(uname -m).abi"
Packit aea12f
Packit aea12f
abi-dump-latest: lib/libgnutls.la libdane/libgnutls-dane.la
Packit aea12f
	@echo "****************************************************************"
Packit aea12f
	@echo "Generating ABI files of current gnutls and gnutls-dane libraries"
Packit aea12f
	@echo "****************************************************************"
Packit aea12f
	@abidw lib/.libs/libgnutls.so $(ABIDW_COMMON) --suppressions $(ABIGNORE_FILE) --out-file $(LIBGNUTLS_ABI_LAST_FILE)
Packit aea12f
	@abidw libdane/.libs/libgnutls-dane.so $(ABIDW_COMMON) --out-file $(LIBDANE_ABI_LAST_FILE)
Packit aea12f
	@rm -f "./devel/libgnutls-latest-$$(uname -m).tmp"
Packit aea12f
	@rm -f "./devel/libdane-latest-$$(uname -m).tmp"
Packit aea12f
Packit aea12f
abi-check-latest: lib/libgnutls.la libdane/libgnutls-dane.la
Packit aea12f
	@echo "Checking whether the latest ABI dump matches"
Packit Service 991b93
	@abidiff --suppressions $(ABIGNORE_FILE) lib/.libs/libgnutls.so $(LIBGNUTLS_ABI_LAST_FILE) --hd2 "$(srcdir)/lib/includes/gnutls/" --hd2 $(builddir)/lib/includes/gnutls/ ; if test $$? != 0;then \
Packit aea12f
		echo "*********************************************************"; \
Packit Service 991b93
		echo "libgnutls ABI has changed; use 'make files-update'       "; \
Packit aea12f
		echo "and use 'git diff' to check correctness before committing"; \
Packit aea12f
		echo "*********************************************************"; \
Packit aea12f
		false; \
Packit aea12f
	fi
Packit Service 991b93
	@abidiff libdane/.libs/libgnutls-dane.so $(LIBDANE_ABI_LAST_FILE) --hd2 "$(srcdir)/libdane/includes/gnutls/" --hd2 $(builddir)/lib/includes/gnutls/; if test $$? != 0;then \
Packit aea12f
		echo "*********************************************************"; \
Packit Service 991b93
		echo "libgnutls-dane ABI has changed; use 'make files-update'  "; \
Packit aea12f
		echo "and use 'git diff' to check correctness before committing"; \
Packit aea12f
		echo "*********************************************************"; \
Packit aea12f
		false; \
Packit aea12f
	fi
Packit aea12f
	@echo "********************************"
Packit aea12f
	@echo "Current release matches ABI dump"
Packit aea12f
	@echo "********************************"
Packit aea12f
Packit aea12f
ABICHECK_COMMON = --no-added-syms
Packit aea12f
abi-check: lib/libgnutls.la libdane/libgnutls-dane.la
Packit aea12f
	@for file in $$(echo $(srcdir)/devel/libgnutls-*-$$(uname -m).abi);do \
Packit aea12f
		echo "Comparing libgnutls with $$file"; \
Packit Service 991b93
		abidiff $${file} lib/.libs/libgnutls.so $(ABICHECK_COMMON) --suppressions $(ABIGNORE_FILE) --hd2 "$(srcdir)/lib/includes/gnutls/" --hd2 $(builddir)/lib/includes/gnutls/; \
Packit aea12f
		if test $$? != 0;then \
Packit aea12f
			echo "****************************************************************************"; \
Packit aea12f
			echo "ABI check failed; If intentional add suppression in devel/libgnutls.abignore"; \
Packit aea12f
			echo "****************************************************************************"; \
Packit Service 991b93
			exit 1; \
Packit aea12f
		fi; \
Packit aea12f
	done
Packit aea12f
	@for file in $$(echo $(srcdir)/devel/libdane-*-$$(uname -m).abi);do \
Packit aea12f
		echo "Comparing libgnutls-dane with $$file"; \
Packit Service 991b93
		abidiff $${file} libdane/.libs/libgnutls-dane.so $(ABICHECK_COMMON) --hd2 "$(srcdir)/libdane/includes/gnutls/" --hd2 $(builddir)/lib/includes/gnutls/; \
Packit aea12f
		if test $$? != 0;then \
Packit aea12f
			echo "**********************************************"; \
Packit aea12f
			echo "ABI check failed; If intentional add a        "; \
Packit aea12f
			echo "libabigail suppression file for libgnutls-dane"; \
Packit aea12f
			echo "**********************************************"; \
Packit Service 991b93
			exit 1; \
Packit aea12f
		fi; \
Packit aea12f
	done
Packit aea12f
	@echo "********************"
Packit aea12f
	@echo "ABI checks completed"
Packit aea12f
	@echo "********************"
Packit aea12f
Packit aea12f
symbol-check: lib/libgnutls.la
Packit aea12f
	@objdump -T $(builddir)/lib/.libs/libgnutls.so | grep -v ' \*UND\*'  | awk '{print $$7 "@" $$6;}' | grep -v GNUTLS_FIPS140 | grep -v GNUTLS_PRIVATE | grep -v '^@' |  sort -u >symbols.last.tmp
Packit aea12f
	@diff -u $(SYMBOLS_LAST_FILE) symbols.last.tmp >/dev/null 2>&1; if test $$? != 0;then \
Packit aea12f
		diff -u $(SYMBOLS_LAST_FILE) symbols.last.tmp | grep -v '\-\-\-' >symbols.diff.tmp 2>&1; \
Packit aea12f
		if grep -e '^-' symbols.diff.tmp;then \
Packit aea12f
			echo "*******************************************"; \
Packit aea12f
			echo "Symbols were removed from the library.     "; \
Packit aea12f
			echo "Check symbols.diff.tmp for more information"; \
Packit aea12f
			echo "*******************************************"; \
Packit aea12f
			false; \
Packit aea12f
		else \
Packit aea12f
			echo "*************************************************************"; \
Packit Service 991b93
			echo "Symbols were added in the library; use 'make files-update'   "; \
Packit aea12f
			echo "and use 'git diff' to check correctness before committing    "; \
Packit aea12f
			echo "*************************************************************"; \
Packit aea12f
			false; \
Packit aea12f
		fi \
Packit aea12f
	else \
Packit aea12f
		test -f symbols.diff.tmp && cat symbols.diff.tmp; \
Packit aea12f
		echo "**************************"; \
Packit aea12f
		echo "No symbol changes detected"; \
Packit aea12f
		echo "**************************"; \
Packit aea12f
	fi
Packit aea12f
	rm -f symbols.last.tmp symbols.diff.tmp
Packit aea12f
Packit aea12f
include $(top_srcdir)/aminclude_static.am
Packit aea12f
clean-local: code-coverage-clean
Packit aea12f
distclean-local: code-coverage-dist-clean
Packit aea12f
Packit aea12f
local-code-coverage-output: code-coverage-capture
Packit aea12f
	cat GnuTLS-$(VERSION)-coverage/index.html|grep headerCovTableEntry|grep '%'|head -1|sed 's/^.*>\([0-9]\+\.[0-9]\+\s*%\)<.*$$/ coverage lines: \1/' || true
Packit aea12f
Packit aea12f
libopts-check:
Packit aea12f
	@echo "*****************************************************************"
Packit aea12f
	@echo "Checking whether included libopts matches the system's. If the"
Packit aea12f
	@echo "check fails upgrade the included libopts."
Packit aea12f
	@echo "*****************************************************************"
Packit aea12f
	test "`autoopts-config libsrc|awk -F '-' '{print $$NF}'|sed 's/.tar.gz//'`" = "`cat $(srcdir)/src/libopts/autoopts/options.h |grep OPTIONS_VERSION_STRING|cut -d '"' -f 2|sed 's/:/./g'`"
Packit aea12f
Packit aea12f
files-update: libopts-check abi-dump-latest
Packit aea12f
	$(MAKE) -C doc/ compare-makefile || mv doc/tmp-compare-makefile $(srcdir)/doc/Makefile.am
Packit aea12f
	$(MAKE) -C doc/manpages compare-makefile || mv doc/manpages/tmp-compare-makefile $(srcdir)/doc/manpages/Makefile.am
Packit aea12f
	$(MAKE) -C . symbol-check || mv symbols.last.tmp $(SYMBOLS_LAST_FILE)
Packit aea12f
	@echo "******************************************************************************************"
Packit aea12f
	@echo "updated auto-generated files; please use git diff to verify the correctness of the changes"
Packit aea12f
	@echo "******************************************************************************************"
Packit aea12f
Packit aea12f
dist-hook: libopts-check
Packit aea12f
	$(PKG_CONFIG) --atleast-version=2.2.0 guile-2.2
Packit aea12f
	if test -d "$(top_srcdir)/devel";then \
Packit aea12f
		$(MAKE) -C $(top_srcdir) symbol-check && \
Packit aea12f
		$(MAKE) -C $(top_srcdir) abi-check-latest; \
Packit aea12f
	fi
Packit aea12f
	$(MAKE) -C doc/ compare-makefile
Packit aea12f
	$(MAKE) -C doc/ compare-exported
Packit aea12f
	$(MAKE) -C doc/manpages compare-makefile
Packit aea12f
	$(MAKE) ChangeLog
Packit aea12f
	mv ChangeLog $(distdir)
Packit Service 991b93
	touch -c $(distdir)/doc/*.html $(distdir)/doc/*.pdf $(distdir)/doc/*.info
Packit aea12f
Packit aea12f
.PHONY: abi-check abi-dump-versioned abi-dump-latest pic-check symbol-check local-code-coverage-output files-update libopts-check AUTHORS