diff options
author | Patrick Ohly <patrick.ohly@intel.com> | 2011-02-07 13:36:13 +0100 |
---|---|---|
committer | Patrick Ohly <patrick.ohly@intel.com> | 2011-02-07 13:36:13 +0100 |
commit | 2350852fd520502af82a2acbb4adfdd0e1f4cf0a (patch) | |
tree | 60d577f4137925743be80a3dc6bd69119a6fe218 /Makefile.am | |
parent | 870707b48a4d2b3fbc8c861f6b68ccc8803a9791 (diff) |
autotools: Makefile-gen.am -> Makefile.am
Patching the top-level Makefile.am is no longer necessary
thanks to the simplified gen-autotools.sh approach. Renaming
it back to the normal Makefile.am.
Diffstat (limited to 'Makefile.am')
-rw-r--r-- | Makefile.am | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 00000000..100789ba --- /dev/null +++ b/Makefile.am @@ -0,0 +1,238 @@ +## Process this file with automake to produce Makefile.in + +ACLOCAL_AMFLAGS = -I m4 -I m4-repo + +man_MANS = +dist_doc_DATA = +SUBDIRS = src +if COND_CORE +SUBDIRS += po test +dist_doc_DATA += README NEWS COPYING $(TEST_README_FILES) test/syncevo-http-server-logging.conf +if COND_HTML_README +dist_doc_DATA += README.html +endif +if COND_MAN_PAGES +man_MANS += syncevolution.1 +endif +endif +DIST_SUBDIRS = src po test + +EXTRA_DIST = \ + HACKING \ + LICENSE.txt \ + LICENSE.LGPL-21 \ + README.rst \ + description \ + configure-pre.in \ + configure-post.in \ + gen-autotools.sh \ + autogen.sh \ + Doxyfile + +MAINTAINERCLEANFILES = Makefile.in config.h.in config.guess config.sub configure depcomp install-sh ltmain.sh missing mkinstalldirs +CLEANFILES = + +TEST_README_FILES = $(wildcard $(srcdir)/test/README.*) + +DEV_FILE_PATTERN = $(1)$(2)/etc $(1)$(2)/include $(1)$(2)/lib/*.so $(1)$(2)/lib/*.a $(1)$(2)/lib/*.la $(1)$(2)/lib/*/*.la $(1)$(2)/lib/pkgconfig + +# binary distribution as .tar.gz +if COND_DBUS +# when building with D-Bus, we have no choice: the service has to go into /usr +# in order to be found +distbin : $(dist_doc_DATA) INSTALL-tar-gz all + @ [ "$(BINSUFFIX)" ] || (echo "please invoke with e.g. 'make distbin BINSUFFIX=debian-3.1'"; exit 1 ) + @ [ "$(prefix)" == "/usr" ] || (echo "please reconfigure with --prefix=/usr"; exit 1 ) + rm -rf $(distdir) + $(MAKE) DESTDIR=`pwd`/$(distdir) install + $(MAKE) DESTDIR=`pwd`/$(distdir) installcheck + rm -rf $(call DEV_FILE_PATTERN,$(distdir),/usr) + for i in `find $(distdir) -type d | sort -r`; do rmdir $$i 2>/dev/null || true; done + mkdir -p $(distdir)/usr/share/doc/syncevolution + cp $(srcdir)/INSTALL-tar-gz $(distdir)/INSTALL + cp $(filter-out all, $+) $(distdir)/usr/share/doc/syncevolution + tar zcf $(distdir)-$(BINSUFFIX).tar.gz $(distdir) + rm -rf $(distdir) +else +# without D-Bus, we can simply create an archive with a bin directory +# and everything works +distbin : $(dist_doc_DATA) all + @ [ "$(BINSUFFIX)" ] || (echo "please invoke with e.g. 'make distbin BINSUFFIX=debian-3.1'"; exit 1 ) + rm -rf $(distdir) + $(MAKE) prefix=`pwd`/$(distdir) install + echo removing developer files and empty directories + rm -rf $(call DEV_FILE_PATTERN,$(distdir),/) + for i in `find $(distdir) -type d | sort -r`; do rmdir $$i 2>/dev/null || true; done + cp $(filter-out all, $+) $(distdir) + tar zcf $(distdir)-$(BINSUFFIX).tar.gz $(distdir) + rm -rf $(distdir) +endif + +iphone : SyncEvolution.plist + +IPHONE_FILENAME = syncevolution-$(VERSION)-iphone.zip + +SyncEvolution.plist : SyncEvolution.plist.in $(IPHONE_FILENAME) + sed -e 's/__FILENAME__/$(IPHONE_FILENAME)/' \ + -e 's/__VERSION__/$(VERSION)/' \ + -e 's/__SIZE__/$(shell ls -l $(IPHONE_FILENAME) | sed -e 's/ */ /g' | cut -d ' ' -f 5)/' \ + $< >$@ + +$(IPHONE_FILENAME) : all + rm -rf syncevolution-iphone $@ + $(MAKE) DESTDIR=`pwd`/syncevolution-iphone install + rm -rf `ls -1 -d syncevolution-iphone/usr/share/doc/syncevolution/*/spds/sources/* | grep -v addressbook` + perl -pi -e 's;SyncEvolution test #1;;;' \ + -e 's;^type = text/(x-)?vcard;type = addressbook;m;' \ + syncevolution-iphone/usr/share/doc/syncevolution/*/spds/sources/addressbook/config.txt + cd syncevolution-iphone && zip -r ../$(IPHONE_FILENAME) . + +TYPE_deb = -D +TYPE_rpm = -R +# Dependency calculation is intentionally incomplete: +# - don't force dependency on specific EDS libs via backends, their versions change too much (handled via --enable-evolution-compatibility and dynamic loading of the backends) +# - ignore client-test dependencies (because users typically don't run it) +REQUIRES_deb = --requires="'$(shell set -x; cd dist; LD_LIBRARY_PATH=$(distdir)/usr/lib:$(distdir)/usr/lib/syncevolution dpkg-shlibdeps -L$(srcdir)/src/shlibs.local --ignore-missing-info -O $$(for i in $$(find $(distdir) -type f -perm /u+x | grep -v -e client-test -e lib/syncevolution/sync); do if file $$i | grep ELF >/dev/null; then echo $$i; fi; done) | sed -e 's/[^=]*=//')'" +VERSION_deb = 1:$(STABLE_VERSION)$(VERSION) +VERSION_rpm = `echo $(VERSION) | sed -e s/-/_/g` +RELEASE = 2 + +# The package name: BINSUFFIX is used to distinguish binaries +# for different Evolution releases. +PKGNAME=syncevolution$(patsubst %,-%,$(BINSUFFIX)) + +# This is a list of packages (potentially) provided on estamos.de. +# The current package conflicts with any of them, but not itself. +PKGS = $(addprefix syncevolution-evolution-, 2.6 2.8 2.12) + +# When calling checkinstall we cannot install into /tmp +# because any file created there will be excluded: that makes +# sense, because "make install" might create temporary files +# there. The current directory might be in /tmp, so use $HOME. +# +# --replaces is necessary for migrating from syncevolution-evolution-<evover> +# to syncevolution-evolution (as per http://wiki.debian.org/Renaming_a_Package) +# +# When we build shared objects, then conflict with the corresponding +# system libs. The assumption is that the system library is named +# after the lib and its major version, which holds for libsmltk and +# libsynthesis in Debian. +deb rpm : dist/$(distdir) dist/debian/control description-pak + conflicts=`ls -1 dist/$(distdir)/usr/lib/*.so.[0123456789] | sed -e 's;.*/;;' -e 's/\.so\.//' -e 's/$$/, /'` && \ + tmpdir=`mktemp -d $$HOME/syncevolution.XXXXXXXXXX` && \ + trap "rm -rf $$tmpdir" EXIT && \ + fakeroot checkinstall </dev/null \ + $(TYPE_$@) \ + $(REQUIRES_$@) \ + --fstrans=yes \ + --strip=no \ + --pkgversion=$(VERSION_$@) \ + --pkgrelease=$(RELEASE) \ + --pkgname=$(PKGNAME) \ + --pkgarch=$(PKGARCH) \ + --provides=syncevolution \ + --replaces="'syncevolution, `echo $(filter-out $(PKGNAME), $(PKGS)) | sed -e 's/ */ (<< 1:0.8.1-2), /g'` (<< 1:0.8.1-2)'" \ + --conflicts="'$${conflicts}syncevolution, `echo $(filter-out $(PKGNAME), $(PKGS)) | sed -e 's/ */ (<< 1:0.8.1-2), /g'` (<< 1:0.8.1-2)'" \ + --maintainer="'Patrick Ohly <patrick.ohly@gmx.de>'" \ + --pkgsource='http://sourceforge.net/project/showfiles.php?group_id=146288' \ + --pkgaltsource='http://www.estamos.de/projects/SyncML/' \ + --pkggroup='gnome' \ + cp -r `pwd`/$</usr/* /usr + if [ $@ == "rpm" ]; then cp /usr/src/rpm/RPMS/*/${PKGNAME}-${VERSION}-2.*.rpm .; fi + +.PHONY: dist/$(distdir) clean_dist +dist/$(distdir): all + rm -rf $@ + $(MAKE) install DESTDIR=`pwd`/$@ + $(MAKE) installcheck DESTDIR=`pwd`/$@ + rm -rf $(call DEV_FILE_PATTERN, $@) +clean-local: clean_dist +clean_dist: + rm -rf dist description-pak + +# required by dpkg-shlibdeps +dist/debian/control: + mkdir -p ${@D} + touch $@ + +# for checkinstall +description-pak : description + cp $< $@ + +# Build "html" inside the build dir, using source files +# from the SyncEvolution source directory and (if built) +# the installed client-api.build directory. +.PHONY: doc clean-html +doc: + rm -rf html + export VERSION="SyncEvolution $(VERSION)"; \ + export OUTPUT_DIRECTORY="`pwd`"; \ + export PREDEFINED="@BACKEND_DEFINES@ ENABLE_UNIT_TESTS ENABLE_INTEGRATION_TESTS"; \ + export CLIENT_LIBRARY="@FUNAMBOL_SUBDIR@/test @FUNAMBOL_SUBDIR@/include "; \ + export STRIP_FROM_PATH="$(srcdir) `dirname @FUNAMBOL_SUBDIR@`"; \ + cd $(srcdir); doxygen +clean-local: clean-html +clean-html: + rm -rf html + +# configure.in is updated +# by gen-autotools.sh. This scripts is run +# each time "make all" (which depends on "Makefile") +# runs; this is easier than trying to anticipated +# when the script would produce different output. +# The no-op "true" seem to be necessary for make to +# re-check the configure.in time stamps. +$(srcdir)/configure.in: check-autotools + @ true + +# Rebuilding the autotools files should never be necessary +# with source tar balls. Some parts of it depend on "git describe". +# So avoid it when there is no .git repo. +.PHONY: check-autotools +check-autotools: + @ cd $(srcdir) && ( [ ! -e .git ] || ./gen-autotools.sh ) + +dist-hook: + @if test -d "$(srcdir)/.git"; \ + then \ + echo Creating ChangeLog && \ + ( cd "$(top_srcdir)" && \ + echo '# Generated by configure. Do no edit.'; echo; \ + $(top_srcdir)/missing --run perl $(top_srcdir)/build/gen-changelog.pl ) > ChangeLog.tmp \ + && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \ + || ( rm -f ChangeLog.tmp ; \ + echo Failed to generate ChangeLog >&2 ); \ + else \ + echo A git checkout is required to generate a ChangeLog >&2; \ + fi + +if ENABLE_EVOLUTION_COMPATIBILITY +installcheck-local: + for i in `find . -name *.so`; do \ + if ldd $$i | grep -e libecal -e libebook -e libedata -e libical -e libbluetooth; then \ + echo "$$i should not depend on EDS, libical or libbluetooth"; \ + objdump -T -C $$i | grep -v :: | grep -e ical -e " e_"; \ + exit 1; \ + fi \ + done +endif + +# patch README.rst properties on-the-fly with sed expressions +PATCH_README = -e "s/^:Version: .*/:Version: $(VERSION)/" -e "s/:Date: .*/:Date: `date +%Y-%m-%d`/" + +# produce man pages +syncevolution.1: README.rst + sed $(PATCH_README) $< | $(RST2MAN) --exit-status=3 - >$@ +CLEANFILES += syncevolution.1 + +# README is the traditional name in the distribution, +# continue using it instead of README.rst. +README: README.rst + sed $(PATCH_README) $< >$@ +CLEANFILES += README + +# The README.html is also used on syncevolution.org as "Usage" page, +# therefore we must use <h3> headers and lower to fit into the page. +README.html: README.rst + sed $(PATCH_README) $< | $(RST2HTML) --initial-header-level=3 --exit-status=3 - >$@ +CLEANFILES += README.html |