a388d4de1f
signal.h must be included in syncevolution.cpp. DBUS_CFLAGS/CXXFLAGS are also needed for it now.
341 lines
14 KiB
Text
341 lines
14 KiB
Text
BACKENDS = @BACKENDS@
|
|
|
|
# start with building nothing and add more targets below
|
|
SUBDIRS =
|
|
EXTRA_PROGRAMS =
|
|
TESTS =
|
|
bin_PROGRAMS =
|
|
bin_SCRIPTS =
|
|
nodist_bin_SCRIPTS =
|
|
libexec_PROGRAMS =
|
|
libexec_SCRIPTS =
|
|
nobase_dist_template_DATA =
|
|
DISTCLEANFILES =
|
|
CLEANFILES =
|
|
BUILT_SOURCES =
|
|
|
|
service_in_files = org.syncevolution.service.in
|
|
if COND_DBUS
|
|
servicedir = $(DBUS_SERVICES_DIR)
|
|
service_DATA = $(service_in_files:.service.in=.service)
|
|
$(service_DATA): $(service_in_files) Makefile
|
|
@sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
|
|
SUBDIRS += gdbus
|
|
endif
|
|
if ENABLE_GNOME_BLUETOOTH_PANEL
|
|
SUBDIRS += gnome-bluetooth
|
|
endif
|
|
if COND_CORE
|
|
SUBDIRS += $(SYNTHESIS_SUBDIR) syncevo $(BACKENDS)
|
|
bin_PROGRAMS += syncevolution
|
|
bin_SCRIPTS += synccompare
|
|
nobase_dist_template_DATA += $(TEMPLATE_FILES)
|
|
else
|
|
SUBDIRS += $(SYNTHESIS_SUBDIR_INCLUDES)
|
|
endif
|
|
if COND_GUI
|
|
SUBDIRS += dbus gtk-ui
|
|
endif
|
|
DIST_SUBDIRS = gdbus dbus syncevo $(BACKENDS) gtk-ui gnome-bluetooth synthesis-includes
|
|
|
|
AM_CPPFLAGS = $(SUBDIRS:%=-I$(srcdir)/%) -I$(srcdir)/../test -I$(top_srcdir) $(BACKEND_CPPFLAGS)
|
|
|
|
DISTCLEANFILES += synccompare
|
|
CLEANFILES += libstdc++.a client-test $(CLIENT_LIB_TEST_FILES) \
|
|
org.syncevolution.service \
|
|
$(SYNCEVO_DBUS_SERVER_DESKTOP) $(SYNCEVO_DBUS_SERVER_SCRIPT)
|
|
|
|
SYNCEVO_DBUS_SERVER_SCRIPT = syncevo-dbus-server-startup.sh
|
|
SYNCEVO_DBUS_SERVER_SCRIPT_IN = $(SYNCEVO_DBUS_SERVER_SCRIPT).in
|
|
|
|
autostartdir = $(sysconfdir)/xdg/autostart
|
|
SYNCEVO_DBUS_SERVER_DESKTOP = syncevo-dbus-server.desktop
|
|
SYNCEVO_DBUS_SERVER_DESKTOP_IN = $(SYNCEVO_DBUS_SERVER_DESKTOP).in
|
|
|
|
if COND_DBUS
|
|
libexec_PROGRAMS += syncevo-dbus-server
|
|
nodist_bin_SCRIPTS += syncevo-http-server
|
|
libexec_SCRIPTS += $(SYNCEVO_DBUS_SERVER_SCRIPT)
|
|
$(libexec_SCRIPTS): $(SYNCEVO_DBUS_SERVER_SCRIPT_IN) Makefile
|
|
@sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
|
|
autostart_DATA = $(SYNCEVO_DBUS_SERVER_DESKTOP)
|
|
$(autostart_DATA): $(SYNCEVO_DBUS_SERVER_DESKTOP_IN) Makefile
|
|
@sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
|
|
endif
|
|
syncevo-http-server: $(srcdir)/../test/syncevo-http-server.py
|
|
cp $< $@
|
|
CLEANFILES += syncevo-http-server
|
|
|
|
SYNCEVOLUTION_DEP =
|
|
if ENABLE_MODULES
|
|
else
|
|
SYNCEVOLUTION_LDADD += $(SYNCSOURCES)
|
|
SYNCEVOLUTION_DEP += $(SYNCSOURCES)
|
|
endif
|
|
EXTRA_DIST = shlibs.local Makefile-gen.am $(service_in_files) $(SYNCEVO_DBUS_SERVER_SCRIPT_IN) $(SYNCEVO_DBUS_SERVER_DESKTOP_IN)
|
|
|
|
TEMPLATE_FILES = @TEMPLATE_FILES@
|
|
templatedir = $(datadir)/syncevolution/
|
|
|
|
# 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("", <DIFF>)); 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) syncevo/libsyncevolution.la $(GLIB_LIBS) $(GTHREAD_LIBS) $(GOBJECT_LIBS) $(LIBS)
|
|
CORE_DEP = $(SYNCEVOLUTION_DEP) syncevo/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 \
|
|
CmdlineSyncClient.h \
|
|
CmdlineSyncClient.cpp \
|
|
$(CORE_SOURCES)
|
|
if ENABLE_UNIT_TESTS
|
|
nodist_syncevolution_SOURCES = ../test/test.cpp
|
|
endif
|
|
|
|
# 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 = gdbus/libgdbus.la $(CORE_LDADD) $(KEYRING_LIBS)
|
|
syncevolution_LDFLAGS = $(CORE_LD_FLAGS) $(DBUS_LIBS)
|
|
syncevolution_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(KEYRING_CFLAGS) -I$(srcdir)/gdbus $(DBUS_CFLAGS)
|
|
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 ) \
|
|
); \
|
|
elif test $(SYNTHESIS_SRC) != "no-synthesis-source"; then \
|
|
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
|
|
syncevo_dbus_server_SOURCES = \
|
|
syncevo-dbus-server.cpp \
|
|
$(CORE_SOURCES)
|
|
if ENABLE_UNIT_TESTS
|
|
nodist_syncevo_dbus_server_SOURCES = ../test/test.cpp
|
|
endif
|
|
|
|
syncevo_dbus_server_LDADD = gdbus/libgdbus.la $(CORE_LDADD) $(KEYRING_LIBS) $(LIBNOTIFY_LIBS)
|
|
syncevo_dbus_server_CPPFLAGS = -DHAVE_CONFIG_H -I$(srcdir)/gdbus $(AM_CPPFLAGS) -DSYNCEVOLUTION_LOCALEDIR=\"${SYNCEVOLUTION_LOCALEDIR}\"
|
|
syncevo_dbus_server_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(GLIB_CFLAGS) $(DBUS_CFLAGS) $(LIBSOUP_CFLAGS) $(KEYRING_CFLAGS) $(LIBNOTIFY_CFLAGS)
|
|
syncevo_dbus_server_LDFLAGS = $(CORE_LD_FLAGS) $(LIBSOUP_LIBS)
|
|
syncevo_dbus_server_DEPENDENCIES = gdbus/libgdbus.la $(EXTRA_LTLIBRARIES) $(CORE_DEP) $(SYNTHESIS_DEP)
|
|
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)
|
|
nodist_client_test_SOURCES = ../test/test.cpp
|
|
|
|
# list of test file base files
|
|
#
|
|
# Generated files (testcases/ical20.ics.funambol.tem) are derived from
|
|
# the original base file ($(srcdir)/test/testcases/ical20.ics) by
|
|
# applying a patch ($(srcdir)/test/testcases/ical20.ics.funambol.tem.patch).
|
|
CLIENT_LIB_TEST_FILES = \
|
|
testcases/lcs/file1.txt \
|
|
testcases/lcs/file2.txt \
|
|
testcases/templates/clients/SyncEvolution/sources/addressbook/config.ini \
|
|
testcases/templates/clients/SyncEvolution/sources/memo/config.ini \
|
|
testcases/templates/clients/SyncEvolution/sources/todo/config.ini \
|
|
testcases/templates/clients/SyncEvolution/sources/calendar/config.ini \
|
|
testcases/templates/clients/SyncEvolution/template.ini \
|
|
testcases/templates/clients/SyncEvolution/config.ini \
|
|
testcases/templates/clients/phone/nokia/S40/7210c/sources/addressbook/config.ini \
|
|
testcases/templates/clients/phone/nokia/S40/7210c/sources/memo/config.ini \
|
|
testcases/templates/clients/phone/nokia/S40/7210c/sources/todo/config.ini \
|
|
testcases/templates/clients/phone/nokia/S40/7210c/sources/calendar/config.ini \
|
|
testcases/templates/clients/phone/nokia/S40/7210c/sources/calendar+todo/config.ini \
|
|
testcases/templates/clients/phone/nokia/S40/7210c/template.ini \
|
|
testcases/templates/clients/phone/nokia/S40/7210c/config.ini \
|
|
testcases/vcard21.vcf \
|
|
testcases/vcard30.vcf \
|
|
testcases/ical20.ics \
|
|
testcases/imemo20.ics \
|
|
testcases/itodo20.ics
|
|
|
|
# all patch files
|
|
TEST_FILES_PATCHES = $(wildcard $(srcdir)/../test/testcases/*.patch)
|
|
# generated local files
|
|
TEST_FILES_GENERATED = $(subst .patch,,$(subst $(srcdir)/../test/,,$(TEST_FILES_PATCHES)))
|
|
# all patched files, regardless whether the patch already exists
|
|
TEST_FILES_PATCHED = $(wildcard testcases/*.tem)
|
|
# add files created via patches
|
|
CLIENT_LIB_TEST_FILES += $(TEST_FILES_GENERATED)
|
|
|
|
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 syncevo/.libs/libsyncevolution.a | grep funambolAutoRegisterRegistry | sed -e 's/.* /-u /'` $(CORE_LD_FLAGS)
|
|
client_test_LDADD = $(CORE_LDADD) $(SYNTHESIS_ENGINE)
|
|
# These dependencies are intentionally a bit too broad:
|
|
# they ensure that all files are in place to *run* client-test.
|
|
|
|
# rule to generate patched files from patches:
|
|
# make cannot compute the dependencies completely, so run the commands
|
|
# on each make invocation and do the time stamp test ourselves
|
|
.PHONY: $(TEST_FILES_GENERATED)
|
|
$(TEST_FILES_GENERATED):
|
|
@ mkdir -p testcases
|
|
@ echo "checking whether server specific test cases $@ are up-to-date"
|
|
set -e; \
|
|
patchfile=$(srcdir)/../test/$@.patch; \
|
|
basefile=$(srcdir)/../test/$(basename $(basename $@)); \
|
|
[ ! $@ -ot $$patchfile ] && [ ! $@ -ot $$basefile ] || \
|
|
(echo '*** foo'; echo '--- bar'; cat $$patchfile) | patch -o $@ $$basefile
|
|
|
|
# rule to regenerate patches:
|
|
# like generating the patched files, this is run every time.
|
|
# It must avoid making the patch file more recent than the
|
|
# patched file, otherwise the rule above would needlessly recreate
|
|
# it (not nice when having the file open in an editor).
|
|
#
|
|
# To avoid needlessly updating the content of the patch file,
|
|
# the first two lines with changing information (paths, file dates)
|
|
# are stripped from it.
|
|
.PHONY: testcase2patch
|
|
testcase2patch: $(TEST_FILES_GENERATED)
|
|
@ echo "checking whether test case patch files are up-to-date"
|
|
set -e; \
|
|
for i in testcases/*.tem; do \
|
|
patchfile=$(srcdir)/../test/$$i.patch; \
|
|
basefile=$(srcdir)/../test/`echo $$i | cut -d . -f -2`; \
|
|
if [ $$patchfile -ot $$i ] || [ $$patchfile -ot $$basefile ]; then \
|
|
diff -u $$basefile $$i | tail -n +3 > $$patchfile || true; \
|
|
touch -r $$i $$patchfile; \
|
|
echo "updated $$patchfile"; \
|
|
fi; \
|
|
done
|
|
|
|
# copy base test files
|
|
$(filter-out %.tem testcases/templates/%, $(filter testcases/%, $(subst $(srcdir)/../test/,,$(CLIENT_LIB_TEST_FILES)))) : % : $(srcdir)/../test/%
|
|
mkdir -p ${@D}
|
|
cp $< $@
|
|
$(filter testcases/templates/%, $(CLIENT_LIB_TEST_FILES)) : testcases/% : $(srcdir)/%
|
|
mkdir -p ${@D}
|
|
cp $< $@
|
|
|
|
# The binary does not really depend on the test cases, only running it does.
|
|
# Listing the dependencies here is done to ensure that one doesn't accidentally
|
|
# runs the binary with out-dated auxiliary files.
|
|
client_test_DEPENDENCIES = $(EXTRA_LTLIBRARIES) $(CORE_DEP) $(CLIENT_LIB_TEST_FILES) testcase2patch synccompare templates
|
|
|
|
# copy template directory into current working directory, if not there
|
|
# yet
|
|
.PHONY: templates
|
|
templates:
|
|
if test "$(srcdir)/templates" != "./templates"; then \
|
|
rm -rf ./templates; \
|
|
cp -r "$(srcdir)/templates" .; \
|
|
fi
|
|
|
|
# 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
|
|
|
|
# test program for output redirection, has to be built
|
|
# and run manually
|
|
EXTRA_PROGRAMS += abort-redirect
|
|
CLEANFILES += abort-redirect.log
|
|
abort_redirect_SOURCES = ../test/abort-redirect.cpp
|
|
abort_redirect_CPPFLAGS = -DHAVE_CONFIG_H $(AM_CPPFLAGS)
|
|
abort_redirect_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS)
|
|
abort_redirect_LDFLAGS = $(CORE_LD_FLAGS)
|
|
abort_redirect_LDADD = $(CORE_LDADD)
|
|
abort_redirect_DEPENDENCIES = all
|
|
|
|
|
|
# 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);' \
|
|
-e 's;[@]TEMPLATE_FILES[@];$(TEMPLATE_FILES);' \
|
|
$< >$@
|
|
|
|
# old-style name for test program(s)
|
|
.PHONY: test
|
|
test: client-test
|