BACKENDS = @BACKENDS@ SUBDIRS = $(SYNTHESIS_SUBDIR) core $(BACKENDS) DIST_SUBDIRS = core $(BACKENDS) BUILT_SOURCES = AM_CPPFLAGS = $(SUBDIRS:%=-I$(srcdir)/%) -I$(srcdir)/../test $(BACKEND_CPPFLAGS) $(GLIB_CFLAGS) EXTRA_PROGRAMS = TESTS = bin_PROGRAMS = syncevolution if COND_DBUS libexec_PROGRAMS = syncevo-dbus-server endif bin_SCRIPTS = synccompare SYNCEVOLUTION_DEP = if ENABLE_MODULES else SYNCEVOLUTION_LDADD += $(SYNCSOURCES) SYNCEVOLUTION_DEP += $(SYNCSOURCES) endif EXTRA_DIST = shlibs.local Makefile-gen.am syncevolution.xml DISTCLEANFILES = synccompare MAINTAINERCLEANFILES = Makefile.in CLEANFILES = libstdc++.a client-test $(CLIENT_LIB_TEST_FILES) # synccompare is created by replacing its 'import Algorithm::Diff;' # with a simplified copy of Diff.pm. synccompare : ../test/Algorithm/Diff.pm ../test/synccompare.pl perl -e '$$diff = shift; open(DIFF, "<$$diff"); ($$_) = split(/__END__/, join("", )); s/\*import.*//m; s/require +Exporter;//; s/^#.*\n//mg; s/ +#.*\n//mg; $$diff = $$_;' -e 'while(<>) {' @MODIFY_SYNCCOMPARE@ -e 's/use +Algorithm::Diff;/"# embedded version of Algorithm::Diff follows, copyright by the original authors\n" . $$diff . "# end of embedded Algorithm::Diff\n"/e; print;}' $+ >$@ chmod u+x $@ CORE_SOURCES = # The files which register backends have to be compiled into # "client-test" and "syncevolution" in order to pull in the # code from the libs which implement the backends. # # Unit testing also goes there. # # When using modules the registration is done inside the # module and the register file is unnecessary. However, they # still need to be included in "make dist". BACKEND_REGISTRIES = @BACKEND_REGISTRIES@ if ENABLE_MODULES EXTRA_DIST += $(BACKEND_REGISTRIES) else CORE_SOURCES += $(BACKEND_REGISTRIES) endif CORE_CXXFLAGS = $(SYNTHESIS_CFLAGS) CORE_LDADD = $(SYNCEVOLUTION_LDADD) core/libsyncevolution.la $(GLIB_LIBS) $(LIBS) CORE_DEP = $(SYNCEVOLUTION_DEP) core/libsyncevolution.la $(SYNTHESIS_DEP) CORE_LD_FLAGS = -uSyncEvolution_Module_Version -Wl,--export-dynamic # put link to static c++ library into current directory, needed if compiling with --enable-static-c++ libstdc++.a : path=`$(CXX) $(CORE_LDADD) $(LD_FLAGS) -print-file-name=libstdc++.a` && ln -s $$path . syncevolution_SOURCES = \ syncevolution.cpp \ $(CORE_SOURCES) # SYNCEVOLUTION_LDADD will be replaced with libsyncebook.la/libsyncecal.la/libsyncsqlite.la # if linking statically against them, empty otherwise; # either way this does not lead to a dependency on those libs - done explicitly syncevolution_LDADD = $(CORE_LDADD) syncevolution_LDFLAGS = $(CORE_LD_FLAGS) syncevolution_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) syncevolution_DEPENDENCIES = $(EXTRA_LTLIBRARIES) $(CORE_DEP) # $(SYNTHESIS_DEP) # rule which is only relevant when compiling Synthesis in subdirectory #$(SYNTHESIS_LIB) : $(SYNTHESIS_SUBDIR)/all #$(SYNTHESIS_SUBDIR)/% : # [ ! "$(SYNTHESIS_SUBDIR)" ] || ( cd ${@D} && $(MAKE) ${@F} ) # include Synthesis in distribution: package only files in git if using a git checkout dist-hook: set -x; [ ! "$(SYNTHESIS_SUBDIR)" ] || \ mkdir -p $(distdir)/synthesis && \ if test -d "$(SYNTHESIS_SRC)/.git"; \ then \ ( ( cd "$(SYNTHESIS_SRC)" && git archive HEAD ) | ( cd "$(distdir)/synthesis" && tar xf - && $$SHELL autogen.sh && rm -rf autom4te.cache ) ) && \ ( echo Creating ChangeLog && \ ( ( cd "$(SYNTHESIS_SRC)" && \ echo '# Generated by configure. Do no edit.' && \ githash=`git show-ref --head --hash | head -1` && \ echo "# git revision $$githash" && \ echo "# git tag `git describe --tags $$githash`" && \ echo && \ "$(top_srcdir)/missing" --run perl "$(top_srcdir)/build/gen-changelog.pl" ) > ChangeLog.tmp ) && \ mv -f ChangeLog.tmp "$(distdir)/synthesis/ChangeLog" || \ ( rm -f ChangeLog.tmp ; \ echo Failed to generate ChangeLog >&2 ) \ ); \ else \ cp -a $(SYNTHESIS_SRC)/* $(distdir)/synthesis && \ for i in _build autom4te.cache; do [ ! -d "$(SYNTHESIS_SRC)/$$i" ] || chmod -R u+rwx "$(SYNTHESIS_SRC)/$$i"; done && \ find "$(distdir)" -name .libs -o -name "*~" -o -name ".*" -o -name "*.o" -o -name "*.lo" -o -name CVS -o -name .svn -o -name .git -o -name autom4te.cache -print0 | xargs -0 rm -rf; \ fi clean-local: testclean rm -rf testcases # files created during testing testclean: rm -rf *.test.vcf *.log *.tests *.diff *.dat *Client_Sync_*client.* distclean-local: rm -rf $(SYNTHESIS_SUBDIR) rm -rf $(CLEAN_CLIENT_SRC) if COND_DBUS BUILT_SOURCES += syncevo-dbus-glue.h syncevo_dbus_server_SOURCES = syncevo-marshal.c syncevo-dbus-server.cpp syncevo_dbus_server_LDADD = $(DBUS_GLIB_LIBS) syncevo_dbus_server_CPPFLAGS = $(DBUS_GLIB_CFLAGS) $(AM_CPPFLAGS) %-glue.h: stamp-%-glue.h @true stamp-%-glue.h: $(srcdir)/../interfaces/syncevo.xml $(DBUS_BINDING_TOOL) --prefix=syncevo --mode=glib-server $< > xgen-$(@F) \ && (cmp -s xgen-$(@F) $(@F:stamp-%=%) || cp xgen-$(@F) $(@F:stamp-%=%)) \ && rm -f xgen-$(@F) \ && echo timestamp > $(@F) syncevo-marshal.h: $(srcdir)/../interfaces/syncevo-marshal.list $(GLIB_GENMARSHAL) $(GLIB_GENMARSHAL) $< --header --prefix=syncevo_marshal > $@ syncevo-marshal.c: $(srcdir)/../interfaces/syncevo-marshal.list syncevo-marshal.h $(GLIB_GENMARSHAL) echo "#include \"syncevo-marshal.h\"" > $@ \ && $(GLIB_GENMARSHAL) --prefix=syncevo_marshal $(srcdir)/../interfaces/syncevo-marshal.list --body >> $@ endif # With --disable-shared autotools links against libfunambol.a which does not # pull any of the test suites into the test binary, so they would not be # executed. The workaround is to explicitly set them as undefined on the # link line. client_test_SOURCES = \ client-test-app.cpp \ ../test/ClientTest.cpp \ ../test/ClientTest.h \ ../test/client-test-main.cpp \ $(CORE_SOURCES) CLIENT_LIB_TEST_FILES = \ testcases/vcard21.vcf \ testcases/vcard30.vcf \ testcases/ical20.ics \ testcases/imemo20.ics \ testcases/itodo20.ics client_test_CPPFLAGS = -DHAVE_CONFIG_H -DENABLE_INTEGRATION_TESTS -DENABLE_UNIT_TESTS $(AM_CPPFLAGS) client_test_CXXFLAGS = `cppunit-config --cflags` $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) client_test_LDFLAGS = `cppunit-config --libs` `nm core/.libs/libsyncevolution.a | grep funambolAutoRegisterRegistry | sed -e 's/.* /-u /'` $(CORE_LD_FLAGS) client_test_LDADD = $(CORE_LDADD) # These dependencies are intentionally a bit too broad: # they ensure that all files are in place to *run* client-test. client_test_DEPENDENCIES = $(EXTRA_LTLIBRARIES) $(CORE_DEP) $(CLIENT_LIB_TEST_FILES) synccompare # copy test files because client-test expects them here LOCAL_TEST_FILES=$(subst $(srcdir)/../test/,,$(wildcard $(srcdir)/../test/* $(srcdir)/../test/testcases/*)) $(filter testcases/%, $(filter $(LOCAL_TEST_FILES), $(CLIENT_LIB_TEST_FILES))) : % : $(srcdir)/../test/% mkdir -p testcases cp $< $@ # distribute test system? if ENABLE_TESTING # yes: install client-test in bindir, test files in datadir TESTS += client-test bin_PROGRAMS += client-test nobase_dist_doc_DATA = $(CLIENT_LIB_TEST_FILES) else # The "all" dependency causes a rebuild even if the actual input files # haven't changed. If client-test is part of the regular targets built # by "all", then it must not depend on all! EXTRA_PROGRAMS += client-test nodist_client_test_SOURCES = $(CLIENT_LIB_TEST_FILES) client_test_DEPENDENCIES += all endif # special target for testing with valgrind valgrind : test valgrind --leak-check=yes --suppressions=valgrind.supp ./test # Because backend-related variables need to be substituted in # Makefile-gen.am we need an explicit rule to redo that work # so that "make" rebuilds derived files correctly. $(srcdir)/Makefile.am: Makefile-gen.am sed -e 's;[@]BACKEND_REGISTRIES[@];$(BACKEND_REGISTRIES);' \ -e 's;[@]BACKENDS[@];$(BACKENDS);' \ $< >$@ # old-style name for test program(s) .PHONY: test test: client-test