summaryrefslogtreecommitdiff
path: root/Makefile.am
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2011-02-07 13:36:13 +0100
committerPatrick Ohly <patrick.ohly@intel.com>2011-02-07 13:36:13 +0100
commit2350852fd520502af82a2acbb4adfdd0e1f4cf0a (patch)
tree60d577f4137925743be80a3dc6bd69119a6fe218 /Makefile.am
parent870707b48a4d2b3fbc8c861f6b68ccc8803a9791 (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.am238
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