## Process this file with automake to produce Makefile.in
# Copyright (C) 2000-2012 Free Software Foundation, Inc.
#
# Author: Nikos Mavrogiannopoulos
#
# This file is part of GnuTLS.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This file 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
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this file; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
DISTCHECK_CONFIGURE_FLAGS = --enable-doc --enable-gtk-doc --disable-valgrind-tests
SUBDIRS = gl lib extra
if ENABLE_DANE
SUBDIRS += libdane
endif
SUBDIRS += po
if ENABLE_TOOLS
SUBDIRS += src/gl src
else
SUBDIRS += src/gl
endif
if ENABLE_TESTS
SUBDIRS += tests fuzz
endif
if HAVE_GUILE
SUBDIRS += guile
endif
if ENABLE_MANPAGES
SUBDIRS += doc/manpages
endif
if ENABLE_DOC
SUBDIRS += doc
endif
ACLOCAL_AMFLAGS = -I m4 -I src/libopts/m4 -I src/gl/m4 -I lib/unistring/m4
EXTRA_DIST = cfg.mk maint.mk CONTRIBUTING.md README.md LICENSE AUTHORS NEWS \
ChangeLog THANKS INSTALL.md symbols.last
pic-check:
@echo "Checking for position dependent code"
readelf -d $(builddir)/lib/.libs/libgnutls.so|grep TEXTREL; if test $$? = 0;then \
eu-findtextrel $(builddir)/lib/.libs/libgnutls.so; \
false; \
fi
abi-dump:
@abi-dumper lib/.libs/libgnutls.so -lver $(VERSION) -o "./devel/ABI-$(VERSION)-$$(uname -m).dump" -public-headers lib/includes/gnutls/
ABI_TMPCLONEDIR="gnutls-prev-abi.tmp"
ABI_TMPFILE_CUR="abi-temp-cur.xml"
ABI_TMPFILE_PRE="abi-temp-prev.xml"
ABIREFCMD="git for-each-ref --sort=taggerdate --format '%(refname)' refs/tags|tail -1"
ABIVERCMD="git for-each-ref --sort=taggerdate --format '%(refname)' refs/tags|tail -1|cut -d '/' -f 3|sed -e 's/gnutls_//' -e 's/_/./g'"
.prev-tag-abi.stamp:
@rm -rf $(ABI_TMPCLONEDIR)
@git clone -l . $(ABI_TMPCLONEDIR)
@echo "Creating ABI for $$(eval $(ABIVERCMD))"
cd $(ABI_TMPCLONEDIR) && \
git fetch --tags https://gitlab.com/gnutls/gnutls.git && \
git checkout $$(eval $(ABIREFCMD)) && \
$(MAKE) autoreconf && if test -f ../cache/config.cache;then \
CFLAGS="-g -Og" ./configure --disable-doc --cache-file ../cache/config.cache;\
else\
CFLAGS="-g -Og" ./configure --disable-doc;\
fi && $(MAKE) -j$$(nproc) -C gl && $(MAKE) -j$$(nproc) -C lib && $(MAKE) -j$$(nproc) -C libdane
touch $@
# We skip session::set_transport_vec_push_function() as it is seen as different when
# compiled with the glibc struct iovec, under gcc8. This should be temporary for
# 3.6.2 to 3.6.3 transition.
abi-check: .prev-tag-abi.stamp
@rm -f $(ABI_TMPFILE_CUR) $(ABI_TMPFILE_PRE)
@echo "Checking libgnutls ABI"
@echo "$(VERSION)" >$(ABI_TMPFILE_CUR)
@echo "$(srcdir)/lib/includes/gnutls" >>$(ABI_TMPFILE_CUR)
@echo "$(builddir)/lib/includes/gnutls" >>$(ABI_TMPFILE_CUR)
@echo "$(builddir)/lib/.libs" >>$(ABI_TMPFILE_CUR)
@echo "$(VERSION)" >$(ABI_TMPFILE_PRE)
@echo "$(builddir)/$(ABI_TMPCLONEDIR)/lib/includes/gnutls" >>$(ABI_TMPFILE_PRE)
@echo "$(builddir)/$(ABI_TMPCLONEDIR)/lib/includes/gnutls" >>$(ABI_TMPFILE_PRE)
@echo "_ZN6gnutls7session31set_transport_vec_push_functionEPFlPvPK8giovec_tiE" >>$(ABI_TMPFILE_PRE)
@echo "$(builddir)/$(ABI_TMPCLONEDIR)/lib/.libs" >>$(ABI_TMPFILE_PRE)
PATH="/sbin$(PATH_SEPARATOR)$$PATH" \
abi-compliance-checker -abi -lib gnutls -old $(ABI_TMPFILE_PRE) -new $(ABI_TMPFILE_CUR) -skip-symbols $(srcdir)/devel/abi-unchecked-symbols
@echo "Checking libgnutls-dane ABI"
@echo "$(VERSION)" >$(ABI_TMPFILE_CUR)
@echo "$(srcdir)/libdane/includes/gnutls" >>$(ABI_TMPFILE_CUR)
@echo "$(srcdir)/lib/includes/gnutls" >>$(ABI_TMPFILE_CUR)
@echo "$(builddir)/lib/includes/gnutls" >>$(ABI_TMPFILE_CUR)
@echo "$(builddir)/libdane/.libs" >>$(ABI_TMPFILE_CUR)
@echo "$$(eval $(ABIVERCMD))" >$(ABI_TMPFILE_PRE)
@echo "$(builddir)/$(ABI_TMPCLONEDIR)/libdane/includes/gnutls" >>$(ABI_TMPFILE_PRE)
@echo "$(builddir)/$(ABI_TMPCLONEDIR)/lib/includes/gnutls" >>$(ABI_TMPFILE_PRE)
@echo "$(builddir)/$(ABI_TMPCLONEDIR)/lib/includes/gnutls" >>$(ABI_TMPFILE_PRE)
@echo "$(builddir)/$(ABI_TMPCLONEDIR)/libdane/.libs" >>$(ABI_TMPFILE_PRE)
PATH="/sbin$(PATH_SEPARATOR)$$PATH" \
abi-compliance-checker -abi -lib gnutls-dane -old $(ABI_TMPFILE_PRE) -new $(ABI_TMPFILE_CUR)
@rm -f $(ABI_TMPFILE_CUR) $(ABI_TMPFILE_PRE)
symbol-check:
@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
@diff -u $(srcdir)/symbols.last symbols.last.tmp >/dev/null 2>&1; if test $$? != 0;then \
diff -u $(srcdir)/symbols.last symbols.last.tmp | grep -v '\-\-\-' >symbols.diff.tmp 2>&1; \
if grep -e '^-' symbols.diff.tmp;then \
echo "*******************************************"; \
echo "Symbols were removed from the library."; \
echo "Check symbols.diff.tmp for more information"; \
echo "*******************************************"; \
false; \
else \
echo "*************************************************************"; \
echo "Symbols were added in the library; check symbols.diff.tmp for"; \
echo "correctness; then use 'make files-update'"; \
echo "*************************************************************"; \
false; \
fi \
else \
test -f symbols.diff.tmp && cat symbols.diff.tmp; \
echo "**************************"; \
echo "No symbol changes detected"; \
echo "**************************"; \
fi
rm -f symbols.last.tmp symbols.diff.tmp
@CODE_COVERAGE_RULES@
local-code-coverage-output: code-coverage-capture
cat GnuTLS-$(VERSION)-coverage/index.html|grep headerCovTableEntry|grep '%'|head -1|sed 's/^.*>\([0-9]\+\.[0-9]\+\s*%\)<.*$$/ coverage lines: \1/' || true
libopts-check:
@echo "*****************************************************************"
@echo "Checking whether included libopts matches the system's. If the"
@echo "check fails upgrade the included libopts."
@echo "*****************************************************************"
test "`autoopts-config libsrc|cut -d '-' -f 2|sed 's/.tar.gz//'`" = "`cat $(srcdir)/src/libopts/autoopts/options.h |grep OPTIONS_VERSION_STRING|cut -d '"' -f 2|sed 's/:/./g'`"
files-update: libopts-check
$(MAKE) -C doc/ compare-makefile || mv doc/tmp-compare-makefile $(srcdir)/doc/Makefile.am
$(MAKE) -C doc/manpages compare-makefile || mv doc/manpages/tmp-compare-makefile $(srcdir)/doc/manpages/Makefile.am
$(MAKE) -C . symbol-check || mv symbols.last.tmp $(srcdir)/symbols.last
$(MAKE) -C src files-update
@echo "******************************************************************************************"
@echo "updated auto-generated files; please use git diff to verify the correctness of the changes"
@echo "******************************************************************************************"
dist-hook: libopts-check symbol-check
$(MAKE) -C doc/ compare-makefile
$(MAKE) -C doc/ compare-exported
$(MAKE) -C doc/manpages compare-makefile
$(MAKE) ChangeLog
mv ChangeLog $(distdir)
$(SED) 's/\@VERSION\@/$(VERSION)/g' -i $(distdir)/src/args-std.def
$(SED) 's/\@YEAR\@/$(YEAR)/g' -i $(distdir)/src/args-std.def
$(SED) 's/\@PACKAGE_BUGREPORT\@/$(PACKAGE_BUGREPORT)/g' -i $(distdir)/src/args-std.def
cd $(distdir)/src/ && for i in *.def;do \
if test x"$$i" = x"args-std.def";then continue; fi; \
autogen $$i; \
cp $$i $$i.tmp; \
$(SED) -i 's/@subheading \(.*\)/@*\n@var{\1}\n@*/' $$i.tmp; \
autogen -Tagman-cmd.tpl $$i.tmp; \
rm -f $$i.tmp; \
mv -f *.1 ../doc/manpages/; \
done
cd $(distdir)/src/ && for i in *-args.c *-args.h;do \
mv $$i $$i.bak; \
done
touch $(distdir)/doc/*.html $(distdir)/doc/*.pdf $(distdir)/doc/*.info
.PHONY: abi-check abi-dump pic-check symbol-check local-code-coverage-output files-update libopts-check