diff options
95 files changed, 3137 insertions, 2154 deletions
diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 24dcda16..00000000 --- a/.cvsignore +++ /dev/null @@ -1,20 +0,0 @@ -autom4te.cache -aclocal.m4 -config.h -config.h.in -config.log -config.status -libtool -stamp-h1 -Makefile -Makefile.in -README.syncevolution -syncevolution-*.tar.gz -config.guess -config.sub -configure -depcomp -install-sh -ltmain.sh -missing -mkinstalldirs @@ -1,34 +1,129 @@ -*~ -/.dotest -/Makefile.am -aclocal.m4 -m4 -autom4te.cache -config.guess -config.h.in -config.sub -configure -configure.in -depcomp -install-sh -ltmain.sh -missing -Makefile.in -mkinstalldirs -intltool-*.in -/*.patch -*.o -*.lo +# general *.la +*.lo +*.o +*~ .deps +.dirstamp .libs -.*.swp Makefile -*.gmo -stamp-h1 -CONFIGURE.sh -config.status -config.log -/libtool +Makefile.in + +# top level +/autom4te.cache +/aclocal.m4 +/compile +/config.guess /config.h +/config.h.in +/config.log +/config.status +/config.sub +/configure +/depcomp +/install-sh +/libtool +/ltmain.sh +/m4 +/missing +/mkinstalldirs /README +/README.html +/stamp-h1 +/syncevolution.1 +/syncevolution-*.tar.gz + +# po +/po/*.gmo +/po/.intltool-merge-cache +/po/LINGUAS +/po/Makefile.in.in +/po/POTFILES +/po/stamp-it + +# src +/src/autotroll.mk +/src/Client_Source_*.log +/src/Client_Sync_*.log +/src/Client_Sync_*.A +/src/client-test +/src/LogDirTest +/src/LogRedirectTest_glib.out +/src/N7SyncEvo*.log +/src/synccompare +/src/syncevo-dbus-server +/src/syncevo-http-server +/src/syncevolution +/src/testcases/ + +# src/backends +/src/backends/backends.am + +# src/backends/buteo +/src/backends/buteo/autotroll.mk + +# src/backends/webdav +/src/backends/webdav/syncevo-webdav-lookup + +# src/dbus/glib +/src/dbus/glib/stamp-syncevo-connection-bindings.h +/src/dbus/glib/stamp-syncevo-connection-glue.h +/src/dbus/glib/stamp-syncevo-server-bindings.h +/src/dbus/glib/stamp-syncevo-server-glue.h +/src/dbus/glib/stamp-syncevo-session-bindings.h +/src/dbus/glib/stamp-syncevo-session-glue.h +/src/dbus/glib/syncevo-connection-glue.h +/src/dbus/glib/syncevo-connection-bindings.h +/src/dbus/glib/syncevo-connection.xml +/src/dbus/glib/syncevo-dbus.pc +/src/dbus/glib/syncevo-marshal.c +/src/dbus/glib/syncevo-marshal.h +/src/dbus/glib/syncevo-server-glue.h +/src/dbus/glib/syncevo-server-bindings.h +/src/dbus/glib/syncevo-server.xml +/src/dbus/glib/syncevo-session-glue.h +/src/dbus/glib/syncevo-session-bindings.h +/src/dbus/glib/syncevo-session.xml +/src/dbus/glib/test-syncevo-dbus + +# src/dbus/interfaces +/src/dbus/interfaces/syncevo-connection-doc.xml +/src/dbus/interfaces/syncevo-dbus-api-doc.html +/src/dbus/interfaces/syncevo-dbus-api-doc.xml +/src/dbus/interfaces/syncevo-server-doc.xml +/src/dbus/interfaces/syncevo-session-doc.xml + +# src/dbus/qt +/src/dbus/qt/autotroll.mk +/src/dbus/qt/syncevolution-qt-dbus.pc +/src/dbus/qt/stamp-connection +/src/dbus/qt/stamp-server +/src/dbus/qt/stamp-session +/src/dbus/qt/syncevo-connection-full.cpp +/src/dbus/qt/syncevo-connection-full.h +/src/dbus/qt/syncevo-connection-full.moc.cpp +/src/dbus/qt/syncevo-server-full.cpp +/src/dbus/qt/syncevo-server-full.h +/src/dbus/qt/syncevo-server-full.moc.cpp +/src/dbus/qt/syncevo-session-full.cpp +/src/dbus/qt/syncevo-session-full.h +/src/dbus/qt/syncevo-session-full.moc.cpp + +# src/dbus/server +/src/dbus/server/org.syncevolution.service +/src/dbus/server/syncevo-dbus-server-startup.sh +/src/dbus/server/syncevo-dbus-server.desktop + +# src/gdbus +/src/gdbus/example + +# src/gtk-ui +/src/gtk-ui/sync-ui +/src/gtk-ui/sync.desktop +/src/gtk-ui/ui.xml + +# src/syncevo +/src/syncevo-phone-config +/src/syncevo/CmdlineHelp.c +/src/syncevo/SyncEvolutionXML.c +/src/syncevo/syncevolution.pc diff --git a/AUTOTOOLS-TESTING b/AUTOTOOLS-TESTING new file mode 100644 index 00000000..49fb6532 --- /dev/null +++ b/AUTOTOOLS-TESTING @@ -0,0 +1,41 @@ +Untested: +- flags of configure script: + --enable-mlite + --enable-gui=all or --enable-gui=moblin + --enable-akonadi + --enable-kcalextended + --enable-qtcontacts (see TODO) + --enable-kwallet + --enable-buteo-tests + --enable-buteo + --enable-maemocal + ... probably more. +- make -j and make -jX where X>2, because gcc is being killed by oom-killer). + +Partially tested: +--enable-gnome-bluetooth-panel-plugin (installation not tested - plugin is not + installed under given prefix, but somewhere into /usr/lib...) + +Tested and passed: +- flags of configure script: + --enable-unit-tests + --enable-integration-tests + --enable-maemo + --enable-libcurl + --enable-libsoup + --enable-bluetooth + --enable-gui=gtk + --enable-core + --enable-dbus-service + --enable-gnome-keyring + --enable-notify + --enable-doc + --enable-sqlite + --enable-dav + --enable-xmlrpc + --enable-qt-dbus + --enable-static + --disable-shared +- make -jX +- make V=0 +- make -j2 distcheck diff --git a/AUTOTOOLS-TODO b/AUTOTOOLS-TODO new file mode 100644 index 00000000..23b77caa --- /dev/null +++ b/AUTOTOOLS-TODO @@ -0,0 +1,126 @@ +REGRESSIONS: + + +- None. + + +IMPROVEMENTS: + + +- Add a check for qt-mobility for QtContacts backend. + + +- Probably client test should be built only when unit tests or integration tests + are enabled. + + +- Look at the note at the bottom of configure.ac: + + # Avoid hard-coding paths in backends. These names are chosen so + # that a backend can alternatively use its own top-level configure + # with PKG_CHECK_MODULES(SYNCEVOLUTION, "syncevolution") to set them. + # need absolute path, use pwd instead of relative $srcdir + SYNCEVOLUTION_CFLAGS=-I`cd $srcdir && pwd`/src + SYNCEVOLUTION_LIBS=`pwd`/src/syncevo/libsyncevolution.la + AC_SUBST(SYNCEVOLUTION_CFLAGS) + AC_SUBST(SYNCEVOLUTION_LIBS) + + Backends does not have their own top-level configure scripts, so usage of + absolute path have to be checked. For now this is worked around + in generated backends.am. Also, for relative path not $(srcdir) should be used + but $(builddir). + + +- Review CLEANFILES, DISTCLEANFILES, MAINTAINERCLEANFILES and MOSTLYCLEANFILES. + That is - check which files should be assigned to which of CLEAN variables. + + +- Check why distcheck outputs: + ================== + All 0 tests passed + ================== + + There should have been at least one test being run. The same behavior exists + in old build system. + + +- Check why there are so many failed tests when running `make check' explicitly. + The same number of failures exists in old build system: + + Run: 583 Failure total: 528 Failures: 206 Errors: 322 + + +- Tidy up configure.ac and some .am files. + + +- Maybe write scripts generating configs_xml.am, templates.am and profiles.am. + + +QUESTIONS: + + +- None. + + +PERSISTENT: + + +- Hunt for common variables clobbering. + + +- Silence more verbose output if found. + + +NITPICKS: + + +- Check if SyncEvolutionXML.c should always be recreated, patches always checked + and test-client always relinked. + + +- Check if /etc/sync and /lib/sync really have to be created, even if they are + going to be empty after install (this is probably some buteo stuff). + + +- Maybe do not create /share/man/man1 directory if we do not put there anything. + + +- If backends are static libraries then do not create /lib/syncevolution, + because nothing is put here. + + +- Change $(foo) to @foo@ for all variables substituted by configure script. This + might be useful when looking for actual value of variable appearing out of + nowhere in .am file. Maybe make also all configure variables UPPER_CASE + and all local Automake variables lower_case. + + +- Lower autoreconf's warnings level later. Namely - don't warn about some + portability issues. The warnings about obsolete stuff should rather remain. + For now only some glib macros are using obsolete features. + + +- Should stamp files be marked as intermediate or rather as secondary files? + + +- Check why 'copying selected object files to avoid basename conflicts...' is + displayed between linking src/dbus/server/libsyncevodbusserver.la + and compiling src/gdbus/src_gdbus_libgdbussyncevo_la-debug.lo. This is + probably harmless. + + +TRACKING: + + +- Handle nobase prefixes. Link to track: + http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9289 + + +- Explanation why make -jX used to fail: + It failed because usually Automake generates dependencies of a library/program + by looking at its _LIBADD/_LDADD variable. But this generation doesn't work + correctly when _LIBADD/_LDADD variable has AC_SUBSTed variable - automake then + just discards them and resulting _DEPENDENCIES variable does not contain them. + As a workaround _DEPENDENCIES variable have to be written explicitly. Link to + track: + http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9320 @@ -1,49 +1,80 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008, 2009 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + Basic Installation ================== - These are generic installation instructions. Specific installation -instructions for Sync4jEvolution are in the README file. + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. -The simplest way to compile this package is: + The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. + `./configure' to configure the package for your system. - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with - the package. + the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is @@ -52,62 +83,119 @@ The simplest way to compile this package is: all sorts of other programs in order to regenerate files that came with the distribution. + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + Compilers and Options ===================== Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the +own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. Installation Names ================== - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular +options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. -Optional Features -================= - Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE @@ -120,25 +208,75 @@ find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `<wchar.h>' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + Specifying the System Type ========================== - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + CPU-COMPANY-SYSTEM -See the file `config.sub' for the possible values of each field. If +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't -need to know the host type. +need to know the machine type. - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. Sharing Defaults ================ @@ -151,19 +289,55 @@ default values for variables like `CC', `cache_file', and `prefix'. `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. -Operation Controls +Defining Variables ================== + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + `configure' recognizes the following options to control how it operates. +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + `--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. -`--help' - Print a summary of the options to `configure', and exit. +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. `--quiet' `--silent' @@ -176,8 +350,16 @@ operates. Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. -`configure' also accepts some other, not widely useful, options. diff --git a/Makefile.am b/Makefile.am index dbfd322d..5de1e225 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,38 +1,56 @@ +include $(top_srcdir)/setup-variables.am +include $(top_srcdir)/autotroll.am +include $(top_srcdir)/build/build.am + +AUTOMAKE_OPTIONS = subdir-objects + ## Process this file with automake to produce Makefile.in -ACLOCAL_AMFLAGS = -I m4 -I m4-repo +ACLOCAL_AMFLAGS = -I m4 -I m4-repo ${ACLOCAL_FLAGS} + +if COND_CORE +SUBDIRS += $(SYNTHESIS_SUBDIR) +else +SUBDIRS += $(SYNTHESIS_SUBDIR_INCLUDES) +endif + +SUBDIRS += . + +disted_docs = +distbin_docs = man_MANS = -dist_doc_DATA = -SUBDIRS = src +include src/src.am if COND_CORE -SUBDIRS += po test -dist_doc_DATA += README NEWS COPYING $(TEST_README_FILES) test/syncevo-http-server-logging.conf +include test/test.am +SUBDIRS += po +disted_docs += README NEWS COPYING $(TEST_README_FILES) test/syncevo-http-server-logging.conf +distbin_docs += $(disted_docs) +dist_doc_DATA += $(disted_docs) if COND_HTML_README -dist_doc_DATA += README.html +distbin_docs += README.html +# do not distribute in tarball. +doc_DATA += README.html endif if COND_MAN_PAGES man_MANS += syncevolution.1 endif endif -DIST_SUBDIRS = src po test +DIST_SUBDIRS += po -EXTRA_DIST = \ - HACKING \ - LICENSE.txt \ - LICENSE.LGPL-21 \ - README.rst \ - description \ - configure-pre.in \ - configure-post.in \ - gen-autotools.sh \ - autogen.sh \ - Doxyfile +dist_noinst_DATA += \ + HACKING \ + LICENSE.txt \ + LICENSE.LGPL-21 \ + README.rst \ + description \ + autogen.sh \ + Doxyfile \ + po/LINGUAS.README -MAINTAINERCLEANFILES = Makefile.in config.h.in config.guess config.sub configure depcomp install-sh ltmain.sh missing mkinstalldirs -CLEANFILES = +MAINTAINERCLEANFILES += Makefile.in config.h.in config.guess config.sub configure depcomp install-sh ltmain.sh missing mkinstalldirs -TEST_README_FILES = $(wildcard $(srcdir)/test/README.*) +TEST_README_FILES = $(wildcard $(top_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 @@ -40,7 +58,7 @@ DEV_FILE_PATTERN = $(1)$(2)/etc $(1)$(2)/include $(1)$(2)/lib/*.so $(1)$(2)/lib/ 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 +distbin : $(distbin_docs) 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) @@ -56,11 +74,11 @@ distbin : $(dist_doc_DATA) INSTALL-tar-gz all else # without D-Bus, we can simply create an archive with a bin directory # and everything works -distbin : $(dist_doc_DATA) all +distbin : $(distbin_docs) 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 + @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) @@ -73,10 +91,10 @@ 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)/' \ - $< >$@ + $(AM_V_GEN)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 $@ @@ -147,7 +165,7 @@ deb rpm : dist/$(distdir) dist/debian/control description-pak cp -r `pwd`/$</usr/* /usr if [ $@ = "rpm" ]; then cp /usr/src/rpm/RPMS/*/${PKGNAME}-${VERSION}-2.*.rpm .; fi -.PHONY: dist/$(distdir) clean_dist +all_phonies += dist/$(distdir) clean_dist dist/$(distdir): all rm -rf $@ $(MAKE) install DESTDIR=`pwd`/$@ @@ -159,7 +177,7 @@ clean_dist: # required by dpkg-shlibdeps dist/debian/control: - mkdir -p ${@D} + mkdir -p ${dir $@} touch $@ # for checkinstall @@ -169,7 +187,7 @@ description-pak : description # 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 +all_phonies += doc clean-html doc: rm -rf html export VERSION="SyncEvolution $(VERSION)"; \ @@ -182,35 +200,21 @@ 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: +all_dist_hooks += dot_dist_hook +dot_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 ); \ + printf '%s' 'Creating ChangeLog...' && \ + ( cd "$(top_srcdir)" && \ + printf '%s\n\n' '# Generated by configure. Do not edit.'; \ + $(top_srcdir)/missing --run perl $(top_srcdir)/build/gen-changelog.pl ) > ChangeLog.tmp && \ + ( mv -f ChangeLog.tmp $(top_distdir)/ChangeLog && \ + printf '%s\n' ' done.' ) || \ + ( rm -f ChangeLog.tmp ; \ + printf '%s\n' ' failed.'; \ + echo Failed to generate ChangeLog >&2 ); \ else \ - echo A git checkout is required to generate a ChangeLog >&2; \ + echo 'A git checkout is required to generate a ChangeLog.' >&2; \ fi if ENABLE_EVOLUTION_COMPATIBILITY @@ -219,16 +223,18 @@ if ENABLE_EVOLUTION_COMPATIBILITY # problematic libraries and symbols # # ical_strdup is an exception because it is in SyncEvolution. -installcheck-local: - for i in `find $(DESTDIR)/$(libdir)/syncevolution $(DESTDIR)/$(libdir)/libsyncevo* $(DESTDIR)/$(libdir)/libsynthesis* -name *.so` $(DESTDIR)/$(bindir)/syncevolution; do \ - if objdump -T -C $$i | grep -v :: | grep '\*UND\*' | sort | grep -v -w ical_strdup | grep -e ical -e " e_"; then \ - echo "$$i should not depend on EDS, libical or libbluetooth"; \ - exit 1; \ - fi; \ - if ldd $$i | grep -e libecal -e libebook -e libedata -e libical -e libbluetooth; then \ - echo "$$i should not be linked against EDS, libical or libbluetooth"; \ - exit 1; \ - fi; \ +all_local_installchecks += toplevel_so_check +toplevel_so_check: + for i in `find $(DESTDIR)/$(libdir)/syncevolution $(DESTDIR)/$(libdir)/libsyncevo* $(DESTDIR)/$(libdir)/libsynthesis* -name *.so` $(DESTDIR)/$(bindir)/syncevolution; \ + do \ + if objdump -T -C $$i | grep -v :: | grep '\*UND\*' | sort | grep -v -w ical_strdup | grep -e ical -e " e_"; then \ + echo "$$i should not depend on EDS, libical or libbluetooth"; \ + exit 1; \ + fi; \ + if ldd $$i | grep -e libecal -e libebook -e libedata -e libical -e libbluetooth; then \ + echo "$$i should not be linked against EDS, libical or libbluetooth"; \ + exit 1; \ + fi; \ done endif @@ -237,17 +243,32 @@ PATCH_README = -e "s/^:Version: .*/:Version: $(VERSION)/" -e "s/:Date: .*/:Date: # produce man pages syncevolution.1: README.rst - sed $(PATCH_README) $< | $(RST2MAN) --exit-status=3 - >$@ + $(AM_V_GEN)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) $< >$@ + $(AM_V_GEN)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 - >$@ + $(AM_V_GEN)sed $(PATCH_README) $< | $(RST2HTML) --initial-header-level=3 --exit-status=3 - >$@ CLEANFILES += README.html + +.PHONY: $(all_phonies) ; + +installcheck-local: $(all_local_installchecks) ; + +dist-hook: $(all_dist_hooks) + +# Force sequential installation. This is a workaround for relinking failures +# during concurrent distcheck (a backed was relinked against not yet installed +# libsyncevolution.la). +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am + @$(MAKE) $(AM_MAKEFLAGS) install-data-am + +.DELETE_ON_ERROR: diff --git a/README.packagers b/README.packagers index 8a924b7a..3128aa88 100644 --- a/README.packagers +++ b/README.packagers @@ -22,3 +22,6 @@ backends there are more subtle dependencies: http://lists.manyfish.co.uk/pipermail/neon/2010-November/001294.html) - ensure that one of the following commands is available at runtime: adnshost, host, nslookup +- as of SyncEvolution >= 1.3 rst2html tool should be made as a build + requirement, because README.html is optionally generated during build instead + of being distributed. @@ -9,19 +9,23 @@ rm -rf aclocal.m4 m4 autom4te.cache config.guess config.sub config.h.in configur # intltoolize fails to copy its macros unless m4 exits mkdir m4 -env GEN_AUTOTOOLS_SET_VERSION=1 sh ./gen-autotools.sh +#env GEN_AUTOTOOLS_SET_VERSION=1 sh ./gen-autotools.sh -libtoolize -c glib-gettextize --force --copy intltoolize --force --copy --automake -aclocal -I m4 -I m4-repo -autoheader -automake -a -c -Wno-portability -autoconf +autoreconf -vifW all -W no-portability -W no-obsolete + +#libtoolize -c +#glib-gettextize --force --copy +#intltoolize --force --copy --automake +#aclocal -I m4 -I m4-repo +#autoheader +#automake -a -c -Wno-portability +#autoconf # This hack is required for the autotools on Debian Etch. # Without it, configure expects a po/Makefile where # only po/Makefile.in is available. This patch fixes # configure so that it uses po/Makefile.in, like more # recent macros do. -perl -pi -e 's;test ! -f "po/Makefile";test ! -f "po/Makefile.in";; s;mv "po/Makefile" "po/Makefile.tmp";cp "po/Makefile.in" "po/Makefile.tmp";;' configure +#perl -pi -e 's;test ! -f "po/Makefile";test ! -f "po/Makefile.in";; s;mv "po/Makefile" "po/Makefile.tmp";cp "po/Makefile.in" "po/Makefile.tmp";;' configure diff --git a/m4-repo/autotroll.mk b/autotroll.am index 45d6cf36..b3bdce92 100644 --- a/m4-repo/autotroll.mk +++ b/autotroll.am @@ -39,70 +39,63 @@ # See autotroll.m4 :) - -SUFFIXES = .moc.cpp .moc.cc .moc.cxx .moc.C .h .hh .hpp \ - .ui .ui.h .ui.hh .ui.hpp \ - .qrc .qrc.cpp .qrc.cc .qrc.cxx .qrc.C - # --- # # MOC # # --- # -.hpp.moc.cpp: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ -.hh.moc.cpp: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ -.h.moc.cpp: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ - -.hpp.moc.cc: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ -.hh.moc.cc: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ -.h.moc.cc: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ - -.hpp.moc.cxx: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ -.hh.moc.cxx: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ -.h.moc.cxx: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ - -.hpp.moc.C: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ -.hh.moc.C: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ -.h.moc.C: - $(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.cpp: %.hpp + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.cpp: %.hh + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.cpp: %.h + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ + +%moc.cc: %.hpp + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.cc: %.hh + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.cc: %.h + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ + +%.moc.cxx: %.hpp + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.cxx: %.hh + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.cxx: %.h + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ + +%.moc.C: %.hpp + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.C: %.hh + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ +%.moc.C: %.h + $(AM_V_GEN)$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@ # --- # # UIC # # --- # -.ui.ui.hpp: - $(UIC) $< -o $@ +%.ui.hpp: %.ui + $(AM_V_GEN)$(UIC) $< -o $@ -.ui.ui.hh: - $(UIC) $< -o $@ +%.ui.hh: %.ui + $(AM_V_GEN)$(UIC) $< -o $@ -.ui.ui.h: - $(UIC) $< -o $@ +%.ui.h: %.ui + $(AM_V_GEN)$(UIC) $< -o $@ # --- # # RCC # # --- # -.qrc.qrc.cpp: - $(RCC) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@ - -.qrc.qrc.cc: - $(RCC) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@ +%.qrc.cpp: %.qrc + $(AM_V_GEN)$(RCC) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@ -.qrc.qrc.cxx: - $(RCC) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@ +%.qrc.cc: %.qrc + $(AM_V_GEN)$(RCC) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@ -.qrc.qrc.C: - $(RCC) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@ +%.qrc.cxx: %.qrc + $(AM_V_GEN)$(RCC) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@ -DISTCLEANFILES = $(BUILT_SOURCES) +%.qrc.C: %.qrc + $(AM_V_GEN)$(RCC) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@ diff --git a/build/build.am b/build/build.am new file mode 100644 index 00000000..5f0bdce5 --- /dev/null +++ b/build/build.am @@ -0,0 +1 @@ +dist_noinst_SCRIPTS += build/gen-git-version.sh diff --git a/build/gen-backends-am.sh b/build/gen-backends-am.sh new file mode 100755 index 00000000..f4fbb73a --- /dev/null +++ b/build/gen-backends-am.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +amfile='src/backends/backends.am' +tmpfile="$amfile.$$" + +rm -f "$tmpfile" +touch "$tmpfile" + +BACKENDS="`echo src/backends/*/configure-sub.in | sed -e 's%/configure-sub\.in%%g' | sort`" +BACKEND_REGISTRIES="`echo src/backends/*/*Register.cpp | sort`" + +tf() +{ + echo "$1" >>"$tmpfile" +} + +tf '# This is a stupid workaround for an absolute path in SYNCEVOLUTION_LIBS.' +tf '# See AUTOTOOLS-TODO for details.' +tf '@SYNCEVOLUTION_LIBS@: src/syncevo/libsyncevolution.la ; @true' +tf '' +tf "BACKENDS = $BACKENDS" +tf '' +tf "BACKEND_REGISTRIES = $BACKEND_REGISTRIES" +tf '' +tf '# backend includes' + +for backend in $BACKENDS +do + name=`echo "$backend" | sed -e 's%src/backends/%%'` + tf "include \$(top_srcdir)/$backend/$name.am" +done + +if test ! -f "$amfile" || ! cmp -s "$amfile" "$tmpfile" +then + mv "$tmpfile" "$amfile" +else + rm -f "$tmpfile" +fi diff --git a/build/gen-backends.sh b/build/gen-backends.sh new file mode 100755 index 00000000..b7d10955 --- /dev/null +++ b/build/gen-backends.sh @@ -0,0 +1,24 @@ +#! /bin/sh +# +# This script prints all configure-sub.in in src/backends +# directory to standard output. This is meant to be used +# from m4_esyscmd inside configure.ac. +# +# The motivation for this non-standard approach was that +# it allows adding new backends without touching core +# files, which should have simplified the development of +# out-of-tree backends. Now git pretty much removes +# the need for such tricks, but it's still around. + +tmpfile="configure.in.$$" +rm -f "$tmpfile" + +for sub in src/backends/*/configure-sub.in +do + echo "# vvvvvvvvvvvvvv $sub vvvvvvvvvvvvvv" >>"$tmpfile" + cat "$sub" >>"$tmpfile" + echo "# ^^^^^^^^^^^^^^ $sub ^^^^^^^^^^^^^^" >>"$tmpfile" + echo >>"$tmpfile" +done +cat "$tmpfile" +rm -f "$tmpfile" diff --git a/build/gen-git-version.sh b/build/gen-git-version.sh new file mode 100755 index 00000000..bd5c8d5e --- /dev/null +++ b/build/gen-git-version.sh @@ -0,0 +1,105 @@ +#! /bin/sh + +# This scripts takes current version as a parameter, generates the version +# and prints it to standard output - this way it is usable with m4_esyscmd, +# which can be used inside AC_INIT. The script will print the passed version if +# the following checks pass: +# - SyncEvolution source is clean (git status reports +# no "modified" files or "untracked" files, or the source +# is not in git at all) +# - the source is tagged with the version of SyncEvolution +# (git describe --tags HEAD reports something which matches, +# for example syncevolution-1-0-beta-2a for 1.0beta2a) +# - same for libsynthesis, if the SYNTHESISSRC env variable +# is set +# +# If these tests fail, the version is extended: +# +<yyyymmdd>+SE+<status>+SYSYNC+<status> +# <yyyymmdd> = date +# <status> = <hash>[+unclean] +# <hash> = shortened hash from describe (for example, 1040ffd) +# +unclean = source was dirty + +set -e + +version="$1" +checksource () +{ + dir=$1 + force=$2 + dirty= + if [ ! -d $dir/.git ]; then + return + fi + + cur=`pwd` + cd $dir + + if git status | grep -e "modified:" -e "Untracked files:" -q; then + dirty='+unclean' + fi + describe=`git describe --tags` + hash=`cat .git/HEAD | sed -e 's/ref: //'` + if [ "`echo $hash | sed -e 's/[0-9a-fA-F]//g'`" ] ; then + # contains other characters than simple hex, probably a reference: + # convert to abbreviated hash + hash=`git show-ref --abbrev --hash --verify $hash` + else + # already a hash, abbreviate + hash=`echo $hash | sed -e 's/\(......\).*/\1/'` + fi + # detect -<number of changes>-g<hash> suffix added when tag is older than HEAD + if perl -e "exit !('$describe' =~ m/-[0-9]+-[0-9a-g]{8}\$/);"; then + # remove suffix to get tag (doesn't matter if we do not pick + # the most recent one) + exact= + tag=`echo $describe | sed -e 's/-[0123456789]*-g.*//'` + else + # there is at least one tag matching HEAD; + # pick the most recent one (based on lexical sorting) + exact=1 + tag=`git show-ref --tags | grep $hash | sort | tail -1 | sed -e 's;.*refs/tags/;;'` + fi + simpletag=$tag + # Hyphens between numbers in the tag are dots in the version + # and all other hyphens can be removed. + while true; do + tmp=`echo $simpletag | sed -e 's/\([0123456789]\)-\([0123456789]\)/\1.\2/'` + if [ $tmp = $simpletag ]; then + break + else + simpletag=$tmp + fi + done + simpletag=`echo $simpletag | sed -e 's/-//g'` + if [ "$dirty" ] || [ "$force" ]; then + # previous check failed, always print hash + echo $hash$dirty + elif [ "$exact" ] && + echo $simpletag | grep -q "syncevolution${version}\$"; then + true + else + echo $hash$dirty + fi + cd $cur +} + +versionsuffix='' +syncevo=`checksource .` +if [ "$SYNTHESISSRC" ]; then + sysync=`checksource $SYNTHESISSRC $syncevo` +fi +# run check again, to get hash when only libsynthesis failed +syncevo=`checksource . $sysync` +if [ "$syncevo" ]; then + versionsuffix="+SE+$syncevo" +fi +if [ "$sysync" ]; then + versionsuffix="$versionsuffix+SYSYNC+$sysync" +fi +if [ "$versionsuffix" ]; then + versionsuffix="+`date +%Y%m%d`$versionsuffix" +fi + +# using printf, because echo -n is not portable. hopefully printf is. +printf %s "$version$versionsuffix" diff --git a/build/gen-linguas.sh b/build/gen-linguas.sh new file mode 100755 index 00000000..b8e3ceb9 --- /dev/null +++ b/build/gen-linguas.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e + +lings_new="LINGUAS.new.$$" +lings="LINGUAS" + +# create LINGUAS file: every .po is included +cd po +ls -1 *.po | sort -u | sed -e 's/.po$//' >"$lings_new" + +if test -f "$lings" && cmp -s "$lings" "$lings_new" +then + rm "$lings_new" +else + mv "$lings_new" "$lings" +fi diff --git a/configure-post.in b/configure-post.in deleted file mode 100644 index e7d71c53..00000000 --- a/configure-post.in +++ /dev/null @@ -1,194 +0,0 @@ -dnl -*- mode: Autoconf; -*- -dnl Invoke autogen.sh to produce a configure script. -dnl configure-pre.in and src/backends/*/configure-sub.in and configure-post.in come before this part - -AC_SUBST(BACKEND_CPPFLAGS) - -enable_any="no" -backend_is_enabled () { - eval echo \${enable_${1}} -} -for backend in $BACKENDS; do - if test `backend_is_enabled $backend` = "yes"; then - enable_any="yes" - SYNCEVOLUTION_MODULES="$SYNCEVOLUTION_MODULES src/backends/sync${backend}.la" - fi -done - -if test "$enable_any" = "no"; then - AC_MSG_ERROR([no backend enabled - refusing to continue: $anymissing]) -fi - -dnl glib initialization is done only if requested by some configure-sub.in, -dnl for not needed otherwise even if found -if test "$need_glib" = "yes"; then - # HAVE_GLIB (aka GLIBFOUND) are a catch-all for these - # three GNOME libs. Assume we have all three unless one of - # the checks fails. - GLIBFOUND=yes - - dnl check for glib - calling g_type_init() is expected on Maemo - PKG_CHECK_MODULES(GLIB, "glib-2.0", , GLIBFOUND=no) - # This check here is broken on Ubuntu 8.04: it calls glib-config, - # which isn't found, but the error is not detected by configure. - #if test "x${GLIBFOUND}" = "xno"; then - # PKG_CHECK_MODULES(GLIB, "glib", GLIBFOUND=yes, GLIBFOUND=no) - #fi - - PKG_CHECK_MODULES(GTHREAD, "gthread-2.0", , GLIBFOUND=no) - PKG_CHECK_MODULES(GOBJECT, "gobject-2.0", , GLIBFOUND=no) - PKG_CHECK_MODULES(GIO, "gio-2.0", , GLIBFOUND=no) - - if test "x${GLIBFOUND}" = "xyes"; then - AC_DEFINE(HAVE_GLIB, 1, [glib found]) - else - AC_ERROR([not all GNOME libraries found]) - fi - BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $GLIB_CFLAGS $GTHREAD_CFLAGS $GOBJECT_CFLAGS" -fi - -# Check for Qt if some backend needs it. -if test "$need_qt_modules"; then - AT_WITH_QT([-gui $need_qt_modules], - [$qt_config], - [$qt_misc]) -fi - -# determine from where we can get a SHA-256 implementation -have_sha="no" -if test "$GLIBFOUND" = "yes"; then - # only use glib if we need it anyway, also has to be at lease 2.16 - PKG_CHECK_MODULES(GLIB216, [glib-2.0 >= 2.16], - [AC_DEFINE(USE_SHA256, 1, [choose implementation of SHA-256]) - have_sha="glib"], - [true]) -fi -if test "$have_sha" = "no"; then - # Fallback is Mozilla NSS. In contrast to libgcrypt it has a .pc - # file and a simple API. - PKG_CHECK_MODULES(NSS, "nss", - [AC_DEFINE(USE_SHA256, 2, [choose implementation of SHA-256]) - have_sha="nss"], - [true]) -fi - -dnl figure out whether we link all code statically or as modules -AM_CONDITIONAL([ENABLE_MODULES], [test "$enable_shared" = "yes"]) -if test "$enable_shared" = "yes"; then - AC_DEFINE(ENABLE_MODULES, 1, [enable dynamically opening sync source backends]) -fi -AC_SUBST(SYNCEVOLUTION_LDADD) - -dnl CXXFLAGS gets applied to SyncEvolution and the client library. -dnl For e.g. "-Wall -Werror" this might not be such a good idea; -dnl SYNCEVOLUTION_CXXFLAGS can be used instead. It applies only -dnl to the sources in the SyncEvolution repository. -AC_SUBST(SYNCEVOLUTION_CXXFLAGS) - -dnl a quick-and-dirty way to detect compilation for the iPhone -if test "$host" = "arm-apple-darwin"; then - AC_DEFINE(IPHONE, 1, [compiling for iPhone]) - DEVICE_TYPE=iPhone -fi - -dnl --enable-evolution-compatibility -if test "$enable_evolution_compatibility" = "yes"; then - AC_DEFINE(EVOLUTION_COMPATIBILITY, 1, [avoid hard dependency on Evolution shared objects]) - # don't link against libs wrapped by eds_abi_wrapper (no longer limited to EDS alone...) - ECAL_LIBS= - EBOOK_LIBS= - EPACKAGE_LIBS= - BLUEZ_LIBS= -fi -AM_CONDITIONAL([ENABLE_EVOLUTION_COMPATIBILITY], [test "$enable_evolution_compatibility" = "yes"]) -PKG_CHECK_MODULES(LIBICAL_AVAILABLE, - libical >= 0.43, - AC_DEFINE(HAVE_LIBICAL_R, 1, [have recent enough libical with _r variants]), - pass) - -dnl --enable-developer-mode -if test "$enable_developer_mode" = "yes"; then -backendsearchdir="`pwd`/src/backends/" -else -backendsearchdir='$(libdir)'/syncevolution/backends/ -fi - -backenddir='$(libdir)'/syncevolution/backends -AC_SUBST(backenddir) -AC_SUBST(backendsearchdir) - -# for ActiveSync backend -syncevo_backenddir='$(libdir)'/syncevolution/backends -AC_SUBST(syncevo_backenddir) - -dnl This string is sent as part of the SyncML DevInf (device -dnl information) structure to the server. All SyncEvolution platforms -dnl use "SyncEvolution" as HTTP user agent and "Mod" (model), so the -dnl device type is the only way how different kinds of clients can be -dnl distinguished. -AC_DEFINE_UNQUOTED(DEVICE_TYPE, "$DEVICE_TYPE", "SyncML DevInf DevType") - -AC_CHECK_HEADERS(stdarg.h valgrind/valgrind.h execinfo.h) - -AC_DEFINE(SYNTHESIS, 1, "using Synthesis engine") - -# fallback for lack of --with-docdir support in older automake -if test ! "$docdir"; then - docdir = ${datadir}/doc/syncevolution - AC_SUBST(docdir) -fi - -AC_ARG_ENABLE(dbus-timeout-hack, - AS_HELP_STRING([--enable-dbus-timeout-hack], - [Enables code which overrides the default timeout in dbus_connection_send_with_reply() so that the method call never times out. Needed for libecal/ebook >= 2.30, so enabled by default if either of these is enabled.]), - [enable_dbus_timeout_hack=$enableval], - [if test $enable_ebook = "yes" || test $enable_ecal = "yes"; then - enable_dbus_timeout_hack="yes" - fi]) -if test "$enable_dbus_timeout_hack" = "yes"; then - AC_DEFINE(ENABLE_DBUS_TIMEOUT_HACK, 1, [overrides the default D-Bus timeout so that synchronous calls never time out]) -fi - -# Avoid hard-coding paths in backends. These names are chosen so -# that a backend can alternatively use its own top-level configure -# with PKG_CHECK_MODULES(SYNCEVOLUTION, "syncevolution") to set them. -# need absolute path, use pwd instead of relative $srcdir -SYNCEVOLUTION_CFLAGS=-I`cd $srcdir && pwd`/src -SYNCEVOLUTION_LIBS=`pwd`/src/syncevo/libsyncevolution.la -AC_SUBST(SYNCEVOLUTION_CFLAGS) -AC_SUBST(SYNCEVOLUTION_LIBS) - -AC_CONFIG_FILES( - Makefile - src/dbus/interfaces/Makefile - src/gdbus/Makefile - src/dbus/Makefile - src/dbus/glib/Makefile - src/dbus/server/Makefile - src/Makefile - src/syncevo/Makefile - src/syncevo/syncevolution.pc - src/syncevo/configs/Makefile - src/synthesis-includes/Makefile - src/gtk-ui/Makefile - po/Makefile.in - test/Makefile - src/dbus/glib/syncevo-dbus.pc) - -AC_OUTPUT - -echo -echo CONFIGURATION SUMMARY -echo "Core SyncEvolution: $enable_core" -for backend in $BACKENDS; do - eval echo $backend: \${enable_${backend}} -done -echo "DBus service: $enable_dbus_service" -echo "GNOME keyring: $enable_gnome_keyring" -echo "UI (DBus client): $enable_gui" -echo "Bluetooth transport: $have_bluetooth" -echo "GNOME Bluetooth panel plugin: $enable_gnome_bluetooth_panel" -echo "SHA-256: $have_sha" -echo "API documentation: $enable_doc" -echo "D-Bus Timeout Hack: $enable_dbus_timeout_hack" -echo diff --git a/configure-pre.in b/configure.ac index 4f661285..677ed308 100644 --- a/configure-pre.in +++ b/configure.ac @@ -8,17 +8,20 @@ dnl Invoke autogen.sh to produce a configure script. # # Starting with the 1.1 release cycle, the rpm-style # .99 pseudo-version number is used to mark a pre-release. -AC_INIT([syncevolution], [1.1.99.6]) +AC_INIT([syncevolution], [m4_esyscmd([build/gen-git-version.sh 1.1.99.6])]) # STABLE_VERSION=1.0.1+ AC_SUBST(STABLE_VERSION) +# Generate some files. +SE_GENERATE_AM_FILES +SE_GENERATE_LINGUAS + # Default value for --enable/disable-release-mode. # Determined by gen-autotools.sh based on versioning. # Official, stable releases enable it, pre-releases # disable it. # -# SyncEvolution >= 1.1.99.5: release mode by default -define([STABLE_RELEASE], [yes]) +SE_CHECK_FOR_STABLE_RELEASE # Minimum version of libsynthesis as defined in its # configure script and thus .pc files: @@ -26,7 +29,7 @@ define([SYNTHESIS_MIN_VERSION], [3.4.0.16.1]) # Line above is patched by gen-autotools.sh. Handle # both "yes" and "no". -define([STABLE_RELEASE_HELP], ifelse(STABLE_RELEASE,yes,--disable-release-mode,--enable-release-mode)) +m4_define([STABLE_RELEASE_HELP], m4_if(STABLE_RELEASE,[yes],[--disable-release-mode],[--enable-release-mode])) AC_ARG_ENABLE(release-mode, AS_HELP_STRING([STABLE_RELEASE_HELP], @@ -41,21 +44,28 @@ if test "$enable_release_mode" = "yes"; then AC_DEFINE(SYNCEVOLUTION_STABLE_RELEASE, 1, [binary is meant for end-users]) fi -AM_INIT_AUTOMAKE([tar-ustar]) +AM_INIT_AUTOMAKE([1.11.1 tar-ustar silent-rules subdir-objects -Wno-portability]) + +AM_PROG_CC_C_O + AM_MAINTAINER_MODE([enable]) # needed for nightly builds where reconfiguration fails under certain chroots AC_CONFIG_MACRO_DIR([m4]) define([SYNTHESISSRC_REPO], []) dnl Specify git revisions/branches without prefix, i.e., without 'origin'. dnl We'll sort that out below. define([SYNTHESISSRC_REVISION], [syncevolution-0.9]) -AM_CONFIG_HEADER(config.h) -AC_LIBTOOL_DLOPEN +AC_CONFIG_HEADERS(config.h) +LT_INIT([dlopen]) dnl check for programs. AC_PROG_CXX -AC_PROG_LIBTOOL AC_PROG_MAKE_SET +DK_ARG_ENABLE_WARNINGS([SYNCEVO_WFLAGS], + [-Wall], + [-pedantic -Wall -Wextra], + [G GDK GDK_PIXBUF CAIRO PANGO GTK]) + dnl default device type (see AC_DEFINE below) DEVICE_TYPE=workstation @@ -84,7 +94,7 @@ AC_ARG_WITH(syncml-engines, case $SYNCML_ENGINES in both|client) AC_DEFINE(ENABLE_SYNCML_CLIENT, 1, [SyncML client support available]);; esac case $SYNCML_ENGINES in both|server) AC_DEFINE(ENABLE_SYNCML_SERVER, 1, [SyncML server support available]);; esac -case $SYNCML_ENGINES in both|server|client) true;; *) AC_ERROR([Invalid value for --with-syncml-engines: $SYNCML_ENGINES]);; esac +case $SYNCML_ENGINES in both|server|client) true;; *) AC_MSG_ERROR([Invalid value for --with-syncml-engines: $SYNCML_ENGINES]);; esac AC_ARG_WITH(synthesis-username, AS_HELP_STRING([--with-synthesis-username=<svn username>], @@ -136,10 +146,10 @@ AC_ARG_ENABLE(evolution-compatibility, [build executables which only call Evolution via dlopen/dlsym: this avoids all hard dependencies on EDS shared objects, but might lead to crashes when their ABI changes]), enable_evolution_compatibility="$enableval", enable_evolution_compatibility="no") -AC_ARG_ENABLE(developer-mode, - AC_HELP_STRING([--enable-developer-mode], - [The dynamic loadble backend libraries is loaded from current build directory instead of the standard library path]), - enable_developer_mode="$enableval", enable_developer_mode="no") +AC_ARG_ENABLE(developer-mode, + AS_HELP_STRING([--enable-developer-mode], + [The dynamic loadble backend libraries is loaded from current build directory instead of the standard library path]), + enable_developer_mode="$enableval", enable_developer_mode="no") # Maemo hacks: # - wrap e_book_from_string() to fix invalid parameter @@ -154,18 +164,24 @@ AC_SUBST(MODIFY_SYNCCOMPARE) AC_CHECK_HEADERS(signal.h dlfcn.h) +# cppunit-config is used even when both unit tests and integration tests are disabled. +AC_PATH_PROG([CPPUNIT_CONFIG], [cppunit-config], [no]) + +test "x$CPPUNIT_CONFIG" != 'xno' || AC_MSG_ERROR("cppunit-config not found.") + # cppunit needed? -if test $enable_unit_tests = "yes" || test $enable_integration_tests = yes; then - CPPUNIT_CXXFLAGS=`cppunit-config --cflags` || AC_MSG_ERROR("cppunit-config --cflags failed - is it installed?") - CPPUNIT_LDFLAGS=`cppunit-config --libs` || AC_MSG_ERROR("cppunit-config --libs failed - is it installed?") -fi +#if test "x$enable_unit_tests" = 'xyes' || test "x$enable_integration_tests" = 'xyes' +#then + CPPUNIT_CXXFLAGS=`$CPPUNIT_CONFIG --cflags` + CPPUNIT_LDFLAGS=`$CPPUNIT_CONFIG --libs` +#fi AC_SUBST(CPPUNIT_CXXFLAGS) AC_SUBST(CPPUNIT_LDFLAGS) -if test "$enable_unit_tests" = "yes"; then +if test "x$enable_unit_tests" = 'xyes'; then AC_DEFINE(ENABLE_UNIT_TESTS, 1, [enable unit tests inside the library's source code]) fi -if test "$enable_integration_tests" = "yes"; then +if test "x$enable_integration_tests" = 'xyes'; then AC_DEFINE(ENABLE_INTEGRATION_TESTS, 1, [enable integration tests inside the final library]) fi if test "$enable_buteo_tests" = "yes"; then @@ -173,7 +189,7 @@ if test "$enable_buteo_tests" = "yes"; then need_qt_modules="$need_qt_modules dbus xml" AC_PATH_PROG(SQLITE3, sqlite3) if test -z "$SQLITE3"; then - AC_ERROR([sqlite3 not found, is required for buteo testing]) + AC_MSG_ERROR([sqlite3 not found, is required for buteo testing]) fi fi AM_CONDITIONAL([ENABLE_UNIT_TESTS], [test "$enable_unit_tests" = "yes"]) @@ -241,7 +257,7 @@ elif test "$have_libcurl" = "yes"; then fi AC_ARG_ENABLE(libcurl, - AC_HELP_STRING([--enable-libcurl], + AS_HELP_STRING([--enable-libcurl], [enable libcurl as transport layer]), [ if test "$enableval" = "yes"; then test "$have_libcurl" = "yes" || AC_MSG_ERROR([libcurl not found]) @@ -260,7 +276,7 @@ AC_ARG_ENABLE(libcurl, fi ]) AC_ARG_ENABLE(libsoup, - AC_HELP_STRING([--enable-libsoup], + AS_HELP_STRING([--enable-libsoup], [enable libsoup as transport layer]), [ if test "$enableval" = "yes"; then test "$have_libsoup" = "yes" || AC_MSG_ERROR([libsoup not found]) @@ -283,7 +299,7 @@ case "$TRANSPORT" in *libsoup*) need_glib=yes;; esac bluetooth_disabled=no AC_ARG_ENABLE(bluetooth, - AC_HELP_STRING([--enable-bluetooth], + AS_HELP_STRING([--enable-bluetooth], [enable bluetooth transport support]), [ enable_bluetooth="$enableval" if test "$enableval" = "no"; then @@ -294,7 +310,7 @@ AC_ARG_ENABLE(bluetooth, if test "$enable_bluetooth" = "yes"; then # currently we need Bluetooth and OBEX support - test "$have_bluetooth" = "yes" || AC_MSG_ERROR([openobex or bluez not found]) + test "$have_bluetooth" = "yes" || AC_MSG_ERROR([openobex or bluez not found]) AC_LANG(C) CFLAGS_old="$CFLAGS" @@ -325,7 +341,7 @@ if test "$enable_bluetooth" = "yes"; then sdp_extract_pdu_safe; void foo(void) { uint8_t *pdata = NULL; - int scanned; + int scanned; sdp_extract_pdu_safe(pdata, 100, &scanned); } ])], @@ -347,7 +363,7 @@ if test ! "$TRANSPORT" && test "$libcurl_disabled" != "yes" && test "$bluetooth_disabled" != "yes" && test "$have_bluetooth" != "yes" ; then - AC_ERROR([no transport library found, configure with --disable-libcurl --disable-libsoup --disable-bluetooth to continue anyway (only useful if users of libsyncevolution provide transport implementation)]) + AC_MSG_ERROR([no transport library found, configure with --disable-libcurl --disable-libsoup --disable-bluetooth to continue anyway (only useful if users of libsyncevolution provide transport implementation)]) fi # for libsoup we must specify the SSL certificate file outself @@ -361,7 +377,7 @@ AC_SUBST(TRANSPORT_LIBS) AC_SUBST(TRANSPORT_CFLAGS) AC_ARG_ENABLE(ssl-certificate-check, - AC_HELP_STRING([--disable-ssl-certificate-check], + AS_HELP_STRING([--disable-ssl-certificate-check], [Disable SSL certificate checking in all server *templates*. Users can still choose to enable or disable it in their configuration. This is necessary on @@ -394,7 +410,7 @@ AC_ARG_ENABLE(gui, elif test "$enableval" = "all" ; then enable_gui=all else - AC_ERROR([Unknown gui type: '$enableval']) + AC_MSG_ERROR([Unknown gui type: '$enableval']) fi ], [ enable_gui=no ]) @@ -425,8 +441,8 @@ AC_ARG_ENABLE(gnome-keyring, AS_HELP_STRING([--enable-gnome-keyring], [enables or disables support for the GNOME keyring; default is on if development files are available]), [enable_gnome_keyring="$enableval" - test "$enable_gnome_keyring" = "yes" || test "$enable_gnome_keyring" = "no" || AC_ERROR([invalid value for --enable-gnome-keyring: $enable_gnome_keyring]) - test "$enable_gnome_keyring" = "no" || test "$HAVE_KEYRING" = "yes" || AC_ERROR([gnome-keyring-1 pkg not found, needed for --enable-gnome-keyring])], + test "$enable_gnome_keyring" = "yes" || test "$enable_gnome_keyring" = "no" || AC_MSG_ERROR([invalid value for --enable-gnome-keyring: $enable_gnome_keyring]) + test "$enable_gnome_keyring" = "no" || test "$HAVE_KEYRING" = "yes" || AC_MSG_ERROR([gnome-keyring-1 pkg not found, needed for --enable-gnome-keyring])], enable_gnome_keyring="$HAVE_KEYRING") if test $enable_gnome_keyring = "yes"; then AC_DEFINE(USE_GNOME_KEYRING, 1, [define if gnome keyring should be used in dbus service]) @@ -439,24 +455,33 @@ fi ## Begin KWallet ############################## -AC_CHECK_PROGS([QMAKE], [qmake qmake-qt4]) +# first check for qmake-qt4, because qmake may point to qmake-qt3. +AC_CHECK_PROGS([QMAKE], [qmake-qt4 qmake]) -if test "$QMAKE"; then - KDEKWALLETFOUND=yes - if ! test "$KDE_KWALLET_CFLAGS"; then - KDE_KWALLET_CFLAGS="-I`kde4-config --path include` -I`kde4-config --path include`/KDE -I`$QMAKE -query QT_INSTALL_HEADERS`" - fi - if ! test "$KDE_KWALLET_LIBS"; then +if test "x$QMAKE" != 'x' +then + AC_PATH_PROG([KDE4_CONFIG], [kde4-config], [no]) + + if test "x$KDE4_CONFIG" != 'xno' + then + KDEKWALLETFOUND=yes + if ! test "$KDE_KWALLET_CFLAGS"; then + KDE_KWALLET_CFLAGS="-I`$KDE4_CONFIG --path include` -I`$KDE4_CONFIG --path include`/KDE -I`$QMAKE -query QT_INSTALL_HEADERS`" + fi + if ! test "$KDE_KWALLET_LIBS"; then KDE_KWALLET_LIBS="-lkdeui -lkdecore `pkg-config --libs QtDBus`" - fi - AC_LANG_PUSH(C++) - old_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $KDE_KWALLET_CFLAGS" - AC_CHECK_HEADERS(kwallet.h, [], [KDEKWALLETFOUND=no]) - CPPFLAGS="$old_CPPFLAGS" - AC_LANG_POP(C++) + fi + AC_LANG_PUSH(C++) + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $KDE_KWALLET_CFLAGS" + AC_CHECK_HEADERS(kwallet.h, [], [KDEKWALLETFOUND=no]) + CPPFLAGS="$old_CPPFLAGS" + AC_LANG_POP(C++) + else + KDEKWALLETFOUND=no + fi else - KDEKWALLETFOUND=no + KDEKWALLETFOUND=no fi # In contrast to the GNOME KEYRING, the KWallet is @@ -491,7 +516,7 @@ AM_CONDITIONAL([USE_KDE_KWALLET], [test "$use_kde_kwallet" = "yes"]) if test $enable_dbus_service = "yes"; then if test -z "$XSLT"; then - AC_ERROR([xsltproc not found, is required for D-Bus service]) + AC_MSG_ERROR([xsltproc not found, is required for D-Bus service]) fi PKG_CHECK_MODULES(DBUS, dbus-1, dummy=yes, AC_MSG_ERROR(libdbus-1 is required)) @@ -507,8 +532,8 @@ if test $enable_dbus_service = "yes"; then AC_ARG_ENABLE(notify, AS_HELP_STRING([--enable-notify], [send notifications for automatic sync events, using libnotify]), - [ test "$enableval" = "no" || test $HAVE_LIBNOTIFY = "yes" || AC_ERROR([required libnotify package not found]) ], - [ test $HAVE_LIBNOTIFY = "yes" || AC_ERROR([required libnotify package not found, use --disable-notify to compile without libnotify based notifications]) ]) + [ test "$enableval" = "no" || test $HAVE_LIBNOTIFY = "yes" || AC_MSG_ERROR([required libnotify package not found]) ], + [ test $HAVE_LIBNOTIFY = "yes" || AC_MSG_ERROR([required libnotify package not found, use --disable-notify to compile without libnotify based notifications]) ]) if test $HAVE_LIBNOTIFY = "yes"; then AC_DEFINE(HAS_NOTIFY, 1, [define if libnotify could be used in dbus service]) fi @@ -531,7 +556,7 @@ if test $enable_dbus_service = "yes"; then AS_HELP_STRING([--enable-mlite], [send notifications for automatic sync events, using mlite (off by default)]), [ enable_mlite="$enableval" - test "$enableval" = "no" || test $HAVE_MLITE = "yes" || AC_ERROR([required mlite package not found]) ], + test "$enableval" = "no" || test $HAVE_MLITE = "yes" || AC_MSG_ERROR([required mlite package not found]) ], [ enable_mlite="no" ]) if test $enable_mlite = "yes"; then AC_DEFINE(HAS_MLITE, 1, [define if mlite could be used in dbus service]) @@ -548,8 +573,8 @@ AC_SUBST(DBUS_CFLAGS) AC_SUBST(DBUS_LIBS) AC_SUBST(DBUS_GLIB_CFLAGS) AC_SUBST(DBUS_GLIB_LIBS) -AC_SUBST(KEYRING_CFLAGS) -AC_SUBST(KEYRING_LIBS) +AC_SUBST(KEYRING_CFLAGS) +AC_SUBST(KEYRING_LIBS) AC_SUBST(LIBNOTIFY_CFLAGS) AC_SUBST(LIBNOTIFY_LIBS) AC_SUBST(LIBEXECDIR) @@ -573,10 +598,10 @@ fi # decide which sync-ui(s) we are building: # sync-ui (in either GTK or Moblin mode) or both (in separate binaries) case $enable_gui in - all) GUI_PROGRAMS='sync-ui-gtk${EXEEXT} sync-ui-moblin${EXEEXT}'; GUI_DESKTOP_FILES="sync-gtk.desktop sync-moblin.desktop";; - gtk|moblin) GUI_PROGRAMS='sync-ui${EXEEXT}'; GUI_DESKTOP_FILES="sync.desktop";; + all) GUI_PROGRAMS='src/gtk-ui/sync-ui-gtk${EXEEXT} src/gtk-ui/sync-ui-moblin${EXEEXT}'; GUI_DESKTOP_FILES="src/gtk-ui/sync-gtk.desktop src/gtk-ui/sync-moblin.desktop";; + gtk|moblin) GUI_PROGRAMS='src/gtk-ui/sync-ui${EXEEXT}'; GUI_DESKTOP_FILES="src/gtk-ui/sync.desktop";; no) GUI_PROGRAMS=; GUI_DESKTOP_FILES=;; - *) AC_ERROR([Unknown enable_gui type: '$enable_gui']) + *) AC_MSG_ERROR([Unknown enable_gui type: '$enable_gui']) esac if test $enable_gui != "no"; then @@ -603,7 +628,7 @@ if test $enable_gui != "no"; then have_unique="yes", have_unique="no") if test $have_unique = "yes"; then - gui_modules="$gui_modules unique-1.0" + gui_modules="$gui_modules unique-1.0" AC_DEFINE(ENABLE_UNIQUE, 1, [enable single-app-instance functionality]) fi @@ -647,7 +672,7 @@ AC_ARG_WITH(rst2man, if test "$RST2MAN" = "yes"; then AC_PATH_PROG(RST2MAN, rst2man, "no") fi - test "$RST2MAN" = "no" || test -x "$RST2MAN" || AC_ERROR([--with-rst2man=$RST2MAN: tool not found])], + test "$RST2MAN" = "no" || test -x "$RST2MAN" || AC_MSG_ERROR([--with-rst2man=$RST2MAN: tool not found])], [AC_PATH_PROG(RST2MAN, rst2man, "no")]) AM_CONDITIONAL([COND_MAN_PAGES], [test "$RST2MAN" != "no"]) @@ -661,7 +686,7 @@ AC_ARG_WITH(rst2html, if test "$RST2HTML" = "yes"; then AC_PATH_PROG(RST2HTML, rst2html, "no") fi - test "$RST2HTML" = "no" || test -x "$RST2HTML" || AC_ERROR([--with-rst2html=$RST2HTML: tool not found])], + test "$RST2HTML" = "no" || test -x "$RST2HTML" || AC_MSG_ERROR([--with-rst2html=$RST2HTML: tool not found])], [AC_PATH_PROG(RST2HTML, rst2html, "no")]) AM_CONDITIONAL([COND_HTML_README], [test "$RST2HTML" != "no"]) @@ -701,23 +726,23 @@ if test "$SYNTHESISSRC" && test "$SYNTHESISSRC" != "none"; then fi fi if test -d $SYNTHESIS_SRC ; then - ( set -x; cd $SYNTHESIS_SRC && svn --username=$USERNAME switch $revarg "$SYNTHESISSRC" ) || AC_ERROR([updating from $SYNTHESISSRC failed]) + ( set -x; cd $SYNTHESIS_SRC && svn --username=$USERNAME switch $revarg "$SYNTHESISSRC" ) || AC_MSG_ERROR([updating from $SYNTHESISSRC failed]) else - (set -x; svn --username=$USERNAME checkout $revarg "$SYNTHESISSRCREV" $SYNTHESIS_SRC ) || AC_ERROR([checking out $SYNTHESISSRC failed]) + (set -x; svn --username=$USERNAME checkout $revarg "$SYNTHESISSRCREV" $SYNTHESIS_SRC ) || AC_MSG_ERROR([checking out $SYNTHESISSRC failed]) fi ;; *) if test -d $SYNTHESIS_SRC ; then - ( set -x; cd $SYNTHESIS_SRC && git fetch "$SYNTHESISSRC" ) || AC_ERROR([updating from $SYNTHESISSRC failed]) + ( set -x; cd $SYNTHESIS_SRC && git fetch "$SYNTHESISSRC" ) || AC_MSG_ERROR([updating from $SYNTHESISSRC failed]) else - ( set -x; git clone "$SYNTHESISSRC" $SYNTHESIS_SRC ) || AC_ERROR([cloning $SYNTHESISSRC failed]) + ( set -x; git clone "$SYNTHESISSRC" $SYNTHESIS_SRC ) || AC_MSG_ERROR([cloning $SYNTHESISSRC failed]) fi if test "$REVISION"; then # git 1.6 finds tags and branches without explicit prefix, 1.4.4.4 doesn't ( set -x; cd $SYNTHESIS_SRC && (git checkout "$REVISION" || git checkout "tags/$REVISION" || - git checkout "origin/$REVISION") ) || AC_ERROR([checking out $SYNTHESISSRC failed]) + git checkout "origin/$REVISION") ) || AC_MSG_ERROR([checking out $SYNTHESISSRC failed]) fi ;; esac @@ -754,9 +779,9 @@ if test $SYNTHESIS_SRC != "no-synthesis-source"; then SYNTHESIS_CFLAGS="-I$SYNTHESIS_SUBDIR/src" SYNTHESIS_LIBS="$SYNTHESIS_SUBDIR/src/libsynthesissdk.la" - if test "$enable_core" = "no" && test "$enable_gui" != "no"; then + if test "x$enable_core" = "xno" && test "x$enable_gui" != "xno"; then # SYNTHESIS_SUBDIR is ignored, at least build headers for GUI - SYNTHESIS_SUBDIR_INCLUDES=synthesis-includes + SYNTHESIS_SUBDIR_INCLUDES=src/synthesis-includes fi if test "$enable_shared" = "no"; then @@ -798,30 +823,6 @@ AC_SUBST(SYNTHESIS_ENGINE) AC_SUBST(SYNTHESIS_LIB) AC_SUBST(SYNTHESISSRC) -dnl select backends -BACKENDS="" - -# AC_ARG_ENABLE_BACKEND(BACKEND, DIR, HELP-STRING, [ACTION-IF-GIVEN], -# [ACTION-IF-NOT-GIVEN]) -# -# Same as AC_ARG_ENABLE(), but also tells configure that the -# backend exists. -# -# BACKEND = name of modules built in that dir as .la files without the -# obligatory sync prefix, e.g. "ebook" -# DIR = name of the directory inside src/backends, e.g., "evolution" -AC_DEFUN([AC_ARG_ENABLE_BACKEND], -[ - AC_ARG_ENABLE($1, $3, $4, $5) - BACKENDS="$BACKENDS $1" - BACKEND_DEFINES="$BACKEND_DEFINES ENABLE_`echo $1 | tr a-z A-Z`" - for source in $2; do - SYNCSOURCES="$SYNCSOURCES backends/$2/sync$1.la" - done -]) -AC_SUBST(SYNCSOURCES) -AC_SUBST(BACKEND_DEFINES) - BACKEND_CPPFLAGS="$SYNTHESIS_CFLAGS $EPACKAGE_CFLAGS $EBOOK_CFLAGS $ECAL_CFLAGS $GLIB_CFLAGS $BOOST_CPPFLAGS" AC_SUBST(BACKEND_CPPFLAGS) @@ -833,8 +834,8 @@ PKG_CHECK_MODULES(GNOMEBLUETOOTH, [gnome-bluetooth-1.0 >= 2.27.6], AC_SUBST(GNOMEBLUETOOTH_CFLAGS) AC_SUBST(GNOMEBLUETOOTH_DIR) -AC_ARG_ENABLE(gnome-bluetooth-panel-plugin, - AC_HELP_STRING([--enable-gnome-bluetooth-panel-plugin], +AC_ARG_ENABLE(gnome-bluetooth-panel-plugin, + AS_HELP_STRING([--enable-gnome-bluetooth-panel-plugin], [GNOME Bluetooth panel plugin adding a "sync" button for paired devices (off by default)]), [enable_gnome_bluetooth_panel="$enableval"], [enable_gnome_bluetooth_panel="no"] @@ -843,14 +844,219 @@ if test "$enable_gnome_bluetooth_panel" = "yes"; then test "$have_gbt" = "yes" || AC_MSG_ERROR([--enable-gnome-bluetooth-panel requires pkg-config information for gnome-bluetooth-1.0 >= 2.27.6 which was not found]) fi -AC_CONFIG_FILES(src/gnome-bluetooth/Makefile) AM_CONDITIONAL([ENABLE_GNOME_BLUETOOTH_PANEL], [test "$have_gbt" = "yes" && test "$enable_gnome_bluetooth_panel" = "yes"]) AC_ARG_ENABLE(doc, - AC_HELP_STRING([--enable-doc], + AS_HELP_STRING([--enable-doc], [generate backend and DBus API documentation]), enable_doc="$enableval", enable_doc="no") - + AM_CONDITIONAL([COND_DOC], [test "$enable_doc" != "no"]) -dnl src/backends/*/configure-sub.in and configure-post.in follow +dnl add backends stuff. +SE_ADD_BACKENDS + +dnl -*- mode: Autoconf; -*- +dnl Invoke autogen.sh to produce a configure script. + +AC_ARG_ENABLE(qt-dbus, + AS_HELP_STRING([--enable-qt-dbus], + [build Qt bindings for D-Bus]), + enable_qt_dbus="$enableval", enable_qt_dbus="no") + +if test "$enable_qt_dbus" = "yes"; then + AC_DEFINE(ENABLE_QT_DBUS, 1, [Qt D-Bus bindings available]) + need_qt_modules="$need_qt_modules +dbus" + AC_PATH_PROG([QDBUSXML_TO_CPP], [qdbusxml2cpp], [no]) + test "x$QDBUSXML_TO_CPP" != 'xno' || AC_MSG_ERROR([--enable-qt-dbus requires qdbusxml2cpp, which was not found]) +fi + +AM_CONDITIONAL([ENABLE_QT_DBUS], [test "$enable_qt_dbus" = "yes"]) + +AC_SUBST(QT_DBUS_LIBS) +AC_CONFIG_FILES([src/dbus/qt/syncevolution-qt-dbus.pc]) + +dnl -*- mode: Autoconf; -*- +dnl Invoke autogen.sh to produce a configure script. +dnl configure-pre.in and src/backends/*/configure-sub.in and configure-post.in come before this part + +AC_SUBST(BACKEND_CPPFLAGS) + +enable_any="no" +backend_is_enabled () { + eval echo \${enable_${1}} +} +for backend in $BACKENDS; do + if test `backend_is_enabled $backend` = "yes"; then + enable_any="yes" + SYNCEVOLUTION_MODULES="$SYNCEVOLUTION_MODULES src/backends/sync${backend}.la" + fi +done + +if test "$enable_any" = "no"; then + AC_MSG_ERROR([no backend enabled - refusing to continue: $anymissing]) +fi + +dnl glib initialization is done only if requested by some configure-sub.in, +dnl for not needed otherwise even if found +if test "$need_glib" = "yes"; then + # HAVE_GLIB (aka GLIBFOUND) are a catch-all for these + # three GNOME libs. Assume we have all three unless one of + # the checks fails. + GLIBFOUND=yes + + dnl check for glib - calling g_type_init() is expected on Maemo + PKG_CHECK_MODULES(GLIB, "glib-2.0", , GLIBFOUND=no) + # This check here is broken on Ubuntu 8.04: it calls glib-config, + # which isn't found, but the error is not detected by configure. + #if test "x${GLIBFOUND}" = "xno"; then + # PKG_CHECK_MODULES(GLIB, "glib", GLIBFOUND=yes, GLIBFOUND=no) + #fi + + PKG_CHECK_MODULES(GTHREAD, "gthread-2.0", , GLIBFOUND=no) + PKG_CHECK_MODULES(GOBJECT, "gobject-2.0", , GLIBFOUND=no) + PKG_CHECK_MODULES(GIO, "gio-2.0", , GLIBFOUND=no) + + if test "x${GLIBFOUND}" = "xyes"; then + AC_DEFINE(HAVE_GLIB, 1, [glib found]) + else + AC_MSG_ERROR([not all GNOME libraries found]) + fi + BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $GLIB_CFLAGS $GTHREAD_CFLAGS $GOBJECT_CFLAGS" +fi + +# Check for Qt if some backend needs it. +if test "$need_qt_modules"; then + AT_WITH_QT([-gui $need_qt_modules], + [$qt_config], + [$qt_misc]) +fi + +# determine from where we can get a SHA-256 implementation +have_sha="no" +if test "$GLIBFOUND" = "yes"; then + # only use glib if we need it anyway, also has to be at lease 2.16 + PKG_CHECK_MODULES(GLIB216, [glib-2.0 >= 2.16], + [AC_DEFINE(USE_SHA256, 1, [choose implementation of SHA-256]) + have_sha="glib"], + [true]) +fi +if test "$have_sha" = "no"; then + # Fallback is Mozilla NSS. In contrast to libgcrypt it has a .pc + # file and a simple API. + PKG_CHECK_MODULES(NSS, "nss", + [AC_DEFINE(USE_SHA256, 2, [choose implementation of SHA-256]) + have_sha="nss"], + [true]) +fi + +dnl figure out whether we link all code statically or as modules +AM_CONDITIONAL([ENABLE_MODULES], [test "$enable_shared" = "yes"]) +if test "$enable_shared" = "yes"; then + AC_DEFINE(ENABLE_MODULES, 1, [enable dynamically opening sync source backends]) +fi +AC_SUBST(SYNCEVOLUTION_LDADD) + +dnl CXXFLAGS gets applied to SyncEvolution and the client library. +dnl For e.g. "-Wall -Werror" this might not be such a good idea; +dnl SYNCEVOLUTION_CXXFLAGS can be used instead. It applies only +dnl to the sources in the SyncEvolution repository. +AC_SUBST(SYNCEVOLUTION_CXXFLAGS) + +dnl a quick-and-dirty way to detect compilation for the iPhone +if test "$host" = "arm-apple-darwin"; then + AC_DEFINE(IPHONE, 1, [compiling for iPhone]) + DEVICE_TYPE=iPhone +fi + +dnl --enable-evolution-compatibility +if test "$enable_evolution_compatibility" = "yes"; then + AC_DEFINE(EVOLUTION_COMPATIBILITY, 1, [avoid hard dependency on Evolution shared objects]) + # don't link against libs wrapped by eds_abi_wrapper (no longer limited to EDS alone...) + ECAL_LIBS= + EBOOK_LIBS= + EPACKAGE_LIBS= + BLUEZ_LIBS= +fi +AM_CONDITIONAL([ENABLE_EVOLUTION_COMPATIBILITY], [test "$enable_evolution_compatibility" = "yes"]) +PKG_CHECK_MODULES(LIBICAL_AVAILABLE, + libical >= 0.43, + AC_DEFINE(HAVE_LIBICAL_R, 1, [have recent enough libical with _r variants]), + pass) + +dnl --enable-developer-mode +if test "$enable_developer_mode" = "yes"; then +BACKENDS_SEARCH_DIRECTORY="`pwd`/src/backends/" +else +BACKENDS_SEARCH_DIRECTORY='$(libdir)/syncevolution/backends/' +fi + +BACKENDS_DIRECTORY='$(libdir)/syncevolution/backends' +AC_SUBST(BACKENDS_DIRECTORY) +AC_SUBST(BACKENDS_SEARCH_DIRECTORY) + +# for ActiveSync backend +syncevo_backenddir='$(libdir)'/syncevolution/backends +AC_SUBST(syncevo_backenddir) + +dnl This string is sent as part of the SyncML DevInf (device +dnl information) structure to the server. All SyncEvolution platforms +dnl use "SyncEvolution" as HTTP user agent and "Mod" (model), so the +dnl device type is the only way how different kinds of clients can be +dnl distinguished. +AC_DEFINE_UNQUOTED(DEVICE_TYPE, "$DEVICE_TYPE", "SyncML DevInf DevType") + +AC_CHECK_HEADERS(stdarg.h valgrind/valgrind.h execinfo.h) + +AC_DEFINE(SYNTHESIS, 1, "using Synthesis engine") + +# fallback for lack of --with-docdir support in older automake +if test ! "$docdir"; then + docdir = ${datadir}/doc/syncevolution + AC_SUBST(docdir) +fi + +AC_ARG_ENABLE(dbus-timeout-hack, + AS_HELP_STRING([--enable-dbus-timeout-hack], + [Enables code which overrides the default timeout in dbus_connection_send_with_reply() so that the method call never times out. Needed for libecal/ebook >= 2.30, so enabled by default if either of these is enabled.]), + [enable_dbus_timeout_hack=$enableval], + [if test $enable_ebook = "yes" || test $enable_ecal = "yes"; then + enable_dbus_timeout_hack="yes" + fi]) +if test "$enable_dbus_timeout_hack" = "yes"; then + AC_DEFINE(ENABLE_DBUS_TIMEOUT_HACK, 1, [overrides the default D-Bus timeout so that synchronous calls never time out]) +fi + +# Avoid hard-coding paths in backends. These names are chosen so +# that a backend can alternatively use its own top-level configure +# with PKG_CHECK_MODULES(SYNCEVOLUTION, "syncevolution") to set them. +# need absolute path, use pwd instead of relative $srcdir +SYNCEVOLUTION_CFLAGS=-I`cd $srcdir && pwd`/src +SYNCEVOLUTION_LIBS=`pwd`/src/syncevo/libsyncevolution.la +AC_SUBST(SYNCEVOLUTION_CFLAGS) +AC_SUBST(SYNCEVOLUTION_LIBS) + +AC_CONFIG_FILES([ + Makefile + src/syncevo/syncevolution.pc + src/synthesis-includes/Makefile + po/Makefile.in + src/dbus/glib/syncevo-dbus.pc +]) +AC_OUTPUT + +echo +echo CONFIGURATION SUMMARY +echo "Core SyncEvolution: $enable_core" +for backend in $BACKENDS; do + eval echo $backend: \${enable_${backend}} +done +echo "DBus service: $enable_dbus_service" +echo "GNOME keyring: $enable_gnome_keyring" +echo "UI (DBus client): $enable_gui" +echo "Bluetooth transport: $have_bluetooth" +echo "GNOME Bluetooth panel plugin: $enable_gnome_bluetooth_panel" +echo "SHA-256: $have_sha" +echo "API documentation: $enable_doc" +echo "D-Bus Timeout Hack: $enable_dbus_timeout_hack" +echo diff --git a/gen-autotools.sh b/gen-autotools.sh deleted file mode 100755 index 8b7ab027..00000000 --- a/gen-autotools.sh +++ /dev/null @@ -1,178 +0,0 @@ -#! /bin/sh -# -# This script generates the autotools configure.in and -# Makefile.am files from the information provided by -# SyncEvolution and backends in src/backends. The -# motivation for this non-standard approach was that -# it allows adding new backends without touching core -# files, which should have simplified the development of -# out-of-tree backends. Now git pretty much removes -# the need for such tricks, but it's still around. - -# Another reason for gen-autotools.sh is that it generates -# the version in the configure script. This cannot be -# done inside the script because autoconf expects a -# literal string, not some kind of variable. -# -# To use the version specified in AC_INIT() unmodified, -# the following checks must pass: -# - SyncEvolution source is clean (git status reports -# no "modified" files or "untracked" files, or the source -# is not in git at all) -# - the source is tagged with the version of SyncEvolution -# (git describe --tags HEAD reports something which matches, -# for example syncevolution-1-0-beta-2a for 1.0beta2a) -# - same for libsynthesis, if the SYNTHESISSRC env variable -# is set -# -# If these tests fail, the version is extended: -# +<yyyymmdd>+SE+<status>+SYSYNC+<status> -# <yyyymmdd> = date -# <status> = <hash>[+unclean] -# <hash> = shortened hash from describe (for example, 1040ffd) -# +unclean = source was dirty - -set -e - -version=`grep '^AC_INIT' configure-pre.in | sed -e 's/.*\[\(.*\)\])/\1/'` -checksource () { - dir=$1 - force=$2 - dirty= - if [ ! -d $dir/.git ]; then - return - fi - - cur=`pwd` - cd $dir - - if git status | grep -e "modified:" -e "Untracked files:" -q; then - dirty=+unclean - fi - describe=`git describe --tags` - hash=`cat .git/HEAD | sed -e 's/ref: //'` - if [ "`echo $hash | sed -e 's/[0-9a-fA-F]//g'`" ] ; then - # contains other characters than simple hex, probably a reference: - # convert to abbreviated hash - hash=`git show-ref --abbrev --hash --verify $hash` - else - # already a hash, abbreviate - hash=`echo $hash | sed -e 's/\(......\).*/\1/'` - fi - # detect -<number of changes>-g<hash> suffix added when tag is older than HEAD - if perl -e "exit !('$describe' =~ m/-[0-9]+-[0-9a-g]{8}\$/);"; then - # remove suffix to get tag (doesn't matter if we do not pick - # the most recent one) - exact= - tag=`echo $describe | sed -e 's/-[0123456789]*-g.*//'` - else - # there is at least one tag matching HEAD; - # pick the most recent one (based on lexical sorting) - exact=1 - tag=`git show-ref --tags | grep $hash | sort | tail -1 | sed -e 's;.*refs/tags/;;'` - fi - simpletag=$tag - # Hyphens between numbers in the tag are dots in the version - # and all other hyphens can be removed. - while true; do - tmp=`echo $simpletag | sed -e 's/\([0123456789]\)-\([0123456789]\)/\1.\2/'` - if [ $tmp = $simpletag ]; then - break - else - simpletag=$tmp - fi - done - simpletag=`echo $simpletag | sed -e 's/-//g'` - if [ "$dirty" ] || [ "$force" ]; then - # previous check failed, always print hash - echo $hash$dirty - elif [ "$exact" ] && - echo $simpletag | grep -q "syncevolution${version}\$"; then - true - else - echo $hash$dirty - fi - cd $cur -} - -versionsuffix= -syncevo=`checksource .` -if [ "$SYNTHESISSRC" ]; then - sysync=`checksource $SYNTHESISSRC $syncevo` -fi -# run check again, to get hash when only libsynthesis failed -syncevo=`checksource . $sysync` -if [ "$syncevo" ]; then - versionsuffix=+SE+$syncevo -fi -if [ "$sysync" ]; then - versionsuffix=$versionsuffix+SYSYNC+$sysync -fi -if [ "$versionsuffix" ]; then - versionsuffix=+`date +%Y%m%d`$versionsuffix -fi - -# don't touch final output file unless new -# content is different -update () { - if [ ! "$GEN_AUTOTOOLS_SET_VERSION" ]; then - # ignore AC_INIT because it - # contains a version number including git hashes, - # thus changes on each commit and forces a recompile - diffargs=--ignore-matching-lines=^AC_INIT - else - # a version change due to that must be set up - # with autogen.sh, which disables this check - diffargs= - fi - - if [ -f $1 ] && diff $diffargs $1 $2; then - rm $2 - else - echo gen-autotools.sh: $1 updated - mv $2 $1 - fi -} - -# generate configure.in from main configure-*.in pieces -# and all backend configure-sub.in pieces -out=configure.in -tmpfile=configure.in.$$ -rm -f $tmpfile -sed -e "s/^\\(AC_INIT.*\\)\\[\\(.*\\)\\]/\\1[\\2$versionsuffix]/" configure-pre.in >>$tmpfile - -# Very simplistic detection of pre-releases: -# either the code isn't clean or properly tagged (versionsuffix non-empty) -# or the version contains "99" (part of the rpm-style versioning scheme). -if [ ! "$versionsuffix" ] && ! grep 'AC_INIT' $tmpfile | grep -q 99; then - perl -pi -e 's/define\(\[STABLE_RELEASE\], \[no\]\)/define([STABLE_RELEASE], [yes])/' $tmpfile -fi - -BACKENDS= -SUBS= -for sub in `find -L src -name configure-sub.in`; do - case $sub in src/backends/*) - BACKENDS="$BACKENDS `dirname $sub | sed -e 's;^src/;;'`";; - esac - SUBS="$SUBS $sub" - echo "# vvvvvvvvvvvvvv $sub vvvvvvvvvvvvvv" >>$tmpfile - cat $sub >>$tmpfile - echo "AC_CONFIG_FILES(`echo $sub | sed -e s/configure-sub.in/Makefile/`)" >>$tmpfile - echo "# ^^^^^^^^^^^^^^ $sub ^^^^^^^^^^^^^^" >>$tmpfile - echo >>$tmpfile -done -cat configure-post.in >>$tmpfile -update $out $tmpfile - -TEMPLATE_FILES=`cd src && find templates -type f \( -name README -o -name '*.png' -o -name '*.svg' -o -name '*.ini' \) | sort` -TEMPLATE_FILES=`echo $TEMPLATE_FILES` - -# create src/Makefile.am file -sed -e "s;@BACKEND_REGISTRIES@;`echo src/backends/*/*Register.cpp | sed -e s%src/%%g`;" \ - -e "s;@BACKENDS@;$BACKENDS;" \ - -e "s;@TEMPLATE_FILES@;$TEMPLATE_FILES;" \ - src/Makefile-gen.am >src/Makefile.am.new.$$ -update src/Makefile.am src/Makefile.am.new.$$ - -# create LINGUAS file: every .po is included -(cd po && ls -1 *.po | sort -u | sed -e 's/.po$//' > LINGUAS.new.$$ && update LINGUAS LINGUAS.new.$$) diff --git a/m4-repo/dk-warn.m4 b/m4-repo/dk-warn.m4 new file mode 100644 index 00000000..90243bd8 --- /dev/null +++ b/m4-repo/dk-warn.m4 @@ -0,0 +1,114 @@ +## Copyright (c) 2004-2007 Daniel Elstner <daniel.kitta@gmail.com> +## +## This file is part of danielk's Autostuff. +## +## danielk's Autostuff 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 2 of the License, or (at +## your option) any later version. +## +## danielk's Autostuff 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 danielk's Autostuff; if not, write to the Free Software Foundation, +## Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +#serial 20070116 + +## DK_ARG_ENABLE_WARNINGS(variable, min-flags, max-flags, [deprecation-prefixes]) +## +## Provide the --enable-warnings configure argument, set to "min" by default. +## <min-flags> and <max-flags> should be space-separated lists of compiler +## warning flags to use with --enable-warnings=min or --enable-warnings=max, +## respectively. Warning level "fatal" is the same as "max" but in addition +## enables -Werror mode. +## +## If not empty, <deprecation-prefixes> should be a list of module prefixes +## which is expanded to -D<module>_DISABLE_DEPRECATED flags if fatal warnings +## are enabled, too. +## +AC_DEFUN([DK_ARG_ENABLE_WARNINGS], +[dnl +m4_if([$3],, [AC_FATAL([3 arguments expected])])[]dnl +dnl +AC_ARG_ENABLE([warnings], [AS_HELP_STRING( + [--enable-warnings=@<:@min|max|fatal|no@:>@], + [control compiler pickyness @<:@min@:>@])], + [dk_enable_warnings=$enableval], + [dk_enable_warnings=min])[]dnl + +dk_lang= +case $ac_compile in + *'$CXXFLAGS '*) + dk_lang='C++' + dk_cc=$CXX + dk_conftest=conftest.${ac_ext-cc} + ;; + *'$CFLAGS '*) + dk_lang=C + dk_cc=$CC + dk_conftest=conftest.${ac_ext-c} + ;; +esac + +AS_IF([test "x$dk_lang" != x], +[ + AC_MSG_CHECKING([which $dk_lang compiler warning flags to use]) + + case $dk_enable_warnings in + no) dk_warning_flags=;; + max) dk_warning_flags="$3";; + fatal) dk_warning_flags="$3 -Werror";; + *) dk_warning_flags="$2";; + esac + + dk_deprecation_flags= +m4_if([$4],,, [ + AS_IF([test "x$dk_enable_warnings" = xfatal], + [ + dk_deprecation_prefixes="$4" + for dk_prefix in $dk_deprecation_prefixes + do + dk_deprecation_flags="${dk_deprecation_flags}-D${dk_prefix}_DISABLE_DEPRECATED " + done + ]) +])[]dnl + dk_tested_flags= + + AS_IF([test "x$dk_warning_flags" != x], + [ + # Keep in mind that the dummy source must be devoid of any + # problems that might cause diagnostics. + AC_LANG_CONFTEST([AC_LANG_SOURCE( + [[int main(int argc, char** argv) { return (argv != 0) ? argc : 0; }]])]) + + for dk_flag in $dk_warning_flags + do + # Test whether the compiler accepts the flag. GCC doesn't bail + # out when given an unsupported flag but prints a warning, so + # check the compiler output instead. + dk_cc_out=`$dk_cc $dk_tested_flags $dk_flag -c "$dk_conftest" 2>&1 || echo failed` + rm -f "conftest.${OBJEXT-o}" + + AS_IF([test "x$dk_cc_out" = x], + [ + AS_IF([test "x$dk_tested_flags" = x], + [dk_tested_flags=$dk_flag], + [dk_tested_flags="$dk_tested_flags $dk_flag"]) + ], [ + echo "$dk_cc_out" >&AS_MESSAGE_LOG_FD + ]) + done + + rm -f "$dk_conftest" + ]) + dk_all_flags=$dk_deprecation_flags$dk_tested_flags + AC_SUBST([$1], [$dk_all_flags]) + + test "x$dk_all_flags" != x || dk_all_flags=none + AC_MSG_RESULT([$dk_all_flags]) +]) +]) diff --git a/m4-repo/se_macros.m4 b/m4-repo/se_macros.m4 new file mode 100644 index 00000000..b46625b9 --- /dev/null +++ b/m4-repo/se_macros.m4 @@ -0,0 +1,173 @@ +#serial 20110803 + +## _SE_VERSIONS(MAJOR_VERSION, MINOR_VERSION, MICRO_VERSION, NANO_VERSION) +## +## exports MICRO_VERSION and NANO_VERSION to se_test_micro_version and +## se_test_nano_version defines respectively. If any of passed parameters are +## empty, those defines are defined as '0'. MAJOR_VERSION and MINOR_VERSION are +## ignored. +## +m4_define([_SE_VERSIONS], + [dnl + m4_ifval([$3], + [dnl nonempty part + m4_define([se_test_micro_version], [$3]) + ], + [dnl empty part + m4_define([se_test_micro_version], [0]) + ] + )[]dnl + m4_ifval([$4], + [dnl nonempty part + m4_define([se_test_nano_version], [$4]) + ], + [dnl empty part + m4_define([se_test_nano_version], [0]) + ] + )[]dnl + ] + )[]dnl + +## SE_CHECK_FOR_STABLE_RELEASE +## +## No-op if STABLE_RELEASE is already defined. +## Defines STABLE_RELEASE to 'yes' if nano and micro versions are greater or +## equal 99.5. (So 1.1.99.5b is counted as table release.) +## If above condition is not true then STABLE_RELEASE is defined to 'yes' if +## current version is not dirty (nothing is appended by gen-git-version.sh). +## If above fails, then STABLE_RELEASE is defined to 'no'. +## +AC_DEFUN([SE_CHECK_FOR_STABLE_RELEASE], + [m4_ifndef([STABLE_RELEASE], + [dnl ifndef part + m4_define([se_test_plus_index], m4_index(AC_PACKAGE_VERSION, [+]))[]dnl + m4_if(se_test_plus_index, [-1], + [dnl if part + m4_define([se_test_version], AC_PACKAGE_VERSION) + ], + [dnl else part + m4_define([se_test_version], m4_substr(AC_PACKAGE_VERSION, [0], se_test_plus_index)) + m4_define([se_test_dirty_version], [yes]) + ] + )[]dnl + _SE_VERSIONS(m4_bpatsubst(se_test_version, [[^0-9A-Za-z]+], [,]))[]dnl + + m4_if(se_test_micro_version, [99], + [dnl if part + m4_define([se_test_nano_number], m4_translit(se_test_nano_version, [A-Za-z])) + m4_if(m4_eval(se_test_nano_number [>= 5]), [1], + [dnl if part + m4_define([STABLE_RELEASE], [yes]) + ] + ) + ], + [dnl else part + m4_ifndef([se_test_dirty_version], + [dnl ifndef part + m4_define([STABLE_RELEASE], [yes]) + ] + ) + ] + )[]dnl + m4_ifndef([STABLE_RELEASE], + [dnl ifndef part + m4_define([STABLE_RELEASE], [no]) + ] + ) + dnl macros cleanup + m4_ifdef([se_test_plus_index], + [dnl ifdef part + m4_undefine([se_test_plus_index]) + ] + )[]dnl + m4_ifdef([se_test_version], + [dnl ifdef part + m4_undefine([se_test_version]) + ] + )[]dnl + m4_ifdef([se_test_dirty_version], + [dnl ifdef part + m4_undefine([se_test_dirty_version]) + ] + )[]dnl + m4_ifdef([se_test_micro_version], + [dnl ifdef part + m4_undefine([se_test_micro_version]) + ] + )[]dnl + m4_ifdef([se_test_nano_version], + [dnl ifdef part + m4_undefine([se_test_nano_version]) + ] + )[]dnl + m4_ifdef([se_test_nano_number], + [dnl ifdef part + m4_undefine([se_test_nano_number]) + ] + )[]dnl + ] + )[]dnl + ] + ) + +## SE_ENABLE_BACKENDS_PRE +## +## Marks BACKEND_DEFINES and SYNCSOURCES as variables to be substituted. +## For internal use only. +## +AC_DEFUN([SE_ENABLE_BACKENDS_PRE], + [AC_SUBST(SYNCSOURCES) + AC_SUBST(BACKEND_DEFINES) + BACKENDS='' + BACKEND_DEFINES='' + SYNCSOURCES='' + ]) + +## SE_ARG_ENABLE_BACKEND(BACKEND, DIR, HELP-STRING, [ACTION-IF-GIVEN], +## [ACTION-IF-NOT-GIVEN]) +## +## Same as AC_ARG_ENABLE(), but also tells configure that the +## backend exists. +## +## BACKEND = name of modules built in that dir as .la files without the +## obligatory sync prefix, e.g. "ebook" +## DIR = name of the directory inside src/backends, e.g., "evolution" +## +AC_DEFUN([SE_ARG_ENABLE_BACKEND], + [AC_REQUIRE([SE_ENABLE_BACKENDS_PRE]) + AC_ARG_ENABLE($1, $3, $4, $5) + BACKENDS="$BACKENDS $1" + BACKEND_DEFINES="$BACKEND_DEFINES ENABLE_[]m4_translit($1, [a-z], [A-Z])" + for source in $2 + do + SYNCSOURCES="$SYNCSOURCES src/backends/$2/sync$1.la" + done + ] + ) + +## SE_ADD_BACKENDS +## +## Adds backends available under src/backends. See build/gen-backends.sh script. +## +AC_DEFUN([SE_ADD_BACKENDS], + [m4_esyscmd(build/gen-backends.sh) + ] + ) + +## SE_GENERATE_AM_FILES +## +## Generates some .am files needed by automake. +## +AC_DEFUN([SE_GENERATE_AM_FILES], + [m4_syscmd(build/gen-backends-am.sh) + ] + ) + +## SE_GENERATE_LINGUAS +## +## Generates LINGUAS file. +## +AC_DEFUN([SE_GENERATE_LINGUAS], + [m4_syscmd(build/gen-linguas.sh) + ] + ) diff --git a/po/.gitignore b/po/.gitignore deleted file mode 100644 index 9625334b..00000000 --- a/po/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/Makefile.in.in -/LINGUAS -/POTFILES -/stamp-it diff --git a/po/LINGUAS.README b/po/LINGUAS.README new file mode 100644 index 00000000..4ad05aa2 --- /dev/null +++ b/po/LINGUAS.README @@ -0,0 +1,6 @@ +For translators: + +LINGUAS file is generated, so putting .po file here is enough. + +To test translation please run ./autogen.sh in top level +directory of the project. diff --git a/setup-variables.am b/setup-variables.am new file mode 100644 index 00000000..ffc3df18 --- /dev/null +++ b/setup-variables.am @@ -0,0 +1,49 @@ +## This file just specifies all variables used in entire project. +## If any of them was specified before this file is included then those ones +## won't change the value. +## +## The reason for it is that many files are using BUILT_SOURCES, CLEANFILES and +## other variables. This file allows them to harmlessly append stuff +## to them without worrying whether the variable was defined earlier. + +# clean variables +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +MOSTLYCLEANFILES = + + +# standard arch dependent pkg-config dir +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = + + +# standard variables with standard prefixes +dist_doc_DATA = +dist_noinst_DATA = +dist_pkgdata_DATA = +doc_DATA = + +lib_LTLIBRARIES = +noinst_LTLIBRARIES = + +bin_PROGRAMS = +libexec_PROGRAMS = +noinst_PROGRAMS = + +bin_SCRIPTS = +dist_noinst_SCRIPTS = +libexec_SCRIPTS = +nodist_bin_SCRIPTS = + + +# other +all_dist_hooks = +all_local_installchecks = +all_phonies = +BUILT_SOURCES = +DIST_SUBDIRS = +EXTRA_DIST = +EXTRA_PROGRAMS = +SUBDIRS = +TESTS = diff --git a/src/.cvsignore b/src/.cvsignore deleted file mode 100644 index 5ba731a8..00000000 --- a/src/.cvsignore +++ /dev/null @@ -1,13 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -syncevolution -test -*.log -test*.diff -*.test.vcf -synclog.txt -client-api -client-api.build -normalize_vcard diff --git a/src/.gitignore b/src/.gitignore deleted file mode 100644 index ea2631f8..00000000 --- a/src/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -/Makefile.am -/syncevolution -/synccompare -/client-test -/build-synthesis -/syncevo-http-server -/syncevo-dbus-server -/syncevo-phone-config -/testcases diff --git a/src/Makefile-gen.am b/src/Makefile-gen.am deleted file mode 100644 index 9c3bb421..00000000 --- a/src/Makefile-gen.am +++ /dev/null @@ -1,350 +0,0 @@ -include $(top_srcdir)/m4-repo/autotroll.mk - -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 = -CLEANFILES = -BUILT_SOURCES = - -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_DBUS -SUBDIRS += gdbus -endif -SUBDIRS += dbus -if COND_GUI -SUBDIRS += gtk-ui -else -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) - -if COND_DBUS -nodist_bin_SCRIPTS += syncevo-http-server -endif -syncevo-http-server: $(srcdir)/../test/syncevo-http-server.py - cp $< $@ -CLEANFILES += syncevo-http-server - -nodist_bin_SCRIPTS += syncevo-phone-config -syncevo-phone-config: $(srcdir)/../test/syncevo-phone-config.py - cp $< $@ -CLEANFILES += syncevo-phone-config - -SYNCEVOLUTION_DEP = -if ENABLE_MODULES -else -SYNCEVOLUTION_LDADD += $(SYNCSOURCES) -SYNCEVOLUTION_DEP += $(SYNCSOURCES) -endif -EXTRA_DIST = shlibs.local Makefile-gen.am - -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 = -Wl,-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 = $(CORE_LDADD) $(KEYRING_LIBS) $(KDE_KWALLET_LIBS) -if COND_DBUS -syncevolution_LDADD += gdbus/libgdbussyncevo.la -endif -syncevolution_LDFLAGS = $(CORE_LD_FLAGS) $(DBUS_LIBS) -syncevolution_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(KEYRING_CFLAGS) -I$(srcdir)/gdbus $(DBUS_CFLAGS) $(KDE_KWALLET_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 - [ ! -L templates ] || rm templates - -# 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) - -# Do the linking here, as with all SyncEvolution executables. -# Sources are compiled in dbus/server. -if COND_DBUS -libexec_PROGRAMS += syncevo-dbus-server - -syncevo_dbus_server_SOURCES = \ - $(CORE_SOURCES) -if ENABLE_UNIT_TESTS -nodist_syncevo_dbus_server_SOURCES = ../test/test.cpp -endif - -syncevo_dbus_server_LDADD = dbus/server/libsyncevodbusserver.la gdbus/libgdbussyncevo.la $(CORE_LDADD) $(KEYRING_LIBS) $(LIBNOTIFY_LIBS) $(MLITE_LIBS) $(KDE_KWALLET_LIBS) $(DBUS_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) $(MLITE_CFLAGS) $(KDE_KWALLET_CFLAGS) -syncevo_dbus_server_LDFLAGS = $(CORE_LD_FLAGS) $(LIBSOUP_LIBS) -syncevo_dbus_server_DEPENDENCIES = dbus/server/libsyncevodbusserver.la gdbus/libgdbussyncevo.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 \ - CmdlineSyncClient.cpp \ - ../test/ClientTest.cpp \ - ../test/ClientTest.h \ - ../test/client-test-main.cpp \ - $(CORE_SOURCES) -nodist_client_test_SOURCES = ../test/test.cpp - -if ENABLE_BUTEO_TESTS -client_test_SOURCES += client-test-buteo.h -client_test_SOURCES += client-test-buteo.cpp -nodist_client_test_SOURCES += client-test-buteo.moc.cpp -endif - -# list of test file base files -# -# Generated files (testcases/eds_event.ics.funambol.tem) are derived from -# the original base file ($(srcdir)/test/testcases/eds_event.ics) by -# applying a patch ($(srcdir)/test/testcases/eds_event.ics.funambol.tem.patch). -CLIENT_LIB_TEST_FILES = \ - testcases/lcs/file1.txt \ - testcases/lcs/file2.txt \ - testcases/local.png \ - testcases/templates/clients/SyncEvolution.ini \ - testcases/templates/clients/phone/nokia/S40/7210c.ini \ - testcases/google_event.ics \ - testcases/yahoo_contact.vcf \ - testcases/eds_contact.vcf \ - testcases/eds_event.ics \ - testcases/eds_event.ics.local \ - testcases/eds_memo.ics \ - testcases/eds_task.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) $(BUTEOSYNCPROFILE_CFLAGS) $(BUTEOSYNCCOMMON_CFLAGS) $(QT_CPPFLAGS) -client_test_CXXFLAGS = `cppunit-config --cflags` $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(KEYRING_CFLAGS) $(BUTEOSYNCPROFILE_CFLAGS) $(BUTEOSYNCCOMMON_CFLAGS) $(filter-out -O2 -g -W -Wall, $(QT_CXXFLAGS)) -client_test_LDFLAGS = `cppunit-config --libs` `nm syncevo/.libs/libsyncevolution.a | grep funambolAutoRegisterRegistry | sed -e 's/.* /-Wl,-u/'` $(CORE_LD_FLAGS) $(KEYRING_LIBS) $(BUTEOSYNCPROFILE_LIBS) $(BUTEOSYNCCOMMON_LIBS) $(QT_LDFLAGS) -client_test_LDADD = $(CORE_LDADD) $(SYNTHESIS_ENGINE) $(BUTEOSYNCPROFILE_LIBS) $(BUTEOSYNCCOMMON_LIBS) $(QT_LIBS) -# 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 -# -# If we create the patched file anew, then set its time to the more -# recent of the two input files. That way it won't be re-generated -# (because it is not older), and it won't be used to refresh the patch -# either in testcase2patch (because it is not newer either). -# That is useful on platforms where diff produces different results -# than the one in the source (possible because the "find shortest -# patch" problem may have multiple solutions). -.PHONY: $(TEST_FILES_GENERATED) -$(TEST_FILES_GENERATED): - @ mkdir -p testcases - @ echo "checking whether server specific test case $@ is up-to-date" - @ set -e; \ - patchfile=$(srcdir)/../test/$@.patch; \ - basefile=$(srcdir)/../test/$(basename $(basename $@)); \ - ( [ -e $@ ] && [ ! $@ -ot $$patchfile ] && [ ! $@ -ot $$basefile ] && echo " $@ up-to-date" ) || \ - ( [ ! -s $$patchfile ] && echo " copy $$basefile to $@ because patch file is empty" && cp $$basefile $@ ) || \ - ( echo " generating $@ by applying $$patchfile to $$basefile" && \ - (echo '*** foo'; echo '--- bar'; cat $$patchfile) | patch -s -o $@ $$basefile && \ - ( if [ $$basefile -ot $$patchfile ]; then \ - touch -r $$patchfile $@; else \ - touch -r $$basefile $@; fi ) \ - ) - - -# 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"; \ - else \ - echo " $$patchfile up-to-date"; \ - fi; \ - done - -# copy base test files -$(filter-out %.tem, $(filter testcases/%, $(subst $(srcdir)/../test/,,$(CLIENT_LIB_TEST_FILES)))) : % : $(srcdir)/../test/% - 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 - -CLEANFILES += client-test-buteo.moc.cpp - -# copy template directory into current working directory, if not there -# yet -.PHONY: templates -templates: - if test "$(srcdir)/templates" != "./templates"; then \ - rm -rf ./templates; \ - ln -s "$(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 ./client-test - -# Same solution for rebuilding as in top-level Makefile, see there -# for further comments. -$(srcdir)/Makefile.am: check-autotools - @ true -.PHONY: check-autotools -check-autotools: - @ cd $(top_srcdir) && ( [ ! -e .git ] || ./gen-autotools.sh ) - -# old-style name for test program(s) -.PHONY: test -test: client-test diff --git a/src/backends/addressbook/Makefile.am b/src/backends/addressbook/Makefile.am deleted file mode 100644 index ed1aed8f..00000000 --- a/src/backends/addressbook/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = syncaddressbook.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -SYNCADDRESSBOOK_SOURCES = \ - AddressBookSource.h \ - AddressBookConstants.cpp \ - AddressBookSource.cpp - -syncaddressbook_la_SOURCES = $(SYNCADDRESSBOOK_SOURCES) -syncaddressbook_la_LIBADD = $(ADDRESSBOOK_LIBS) $(SYNCEVOLUTION_LIBS) -syncaddressbook_la_LDFLAGS = -module -avoid-version -syncaddressbook_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) diff --git a/src/backends/addressbook/addressbook.am b/src/backends/addressbook/addressbook.am new file mode 100644 index 00000000..260a1c1b --- /dev/null +++ b/src/backends/addressbook/addressbook.am @@ -0,0 +1,24 @@ +dist_noinst_DATA += src/backends/addressbook/configure-sub.in + +src_backends_addressbook_lib = src/backends/addressbook/syncaddressbook.la +MOSTLYCLEANFILES += $(src_backends_addressbook_lib) +if ENABLE_MODULES +src_backends_addressbook_backenddir = $(BACKENDS_DIRECTORY) +src_backends_addressbook_backend_LTLIBRARIES = $(src_backends_addressbook_lib) +else +noinst_LTLIBRARIES += $(src_backends_addressbook_lib) +endif + +MAINTAINERCLEANFILES += src/backends/addressbook/Makefile.in + +src_backends_addressbook_src = \ + src/backends/addressbook/AddressBookSource.h \ + src/backends/addressbook/AddressBookConstants.cpp \ + src/backends/addressbook/AddressBookSource.cpp + +src_backends_addressbook_syncaddressbook_la_SOURCES = $(src_backends_addressbook_src) +src_backends_addressbook_syncaddressbook_la_LIBADD = $(ADDRESSBOOK_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_addressbook_syncaddressbook_la_LDFLAGS = -module -avoid-version +src_backends_addressbook_syncaddressbook_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_backends_addressbook_syncaddressbook_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) +src_backends_addressbook_syncaddressbook_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) diff --git a/src/backends/addressbook/configure-sub.in b/src/backends/addressbook/configure-sub.in index a883b921..879e0afb 100644 --- a/src/backends/addressbook/configure-sub.in +++ b/src/backends/addressbook/configure-sub.in @@ -9,9 +9,11 @@ AC_SUBST(ADDRESSBOOK_CFLAGS) AC_SUBST(ADDRESSBOOK_LIBS) BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $ADDRESSBOOK_CFLAGS" -AC_ARG_ENABLE_BACKEND(addressbook, addressbook, - AS_HELP_STRING([--enable-addressbook], [enable access to Mac OS X address book (default off)]), - [enable_addressbook="$enableval"], [enable_addressbook="no"]) +SE_ARG_ENABLE_BACKEND(addressbook, addressbook, + [AS_HELP_STRING([--enable-addressbook], + [enable access to Mac OS X address book (default off)])], + [enable_addressbook="$enableval"], [enable_addressbook="no"] + ) if test "$enable_addressbook" = "yes"; then AC_DEFINE(ENABLE_ADDRESSBOOK, 1, [addressbook available]) diff --git a/src/backends/akonadi/Makefile.am b/src/backends/akonadi/Makefile.am deleted file mode 100644 index 1930154a..00000000 --- a/src/backends/akonadi/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -AM_CPPFLAGS = -I$(srcdir)/../../ -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = syncakonadi.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -syncakonadi_la_SOURCES = \ - akonadisyncsource.h \ - akonadisyncsource.cpp -syncakonadi_la_LIBADD = $(KDEPIM_LIBS) ../../syncevo/libsyncevolution.la -syncakonadi_la_LDFLAGS = -module -avoid-version -syncakonadi_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) diff --git a/src/backends/akonadi/akonadi.am b/src/backends/akonadi/akonadi.am new file mode 100644 index 00000000..23b37e77 --- /dev/null +++ b/src/backends/akonadi/akonadi.am @@ -0,0 +1,21 @@ +dist_noinst_DATA += \ + src/backends/akonadi/configure-sub.in \ + src/backends/akonadi/README + +src_backends_akonadi_lib = src/backends/akonadi/syncakonadi.la +MOSTLYCLEANFILES += $(src_backends_akonadi_lib) +if ENABLE_MODULES +src_backends_akonadi_backenddir = $(BACKENDS_DIRECTORY) +src_backends_akonadi_backend_LTLIBRARIES = $(src_backends_akonadi_lib) +else +noinst_LTLIBRARIES += $(src_backends_akonadi_lib) +endif + +src_backends_akonadi_syncakonadi_la_SOURCES = \ + src/backends/akonadi/akonadisyncsource.h \ + src/backends/akonadi/akonadisyncsource.cpp +src_backends_akonadi_syncakonadi_la_LIBADD = $(KDEPIM_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_akonadi_syncakonadi_la_LDFLAGS = -module -avoid-version +src_backends_akonadi_syncakonadi_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_backends_akonadi_syncakonadi_la_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) +src_backends_akonadi_syncakonadi_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) diff --git a/src/backends/akonadi/configure-sub.in b/src/backends/akonadi/configure-sub.in index 5e4516e5..41bb9cfd 100644 --- a/src/backends/akonadi/configure-sub.in +++ b/src/backends/akonadi/configure-sub.in @@ -27,11 +27,13 @@ AC_LANG_POP(C++) # currently considered optional. "configure" will enable it only # if explicitly enabled (was turned on automatically previously, # for example on Ubuntu Hardy, and didn't compile). -AC_ARG_ENABLE_BACKEND(akonadi, akonadi, - AS_HELP_STRING([--disable-akonadi], [disable access to Akonadi (default is to use it if akonadi.pc is found)]), +SE_ARG_ENABLE_BACKEND(akonadi, akonadi, + [AS_HELP_STRING([--disable-akonadi], + [disable access to Akonadi (default is to use it if akonadi.pc is found)])], [enable_akonadi="$enableval" test $AKONADIFOUND = "yes" || test $enable_akonadi = "no" || AC_MSG_ERROR([akonadi.pc not found. Install it to compile with the Akonadi backend enabled.])], - [enable_akonadi=no]) + [enable_akonadi=no] + ) if test "$enable_akonadi" = "yes"; then # conditional compilation in preprocessor diff --git a/src/backends/buteo/Makefile.am b/src/backends/buteo/Makefile.am deleted file mode 100644 index 711a4cb2..00000000 --- a/src/backends/buteo/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -include $(top_srcdir)/m4-repo/autotroll.mk - -# "test" only works when compiling as part of SyncEvolution -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(srcdir)/../../../test $(BACKEND_CPPFLAGS) -EXTRA_DIST = configure-sub.in -MAINTAINERCLEANFILES = Makefile.in - -# directories required by Buteo for plugins and config files -syncdir = $(libdir)/sync -profilesdir = $(sysconfdir)/sync - -if ENABLE_BUTEO -nobase_dist_profiles_DATA = \ - profiles/sync/google-calendar.xml \ - profiles/service/google-calendar.xml \ - profiles/sync/google-contacts.xml \ - profiles/service/google-contacts.xml \ - profiles/sync/yahoo.xml \ - profiles/service/yahoo.xml \ - profiles/client/syncevo-buteo.xml -sync_LTLIBRARIES = libsyncevo-buteo-client.la - -BUILT_SOURCES = ButeoBridge.moc.cpp - -libsyncevo_buteo_client_la_SOURCES = \ - ButeoBridge.h \ - ButeoBridge.cpp -nodist_libsyncevo_buteo_client_la_SOURCES = \ - $(BUILT_SOURCES) - -libsyncevo_buteo_client_la_LIBADD = $(BUTEO_LIBS) $(QT_LIBS) $(SYNCEVOLUTION_LIBS) -libsyncevo_buteo_client_la_LDFLAGS = -module -avoid-version $(QT_LDFLAGS) -libsyncevo_buteo_client_la_CPPFLAGS = $(AM_CPPFLAGS) $(QT_CPPFLAGS) - -# Allow Qt to set some compile flags, but not the ones normally set via configure. -# In particular -W is not compatible with the SyncEvolution header files (we have -# unused parameters in some inline functions). -libsyncevo_buteo_client_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(BUTEO_CFLAGS) $(filter-out -O2 -g -W -Wall, $(QT_CXXFLAGS)) -endif diff --git a/src/backends/buteo/buteo.am b/src/backends/buteo/buteo.am new file mode 100644 index 00000000..88c6967a --- /dev/null +++ b/src/backends/buteo/buteo.am @@ -0,0 +1,33 @@ +# "test" only works when compiling as part of SyncEvolution +dist_noinst_DATA += \ + src/backends/buteo/configure-sub.in \ + src/backends/buteo/README + + +if ENABLE_BUTEO +include $(top_srcdir)/src/backends/buteo/profiles/profiles.am + +# directory required by Buteo for plugins +src_backends_buteo_syncdir = $(libdir)/sync +src_backends_buteo_sync_LTLIBRARIES = src/backends/buteo/libsyncevo-buteo-client.la + +src_backends_buteo_built_sources = src/backends/buteo/ButeoBridge.moc.cpp + +BUILT_SOURCES += $(src_backends_buteo_built_sources) + +src_backends_buteo_libsyncevo_buteo_client_la_SOURCES = \ + src/backends/buteo/ButeoBridge.h \ + src/backends/buteo/ButeoBridge.cpp +nodist_src_backends_buteo_libsyncevo_buteo_client_la_SOURCES = \ + $(src_backends_buteo_built_sources) + +src_backends_buteo_libsyncevo_buteo_client_la_LIBADD = $(BUTEO_LIBS) $(QT_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_buteo_libsyncevo_buteo_client_la_LDFLAGS = -module -avoid-version $(QT_LDFLAGS) +src_backends_buteo_libsyncevo_buteo_client_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) $(QT_CPPFLAGS) +src_backends_buteo_libsyncevo_buteo_client_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) + +# Allow Qt to set some compile flags, but not the ones normally set via configure. +# In particular -W is not compatible with the SyncEvolution header files (we have +# unused parameters in some inline functions). +src_backends_buteo_libsyncevo_buteo_client_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(BUTEO_CFLAGS) $(filter-out -O2 -g -W -Wall, $(QT_CXXFLAGS)) $(SYNCEVO_WFLAGS) +endif diff --git a/src/backends/buteo/configure-sub.in b/src/backends/buteo/configure-sub.in index d0f1029d..8f96c7c2 100644 --- a/src/backends/buteo/configure-sub.in +++ b/src/backends/buteo/configure-sub.in @@ -6,9 +6,9 @@ dnl Invoke autogen.sh to produce a configure script. AC_ARG_ENABLE(buteo, AS_HELP_STRING([--enable-buteo], [enable Buteo client plugin]), - [enable_buteo="$enableval"], + [enable_buteo="$enableval"], [enable_buteo="no"] - ) + ) if test "$enable_buteo" = "yes"; then AC_DEFINE(ENABLE_BUTEO, 1, [Buteo available]) diff --git a/src/backends/buteo/profiles/profiles.am b/src/backends/buteo/profiles/profiles.am new file mode 100644 index 00000000..6eca237b --- /dev/null +++ b/src/backends/buteo/profiles/profiles.am @@ -0,0 +1,21 @@ +# TODO: preferably generate this list instead +# $(sysconfdir)/sync is directory required by Buteo for config files +# client +src_backends_buteo_profiles_clientdir = $(sysconfdir)/sync/profiles/client +dist_src_backends_buteo_profiles_client_DATA = \ + src/backends/buteo/profiles/client/syncevo-buteo.xml +# $(wildcard src/backends/buteo/profiles/client/*.xml) +# service +src_backends_buteo_profiles_servicedir = $(sysconfdir)/sync/profiles/service +dist_src_backends_buteo_profiles_service_DATA = \ + src/backends/buteo/profiles/service/google-calendar.xml \ + src/backends/buteo/profiles/service/google-contacts.xml \ + src/backends/buteo/profiles/service/yahoo.xml +# $(wildcard src/backends/buteo/profiles/service/*.xml) +# sync +src_backends_buteo_profiles_syncdir = $(sysconfdir)/sync/profiles/sync +dist_src_backends_buteo_profiles_sync_DATA = \ + src/backends/buteo/profiles/sync/google-calendar.xml \ + src/backends/buteo/profiles/sync/google-contacts.xml \ + src/backends/buteo/profiles/sync/yahoo.xml +# $(wildcard src/backends/buteo/profiles/sync/*.xml) diff --git a/src/backends/evolution/Makefile.am b/src/backends/evolution/Makefile.am deleted file mode 100644 index 38e8f085..00000000 --- a/src/backends/evolution/Makefile.am +++ /dev/null @@ -1,50 +0,0 @@ -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = syncecal.la syncebook.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -SYNCECAL_SOURCES = \ - EvolutionSyncSource.h \ - EvolutionSyncSource.cpp \ - EvolutionCalendarSource.h \ - EvolutionMemoSource.h \ - EvolutionCalendarSource.cpp \ - EvolutionMemoSource.cpp - -if ENABLE_ECAL -SYNCECAL_SOURCES += \ - e-cal-check-timezones.c \ - e-cal-check-timezones.h -endif - -SYNCEBOOK_SOURCES = \ - EvolutionSyncSource.h \ - EvolutionSyncSource.cpp \ - EvolutionContactSource.h \ - EvolutionContactSource.cpp - -syncecal_la_SOURCES = $(SYNCECAL_SOURCES) -syncecal_la_LIBADD = $(ECAL_LIBS) $(SYNCEVOLUTION_LIBS) -# _GNU_SOURCE and -ldl for libical.c + dlsym(): -syncecal_la_CPPFLAGS = -D_GNU_SOURCE \ - -De_cal_check_timezones=syncevolution_check_timezones \ - -De_cal_tzlookup_ecal=syncevolution_tzlookup_ecal \ - -De_cal_tzlookup_icomp=syncevolution_tzlookup_icomp \ - -De_cal_match_tzid=syncevolution_match_tzid \ - $(AM_CPPFLAGS) -syncecal_la_LDFLAGS = -module -avoid-version -ldl -syncecal_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) - -syncebook_la_SOURCES = $(SYNCEBOOK_SOURCES) -syncebook_la_LIBADD = $(EBOOK_LIBS) $(SYNCEVOLUTION_LIBS) -syncebook_la_LDFLAGS = -module -avoid-version -syncebook_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) diff --git a/src/backends/evolution/configure-sub.in b/src/backends/evolution/configure-sub.in index 51fe0e30..29730217 100644 --- a/src/backends/evolution/configure-sub.in +++ b/src/backends/evolution/configure-sub.in @@ -50,16 +50,20 @@ if test "x${EBOOKFOUND}" = "xno"; then fi fi -AC_ARG_ENABLE_BACKEND(ebook, evolution, - AS_HELP_STRING([--disable-ebook], [disable access to Evolution addressbooks (must be used to compile without it)]), +SE_ARG_ENABLE_BACKEND(ebook, evolution, + [AS_HELP_STRING([--disable-ebook], + [disable access to Evolution addressbooks (must be used to compile without it)])], [enable_ebook="$enableval"], [test "$EBOOKFOUND" = "yes" && enable_ebook="yes" || - AC_MSG_ERROR([libebook not found. Use --disable-ebook to compile without or install the necessary development files.])]) -AC_ARG_ENABLE_BACKEND(ecal, evolution, - AS_HELP_STRING([--disable-ecal], [disable access to Evolution calendars and tasks (must be used to compile without it)]), + AC_MSG_ERROR([libebook not found. Use --disable-ebook to compile without or install the necessary development files.])] + ) +SE_ARG_ENABLE_BACKEND(ecal, evolution, + [AS_HELP_STRING([--disable-ecal], + [disable access to Evolution calendars and tasks (must be used to compile without it)])], [enable_ecal="$enableval"], [test "$ECALFOUND" = "yes" && enable_ecal="yes" || - AC_MSG_ERROR([libecal not found. Use --disable-ecal to compile without or install the necessary development files.])]) + AC_MSG_ERROR([libecal not found. Use --disable-ecal to compile without or install the necessary development files.])] + ) enable_evo="no" if test "$enable_ebook" = "yes"; then diff --git a/src/backends/evolution/evolution.am b/src/backends/evolution/evolution.am new file mode 100644 index 00000000..d5b7ddb8 --- /dev/null +++ b/src/backends/evolution/evolution.am @@ -0,0 +1,56 @@ +dist_noinst_DATA += src/backends/evolution/configure-sub.in + +src_backends_evolution_lib = src/backends/evolution/syncecal.la src/backends/evolution/syncebook.la +MOSTLYCLEANFILES += $(src_backends_evolution_lib) +if ENABLE_MODULES +src_backends_evolution_backenddir = $(BACKENDS_DIRECTORY) +src_backends_evolution_backend_LTLIBRARIES = $(src_backends_evolution_lib) +else +noinst_LTLIBRARIES += $(src_backends_evolution_lib) +endif + +src_backends_evolution_syncecal_src = \ + src/backends/evolution/EvolutionSyncSource.h \ + src/backends/evolution/EvolutionSyncSource.cpp \ + src/backends/evolution/EvolutionCalendarSource.h \ + src/backends/evolution/EvolutionMemoSource.h \ + src/backends/evolution/EvolutionCalendarSource.cpp \ + src/backends/evolution/EvolutionMemoSource.cpp + +if ENABLE_ECAL +src_backends_evolution_syncecal_src += \ + src/backends/evolution/e-cal-check-timezones.c \ + src/backends/evolution/e-cal-check-timezones.h +endif + +src_backends_evolution_syncebook_src = \ + src/backends/evolution/EvolutionSyncSource.h \ + src/backends/evolution/EvolutionSyncSource.cpp \ + src/backends/evolution/EvolutionContactSource.h \ + src/backends/evolution/EvolutionContactSource.cpp + +src_backends_evolution_cppflags = \ + $(SYNCEVOLUTION_CFLAGS) \ + -I$(top_srcdir)/test \ + $(BACKEND_CPPFLAGS) \ + -I$(top_srcdir)/src/backends/evolution + +src_backends_evolution_syncecal_la_SOURCES = $(src_backends_evolution_syncecal_src) +src_backends_evolution_syncecal_la_LIBADD = $(ECAL_LIBS) $(SYNCEVOLUTION_LIBS) +# _GNU_SOURCE and -ldl for libical.c + dlsym(): +src_backends_evolution_syncecal_la_CPPFLAGS = -D_GNU_SOURCE \ + -De_cal_check_timezones=syncevolution_check_timezones \ + -De_cal_tzlookup_ecal=syncevolution_tzlookup_ecal \ + -De_cal_tzlookup_icomp=syncevolution_tzlookup_icomp \ + -De_cal_match_tzid=syncevolution_match_tzid \ + $(src_backends_evolution_cppflags) +src_backends_evolution_syncecal_la_LDFLAGS = -module -avoid-version -ldl +src_backends_evolution_syncecal_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_backends_evolution_syncecal_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) + +src_backends_evolution_syncebook_la_SOURCES = $(src_backends_evolution_syncebook_src) +src_backends_evolution_syncebook_la_LIBADD = $(EBOOK_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_evolution_syncebook_la_LDFLAGS = -module -avoid-version +src_backends_evolution_syncebook_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_backends_evolution_syncebook_la_CPPFLAGS = $(src_backends_evolution_cppflags) +src_backends_evolution_syncebook_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) diff --git a/src/backends/file/Makefile.am b/src/backends/file/Makefile.am deleted file mode 100644 index fa56ff13..00000000 --- a/src/backends/file/Makefile.am +++ /dev/null @@ -1,29 +0,0 @@ -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = syncfile.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -SYNCFILE_SOURCES = \ - FileSyncSource.h \ - FileSyncSource.cpp - -syncfile_la_SOURCES = $(SYNCFILE_SOURCES) -syncfile_la_LIBADD = $(FILE_LIBS) $(SYNCEVOLUTION_LIBS) -syncfile_la_LDFLAGS = -module -avoid-version -syncfile_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) -# If you need special test cases for your sync source, then -# install them here. Here's how the sqlite backend does that: -# -#../../testcases/sqlite_vcard21.vcf: $(FUNAMBOL_SUBDIR)/test/test/testcases/vcard21.vcf -# mkdir -p ${@D} -# perl -e '$$_ = join("", <>); s/^(ADR|TEL|EMAIL|PHOTO).*?(?=^\S)//msg; s/;X-EVOLUTION-UI-SLOT=\d+//g; print;' $< >$@ -#all: ../../testcases/sqlite_vcard21.vcf diff --git a/src/backends/file/configure-sub.in b/src/backends/file/configure-sub.in index a2bbf78f..fa51bb0f 100644 --- a/src/backends/file/configure-sub.in +++ b/src/backends/file/configure-sub.in @@ -22,13 +22,13 @@ dnl name of the directory, dnl help string, dnl --enable/disable chosen explicitly dnl default, may depend on availability of prerequisites in more complex backends -AC_ARG_ENABLE_BACKEND(file, +SE_ARG_ENABLE_BACKEND(file, file, - AS_HELP_STRING([--disable-file], - [disable file-based backend which stores items in separate files in a fixed directory (default on)]), - [enable_file="$enableval"], + [AS_HELP_STRING([--disable-file], + [disable file-based backend which stores items in separate files in a fixed directory (default on)])], + [enable_file="$enableval"], [enable_file="yes"] - ) + ) if test "$enable_file" = "yes"; then dnl It's good to check the prerequisites here, in case --enable-file was used. diff --git a/src/backends/file/file.am b/src/backends/file/file.am new file mode 100644 index 00000000..9ecb2ed3 --- /dev/null +++ b/src/backends/file/file.am @@ -0,0 +1,28 @@ +dist_noinst_DATA += src/backends/file/configure-sub.in + +src_backends_file_lib = src/backends/file/syncfile.la +MOSTLYCLEANFILES += $(src_backends_file_lib) +if ENABLE_MODULES +src_backends_file_backenddir = $(BACKENDS_DIRECTORY) +src_backends_file_backend_LTLIBRARIES = $(src_backends_file_lib) +else +noinst_LTLIBRARIES += $(src_backends_file_lib) +endif + +src_backends_file_src = \ + src/backends/file/FileSyncSource.h \ + src/backends/file/FileSyncSource.cpp + +src_backends_file_syncfile_la_SOURCES = $(src_backends_file_src) +src_backends_file_syncfile_la_LIBADD = $(FILE_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_file_syncfile_la_LDFLAGS = -module -avoid-version +src_backends_file_syncfile_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_backends_file_syncfile_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) +src_backends_file_syncfile_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) +# If you need special test cases for your sync source, then +# install them here. Here's how the sqlite backend does that: +# +#../../testcases/sqlite_vcard21.vcf: $(FUNAMBOL_SUBDIR)/test/test/testcases/vcard21.vcf +# mkdir -p ${@D} +# perl -e '$$_ = join("", <>); s/^(ADR|TEL|EMAIL|PHOTO).*?(?=^\S)//msg; s/;X-EVOLUTION-UI-SLOT=\d+//g; print;' $< >$@ +#all: ../../testcases/sqlite_vcard21.vcf diff --git a/src/backends/kcalextended/Makefile.am b/src/backends/kcalextended/Makefile.am deleted file mode 100644 index 66f23798..00000000 --- a/src/backends/kcalextended/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -include $(top_srcdir)/m4-repo/autotroll.mk - -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = synckcalextended.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -synckcalextended_la_SOURCES = \ - KCalExtendedSource.h \ - KCalExtendedSource.cpp -synckcalextended_la_LIBADD = $(KCALEXTENDED_LIBS) $(SYNCEVOLUTION_LIBS) -synckcalextended_la_LDFLAGS = -module -avoid-version -synckcalextended_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(KCALEXTENDED_CFLAGS) diff --git a/src/backends/kcalextended/configure-sub.in b/src/backends/kcalextended/configure-sub.in index 96759f21..38614160 100644 --- a/src/backends/kcalextended/configure-sub.in +++ b/src/backends/kcalextended/configure-sub.in @@ -3,13 +3,13 @@ dnl Invoke autogen.sh to produce a configure script. # BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS ..." -AC_ARG_ENABLE_BACKEND(kcalextended, +SE_ARG_ENABLE_BACKEND(kcalextended, kcalextended, - AS_HELP_STRING([--enable-kcalextended], - [enable support for Maemo's KCalExtended storage]), - [enable_kcalextended="$enableval"], + [AS_HELP_STRING([--enable-kcalextended], + [enable support for Maemo's KCalExtended storage])], + [enable_kcalextended="$enableval"], [enable_kcalextended="no"] - ) + ) if test "$enable_kcalextended" = "yes"; then AC_DEFINE(ENABLE_KCALEXTENDED, 1, [KCalExtended available]) diff --git a/src/backends/kcalextended/kcalextended.am b/src/backends/kcalextended/kcalextended.am new file mode 100644 index 00000000..ef1ab6d3 --- /dev/null +++ b/src/backends/kcalextended/kcalextended.am @@ -0,0 +1,19 @@ +dist_noinst_DATA += src/backends/kcalextended/configure-sub.in + +src_backends_kcalextended_lib = src/backends/kcalextended/synckcalextended.la +MOSTLYCLEANFILES += $(src_backends_kcalextended_lib) +if ENABLE_MODULES +src_backends_kcalextended_backenddir = $(BACKENDS_DIRECTORY) +src_backends_kcalextended_backend_LTLIBRARIES = $(src_backends_kcalextended_lib) +else +noinst_LTLIBRARIES += $(src_backends_kcalextended_lib) +endif + +src_backends_kcalextended_synckcalextended_la_SOURCES = \ + src/backends/kcalextended/KCalExtendedSource.h \ + src/backends/kcalextended/KCalExtendedSource.cpp +src_backends_kcalextended_synckcalextended_la_LIBADD = $(KCALEXTENDED_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_kcalextended_synckcalextended_la_LDFLAGS = -module -avoid-version +src_backends_kcalextended_synckcalextended_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(KCALEXTENDED_CFLAGS) $(SYNCEVO_WFLAGS) +src_backends_kcalextended_synckcalextended_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) +src_backends_kcalextended_synckcalextended_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) diff --git a/src/backends/maemo/Makefile.am b/src/backends/maemo/Makefile.am deleted file mode 100644 index e156bf68..00000000 --- a/src/backends/maemo/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = syncmaemocal.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -SYNCMAEMOCAL_SOURCES = \ - MaemoCalendarSource.h \ - MaemoCalendarSource.cpp - -syncmaemocal_la_SOURCES = $(SYNCMAEMOCAL_SOURCES) -syncmaemocal_la_LIBADD = $(MCALB_LIBS) $(SYNCEVOLUTION_LIBS) -syncmaemocal_la_LDFLAGS = -module -avoid-version -syncmaemocal_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) diff --git a/src/backends/maemo/configure-sub.in b/src/backends/maemo/configure-sub.in index a5f5d215..09771034 100644 --- a/src/backends/maemo/configure-sub.in +++ b/src/backends/maemo/configure-sub.in @@ -7,12 +7,13 @@ AC_SUBST(MCALB_CFLAGS) AC_SUBST(MCALB_LIBS) BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $MCALB_CFLAGS" -AC_ARG_ENABLE_BACKEND(maemocal, maemo, - AS_HELP_STRING([--enable-maemo-calendar], - [enable access to PIM data stored in Maemo 5 calendar application (default off)]), - [enable_maemocal="$enableval"], [enable_maemocal="no"]) +SE_ARG_ENABLE_BACKEND(maemocal, maemo, + [AS_HELP_STRING([--enable-maemocal], + [enable access to PIM data stored in Maemo 5 calendar application (default off)])], + [enable_maemocal="$enableval"], [enable_maemocal="no"] + ) if test "$enable_maemocal" = "yes"; then - test "x${MCALBFOUND}" = "xyes" || AC_MSG_ERROR([--enable-maemo-calendar requires pkg-config information for calendar-backend, which was not found]) + test "x${MCALBFOUND}" = "xyes" || AC_MSG_ERROR([--enable-maemocal requires pkg-config information for calendar-backend, which was not found]) AC_DEFINE(ENABLE_MAEMO_CALENDAR, 1, [Maemo 5 calendar available]) fi diff --git a/src/backends/maemo/maemo.am b/src/backends/maemo/maemo.am new file mode 100644 index 00000000..922f94d3 --- /dev/null +++ b/src/backends/maemo/maemo.am @@ -0,0 +1,21 @@ +dist_noinst_DATA += src/backends/maemo/configure-sub.in + +src_backends_maemo_lib = src/backends/maemo/syncmaemocal.la +MOSTLYCLEANFILES += $(src_backends_maemo_lib) +if ENABLE_MODULES +src_backends_maemo_backenddir = $(BACKENDS_DIRECTORY) +src_backends_maemo_backend_LTLIBRARIES = $(src_backends_maemo_lib) +else +noinst_LTLIBRARIES += $(src_backends_maemo_lib) +endif + +src_backends_maemo_src = \ + src/backends/maemo/MaemoCalendarSource.h \ + src/backends/maemo/MaemoCalendarSource.cpp + +src_backends_maemo_syncmaemocal_la_SOURCES = $(src_backends_maemo_src) +src_backends_maemo_syncmaemocal_la_LIBADD = $(MCALB_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_maemo_syncmaemocal_la_LDFLAGS = -module -avoid-version +src_backends_maemo_syncmaemocal_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_backends_maemo_syncmaemocal_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) +src_backends_maemo_syncmaemocal_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) diff --git a/src/backends/qtcontacts/Makefile.am b/src/backends/qtcontacts/Makefile.am deleted file mode 100644 index 60a336b2..00000000 --- a/src/backends/qtcontacts/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -include $(top_srcdir)/m4-repo/autotroll.mk - -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = syncqtcontacts.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -syncqtcontacts_la_SOURCES = \ - QtContactsSource.h \ - QtContactsSource.cpp - -syncqtcontacts_la_LIBADD = $(QT_CONTACTS_LIBS) $(QT_LIBS) $(SYNCEVOLUTION_LIBS) -syncqtcontacts_la_LDFLAGS = -module -avoid-version $(QT_LDFLAGS) -syncqtcontacts_la_CPPFLAGS = $(AM_CPPFLAGS) $(QT_CPPFLAGS) -# Allow Qt to set some compile flags, but not the ones normally set via configure. -# In particular -W is not compatible with the SyncEvolution header files (we have -# unused parameters in some inline functions). -syncqtcontacts_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(filter-out -O2 -g -W -Wall, $(QT_CXXFLAGS)) diff --git a/src/backends/qtcontacts/configure-sub.in b/src/backends/qtcontacts/configure-sub.in index 2a6f80d6..7f595a9c 100644 --- a/src/backends/qtcontacts/configure-sub.in +++ b/src/backends/qtcontacts/configure-sub.in @@ -3,13 +3,13 @@ dnl Invoke autogen.sh to produce a configure script. # BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS ..." -AC_ARG_ENABLE_BACKEND(qtcontacts, +SE_ARG_ENABLE_BACKEND(qtcontacts, qtcontacts, - AS_HELP_STRING([--enable-qtcontacts], - [enable support for QtMobility's QtContacts storage]), - [enable_qtcontacts="$enableval"], + [AS_HELP_STRING([--enable-qtcontacts], + [enable support for QtMobility's QtContacts storage])], + [enable_qtcontacts="$enableval"], [enable_qtcontacts="no"] - ) + ) if test "$enable_qtcontacts" = "yes"; then AC_DEFINE(ENABLE_QTCONTACTS, 1, [QtContacts available]) diff --git a/src/backends/qtcontacts/qtcontacts.am b/src/backends/qtcontacts/qtcontacts.am new file mode 100644 index 00000000..4fb71024 --- /dev/null +++ b/src/backends/qtcontacts/qtcontacts.am @@ -0,0 +1,22 @@ +dist_noinst_DATA += src/backends/qtcontacts/configure-sub.in + +src_backends_qtcontacts_lib = src/backends/qtcontacts/syncqtcontacts.la +MOSTLYCLEANFILES += $(src_backends_qtcontacts_lib) +if ENABLE_MODULES +src_backends_qtcontacts_backenddir = $(BACKENDS_DIRECTORY) +src_backends_qtcontacts_backend_LTLIBRARIES = $(src_backends_qtcontacts_lib) +else +noinst_LTLIBRARIES += $(src_backends_qtcontacts_lib) +endif + +src_backends_qtcontacts_syncqtcontacts_la_SOURCES = \ + src/backends/qtcontacts/QtContactsSource.h \ + src/backends/qtcontacts/QtContactsSource.cpp +src_backends_qtcontacts_syncqtcontacts_la_LIBADD = $(QT_CONTACTS_LIBS) $(QT_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_qtcontacts_syncqtcontacts_la_LDFLAGS = -module -avoid-version $(QT_LDFLAGS) +src_backends_qtcontacts_syncqtcontacts_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) $(QT_CPPFLAGS) +src_backends_qtcontacts_syncqtcontacts_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) +# Allow Qt to set some compile flags, but not the ones normally set via configure. +# In particular -W is not compatible with the SyncEvolution header files (we have +# unused parameters in some inline functions). +src_backends_qtcontacts_syncqtcontacts_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(filter-out -O2 -g -W -Wall, $(QT_CXXFLAGS)) $(SYNCEVO_WFLAGS) diff --git a/src/backends/sqlite/Makefile.am b/src/backends/sqlite/Makefile.am deleted file mode 100644 index a4b5b063..00000000 --- a/src/backends/sqlite/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = syncsqlite.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -SYNCSQLITE_SOURCES = \ - SQLiteUtil.h \ - SQLiteUtil.cpp \ - SQLiteContactSource.h \ - SQLiteContactSource.cpp - -syncsqlite_la_SOURCES = $(SYNCSQLITE_SOURCES) -syncsqlite_la_LIBADD = $(SQLITE_LIBS) $(SYNCEVOLUTION_LIBS) -syncsqlite_la_LDFLAGS = -module -avoid-version -syncsqlite_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) - -# SQLiteContactSource does not support all fields from Funambol vCard 2.1 -# test cases: filter them out before testing -#../../testcases/sqlite_vcard21.vcf: $(FUNAMBOL_SUBDIR)/test/test/testcases/vcard21.vcf -# mkdir -p ${@D} -# perl -e '$$_ = join("", <>); s/^(ADR|TEL|EMAIL|PHOTO).*?(?=^\S)//msg; s/;X-EVOLUTION-UI-SLOT=\d+//g; print;' $< >$@ -# all: ../../testcases/sqlite_vcard21.vcf diff --git a/src/backends/sqlite/configure-sub.in b/src/backends/sqlite/configure-sub.in index e3cb22bd..24a3d832 100644 --- a/src/backends/sqlite/configure-sub.in +++ b/src/backends/sqlite/configure-sub.in @@ -7,9 +7,11 @@ AC_SUBST(SQLITE_CFLAGS) AC_SUBST(SQLITE_LIBS) BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $SQLITE_CFLAGS" -AC_ARG_ENABLE_BACKEND(sqlite, sqlite, - AS_HELP_STRING([--enable-sqlite], [enable access to PIM data stored in SQLite files (experimental, default off)]), - [enable_sqlite="$enableval"], [enable_sqlite="no"]) +SE_ARG_ENABLE_BACKEND(sqlite, sqlite, + [AS_HELP_STRING([--enable-sqlite], + [enable access to PIM data stored in SQLite files (experimental, default off)])], + [enable_sqlite="$enableval"], [enable_sqlite="no"] + ) if test "$enable_sqlite" = "yes"; then test "x${SQLITEFOUND}" = "xyes" || AC_MSG_ERROR([--enable-sqlite requires pkg-config information for sqlite3, which was not found]) diff --git a/src/backends/sqlite/sqlite.am b/src/backends/sqlite/sqlite.am new file mode 100644 index 00000000..041744cf --- /dev/null +++ b/src/backends/sqlite/sqlite.am @@ -0,0 +1,32 @@ +dist_noinst_DATA += \ + src/backends/sqlite/configure-sub.in \ + src/backends/sqlite/README + +src_backends_sqlite_lib = src/backends/sqlite/syncsqlite.la +MOSTLYCLEANFILES += $(src_backends_sqlite_lib) +if ENABLE_MODULES +src_backends_sqlite_backenddir = $(BACKENDS_DIRECTORY) +src_backends_sqlite_backend_LTLIBRARIES = $(src_backends_sqlite_lib) +else +noinst_LTLIBRARIES += $(src_backends_sqlite_lib) +endif + +src_backends_sqlite_src = \ + src/backends/sqlite/SQLiteUtil.h \ + src/backends/sqlite/SQLiteUtil.cpp \ + src/backends/sqlite/SQLiteContactSource.h \ + src/backends/sqlite/SQLiteContactSource.cpp + +src_backends_sqlite_syncsqlite_la_SOURCES = $(src_backends_sqlite_src) +src_backends_sqlite_syncsqlite_la_LIBADD = $(SQLITE_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_sqlite_syncsqlite_la_LDFLAGS = -module -avoid-version +src_backends_sqlite_syncsqlite_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_backends_sqlite_syncsqlite_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) -I$(top_srcdir)/src/backends/sqlite +src_backends_sqlite_syncsqlite_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) + +# SQLiteContactSource does not support all fields from Funambol vCard 2.1 +# test cases: filter them out before testing +#../../testcases/sqlite_vcard21.vcf: $(FUNAMBOL_SUBDIR)/test/test/testcases/vcard21.vcf +# mkdir -p ${@D} +# perl -e '$$_ = join("", <>); s/^(ADR|TEL|EMAIL|PHOTO).*?(?=^\S)//msg; s/;X-EVOLUTION-UI-SLOT=\d+//g; print;' $< >$@ +# all: ../../testcases/sqlite_vcard21.vcf diff --git a/src/backends/webdav/Makefile.am b/src/backends/webdav/Makefile.am deleted file mode 100644 index 51c673aa..00000000 --- a/src/backends/webdav/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -# "test" only works when compiling as part of SyncEvolution -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in WebDAVSourceRegister.cpp -CLEANFILES = -bin_SCRIPTS = - -SYNCSOURCES = syncdav.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -EXTRA_DIST += syncevo-webdav-lookup.sh -bin_SCRIPTS += syncevo-webdav-lookup -CLEANFILES += syncevo-webdav-lookup - -syncevo-webdav-lookup: syncevo-webdav-lookup.sh - rm -f $@ - ln -s $< $@ - -MAINTAINERCLEANFILES = Makefile.in - -SYNCDAV_SOURCES = \ - CalDAVSource.h \ - CalDAVSource.cpp \ - CardDAVSource.h \ - CardDAVSource.cpp \ - WebDAVSource.h \ - WebDAVSource.cpp \ - NeonCXX.h \ - NeonCXX.cpp - -syncdav_la_SOURCES = $(SYNCDAV_SOURCES) -syncdav_la_LIBADD = $(NEON_LIBS) $(SYNCEVOLUTION_LIBS) -syncdav_la_LDFLAGS = -module -avoid-version -syncdav_la_CXXFLAGS = $(NEON_CFLAGS) diff --git a/src/backends/webdav/configure-sub.in b/src/backends/webdav/configure-sub.in index e9e013c2..ab42b61a 100644 --- a/src/backends/webdav/configure-sub.in +++ b/src/backends/webdav/configure-sub.in @@ -1,13 +1,13 @@ dnl -*- mode: Autoconf; -*- dnl Invoke autogen.sh to produce a configure script. -AC_ARG_ENABLE_BACKEND(dav, +SE_ARG_ENABLE_BACKEND(dav, webdav, - AS_HELP_STRING([--enable-dav], - [enable WebDAV based backends (CalDAV) (default off)]), - [enable_dav="$enableval"], + [AS_HELP_STRING([--enable-dav], + [enable WebDAV based backends (CalDAV) (default off)])], + [enable_dav="$enableval"], [enable_dav="no"] - ) + ) if test "$enable_dav" = "yes"; then PKG_CHECK_MODULES(LIBICAL, libical, diff --git a/src/backends/webdav/webdav.am b/src/backends/webdav/webdav.am new file mode 100644 index 00000000..bbde9348 --- /dev/null +++ b/src/backends/webdav/webdav.am @@ -0,0 +1,38 @@ +dist_noinst_DATA += \ + src/backends/webdav/configure-sub.in \ + src/backends/webdav/WebDAVSourceRegister.cpp \ + src/backends/webdav/syncevo-webdav-lookup.sh \ + src/backends/webdav/README + +src_backends_webdav_lib = src/backends/webdav/syncdav.la +MOSTLYCLEANFILES += $(src_backends_webdav_lib) +if ENABLE_MODULES +src_backends_webdav_backenddir = $(BACKENDS_DIRECTORY) +src_backends_webdav_backend_LTLIBRARIES = $(src_backends_webdav_lib) +else +noinst_LTLIBRARIES += $(src_backends_webdav_lib) +endif + +bin_SCRIPTS += src/backends/webdav/syncevo-webdav-lookup +CLEANFILES += src/backends/webdav/syncevo-webdav-lookup + +src/backends/webdav/syncevo-webdav-lookup: src/backends/webdav/syncevo-webdav-lookup.sh + $(AM_V_GEN)rm -f $@ ; \ + ln -s $(notdir $<) $@ + +src_backends_webdav_src = \ + src/backends/webdav/CalDAVSource.h \ + src/backends/webdav/CalDAVSource.cpp \ + src/backends/webdav/CardDAVSource.h \ + src/backends/webdav/CardDAVSource.cpp \ + src/backends/webdav/WebDAVSource.h \ + src/backends/webdav/WebDAVSource.cpp \ + src/backends/webdav/NeonCXX.h \ + src/backends/webdav/NeonCXX.cpp + +src_backends_webdav_syncdav_la_SOURCES = $(src_backends_webdav_src) +src_backends_webdav_syncdav_la_LIBADD = $(NEON_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_webdav_syncdav_la_LDFLAGS = -module -avoid-version +src_backends_webdav_syncdav_la_CXXFLAGS = $(NEON_CFLAGS) $(SYNCEVO_WFLAGS) +src_backends_webdav_syncdav_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) +src_backends_webdav_syncdav_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) diff --git a/src/backends/xmlrpc/Makefile.am b/src/backends/xmlrpc/Makefile.am deleted file mode 100644 index 5d7e2484..00000000 --- a/src/backends/xmlrpc/Makefile.am +++ /dev/null @@ -1,29 +0,0 @@ -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -SYNCSOURCES = syncxmlrpc.la -MOSTLYCLEANFILES = $(SYNCSOURCES) -if ENABLE_MODULES -backend_LTLIBRARIES = $(SYNCSOURCES) -else -noinst_LTLIBRARIES = $(SYNCSOURCES) -endif - -MAINTAINERCLEANFILES = Makefile.in - -SYNCXMLRPC_SOURCES = \ - XMLRPCSyncSource.h \ - XMLRPCSyncSource.cpp - -syncxmlrpc_la_SOURCES = $(SYNCXMLRPC_SOURCES) -syncxmlrpc_la_LIBADD = $(XMLRPC_LIBS) $(SYNCEVOLUTION_LIBS) -syncxmlrpc_la_LDFLAGS = -module -avoid-version -syncxmlrpc_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) -# If you need special test cases for your sync source, then -# install them here. Here's how the sqlite backend does that: -# -#../../testcases/sqlite_vcard21.vcf: $(FUNAMBOL_SUBDIR)/test/test/testcases/vcard21.vcf -# mkdir -p ${@D} -# perl -e '$$_ = join("", <>); s/^(ADR|TEL|EMAIL|PHOTO).*?(?=^\S)//msg; s/;X-EVOLUTION-UI-SLOT=\d+//g; print;' $< >$@ -#all: ../../testcases/sqlite_vcard21.vcf diff --git a/src/backends/xmlrpc/configure-sub.in b/src/backends/xmlrpc/configure-sub.in index 7f6b8603..19fb1768 100644 --- a/src/backends/xmlrpc/configure-sub.in +++ b/src/backends/xmlrpc/configure-sub.in @@ -16,22 +16,24 @@ dnl name of the directory, dnl help string, dnl --enable/disable chosen explicitly dnl default, may depend on availability of prerequisites in more complex backends -AC_ARG_ENABLE_BACKEND(xmlrpc, +SE_ARG_ENABLE_BACKEND(xmlrpc, xmlrpc, - AS_HELP_STRING([--enable-xmlrpc], - [enable XMLRPC-based backend which stores items on a central web service (default off)]), - [enable_xmlrpc="$enableval"], + [AS_HELP_STRING([--enable-xmlrpc], + [enable XMLRPC-based backend which stores items on a central web service (default off)])], + [enable_xmlrpc="$enableval"], [enable_xmlrpc="no"] - ) + ) if test "$enable_xmlrpc" = "yes"; then dnl It's good to check the prerequisites here, in case --enable-xmlrpc was used. dnl test "x${SQLITEFOUND}" = "xyes" || AC_MSG_ERROR([--enable-sqlite requires pkg-config information for sqlite3, which was not found]) - - test -e /usr/bin/xmlrpc-c-config || AC_MSG_ERROR([--enable-xmlrpc requires xmlrpc-c-config, which was not found]) - - XMLRPC_CFLAGS=`/usr/bin/xmlrpc-c-config c++2 client --cflags` - XMLRPC_LIBS=`/usr/bin/xmlrpc-c-config c++2 client --libs` + + AC_PATH_PROG([XMLRPC_C_CONFIG], [xmlrpc-c-config], [no]) + + test "x$XMLRPC_C_CONFIG" != 'xno' || AC_MSG_ERROR([--enable-xmlrpc requires xmlrpc-c-config, which was not found]) + + XMLRPC_CFLAGS=`$XMLRPC_C_CONFIG c++2 client --cflags` + XMLRPC_LIBS=`$XMLRPC_C_CONFIG c++2 client --libs` AC_SUBST(XMLRPC_CFLAGS) AC_SUBST(XMLRPC_LIBS) diff --git a/src/backends/xmlrpc/xmlrpc.am b/src/backends/xmlrpc/xmlrpc.am new file mode 100644 index 00000000..58435a24 --- /dev/null +++ b/src/backends/xmlrpc/xmlrpc.am @@ -0,0 +1,30 @@ +dist_noinst_DATA += \ + src/backends/xmlrpc/configure-sub.in \ + src/backends/xmlrpc/README + +src_backends_xmlrpc_lib = src/backends/xmlrpc/syncxmlrpc.la +MOSTLYCLEANFILES += $(src_backends_xmlrpc_lib) +if ENABLE_MODULES +src_backends_xmlrpc_backenddir = $(BACKENDS_DIRECTORY) +src_backends_xmlrpc_backend_LTLIBRARIES = $(src_backends_xmlrpc_lib) +else +noinst_LTLIBRARIES += $(src_backends_xmlrpc_lib) +endif + +src_backends_xmlrpc_src = \ + src/backends/xmlrpc/XMLRPCSyncSource.h \ + src/backends/xmlrpc/XMLRPCSyncSource.cpp + +src_backends_xmlrpc_syncxmlrpc_la_SOURCES = $(src_backends_xmlrpc_src) +src_backends_xmlrpc_syncxmlrpc_la_LIBADD = $(XMLRPC_LIBS) $(SYNCEVOLUTION_LIBS) +src_backends_xmlrpc_syncxmlrpc_la_LDFLAGS = -module -avoid-version +src_backends_xmlrpc_syncxmlrpc_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_backends_xmlrpc_syncxmlrpc_la_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) +src_backends_xmlrpc_syncxmlrpc_la_DEPENDENCIES = $(SYNCEVOLUTION_LIBS) +# If you need special test cases for your sync source, then +# install them here. Here's how the sqlite backend does that: +# +#../../testcases/sqlite_vcard21.vcf: $(FUNAMBOL_SUBDIR)/test/test/testcases/vcard21.vcf +# mkdir -p ${@D} +# perl -e '$$_ = join("", <>); s/^(ADR|TEL|EMAIL|PHOTO).*?(?=^\S)//msg; s/;X-EVOLUTION-UI-SLOT=\d+//g; print;' $< >$@ +#all: ../../testcases/sqlite_vcard21.vcf diff --git a/src/dbus/.gitignore b/src/dbus/.gitignore deleted file mode 100644 index 57fee9fd..00000000 --- a/src/dbus/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/syncevo-dbus.pc diff --git a/src/dbus/Makefile.am b/src/dbus/Makefile.am deleted file mode 100644 index aefccec9..00000000 --- a/src/dbus/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = interfaces glib qt server diff --git a/src/dbus/dbus.am b/src/dbus/dbus.am new file mode 100644 index 00000000..3e5cdd3b --- /dev/null +++ b/src/dbus/dbus.am @@ -0,0 +1,4 @@ +include $(top_srcdir)/src/dbus/interfaces/interfaces.am +include $(top_srcdir)/src/dbus/glib/glib.am +include $(top_srcdir)/src/dbus/qt/qt.am +include $(top_srcdir)/src/dbus/server/server.am diff --git a/src/dbus/glib/Makefile.am b/src/dbus/glib/Makefile.am deleted file mode 100644 index 4112d954..00000000 --- a/src/dbus/glib/Makefile.am +++ /dev/null @@ -1,75 +0,0 @@ -lib_LTLIBRARIES = libsyncevo-dbus.la - -if COND_GUI -AM_CPPFLAGS = -I$(top_srcdir) $(SYNTHESIS_CFLAGS) - -DISTCLEANFILES = syncevo-dbus.pc -EXTRA_DIST = syncevo-dbus.pc.in syncevo-marshal.list -pkgconfig_DATA = syncevo-dbus.pc -pkgconfigdir = $(libdir)/pkgconfig - -noinst_PROGRAMS = test-syncevo-dbus - -test_syncevo_dbus_SOURCES = test.c -test_syncevo_dbus_LDADD = $(DBUS_GLIB_LIBS) libsyncevo-dbus.la -test_syncevo_dbus_CFLAGS = $(DBUS_GLIB_CFLAGS) - -nodist_libsyncevo_dbus_la_SOURCES = \ - syncevo-marshal.c - -BUILT_SOURCES = syncevo-marshal.c syncevo-marshal.h \ - syncevo-server-bindings.h syncevo-connection-bindings.h syncevo-session-bindings.h \ - syncevo-server-glue.h syncevo-connection-glue.h syncevo-session-glue.h \ - syncevo-server.xml syncevo-connection.xml syncevo-session.xml - -CLEANFILES = $(BUILT_SOURCES) stamp-syncevo-dbus-glue.h - -# D-Bus binding tool gets confused by doc comments, strip them first -%.xml: $(srcdir)/../interfaces/spec-strip-docs.xsl $(srcdir)/../interfaces/%-full.xml - $(XSLT) -o $@ $+ - -%-bindings.h: stamp-%-bindings.h - @true -stamp-%-bindings.h: %.xml - $(DBUS_BINDING_TOOL) --mode=glib-client --prefix=syncevo $< > xgen-$(@F) \ - && (cmp -s xgen-$(@F) $(@F:stamp-%=%) || cp xgen-$(@F) $(@F:stamp-%=%)) \ - && rm -f xgen-$(@F) \ - && echo timestamp > $(@F) - -syncevo-marshal.h: $(srcdir)/syncevo-marshal.list $(GLIB_GENMARSHAL) - $(GLIB_GENMARSHAL) $< --header --prefix=syncevo_marshal > $@ -syncevo-marshal.c: $(srcdir)/syncevo-marshal.list syncevo-marshal.h $(GLIB_GENMARSHAL) - echo "#include \"syncevo-marshal.h\"" > $@ \ - && $(GLIB_GENMARSHAL) --prefix=syncevo_marshal $(srcdir)/syncevo-marshal.list --body >> $@ - -%-glue.h: stamp-%-glue.h - @true -stamp-%-glue.h: %.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) - -libsyncevo_dbus_la_SOURCES = \ - $(syncevo_dbus_headers) \ - syncevo-dbus-types.c \ - syncevo-server.c \ - syncevo-session.c - -libsyncevo_dbus_la_CFLAGS = \ - -I$(top_srcdir) \ - -I$(top_builddir) \ - $(DBUS_GLIB_CFLAGS) - -libsyncevo_dbus_la_LIBADD = \ - $(DBUS_GLIB_LIBS) - -syncevo_dbus_headers = \ - syncevo-dbus-types.h \ - syncevo-server.h \ - syncevo-session.h - -libsyncevo_dbus_includedir = $(includedir)/syncevo-dbus -libsyncevo_dbus_include_HEADERS = \ - $(syncevo_dbus_headers) -endif diff --git a/src/dbus/glib/glib.am b/src/dbus/glib/glib.am new file mode 100644 index 00000000..3335e42f --- /dev/null +++ b/src/dbus/glib/glib.am @@ -0,0 +1,108 @@ +if COND_GUI + +src_dbus_glib_lib = src/dbus/glib/libsyncevo-dbus.la + +lib_LTLIBRARIES += $(src_dbus_glib_lib) + +src_dbus_glib_cppflags = \ + -I$(top_srcdir) \ + $(SYNTHESIS_CFLAGS) \ + -I$(top_srcdir)/src/dbus/glib \ + -I$(top_builddir)/src/dbus/glib + +DISTCLEANFILES += src/dbus/glib/syncevo-dbus.pc + +dist_noinst_DATA += \ + src/dbus/glib/syncevo-dbus.pc.in \ + src/dbus/glib/syncevo-marshal.list \ + src/dbus/glib/README + +#pkgconfigdir is defined in $(top_srcdir)/setup-variables.am +pkgconfig_DATA += src/dbus/glib/syncevo-dbus.pc + +noinst_PROGRAMS += src/dbus/glib/test-syncevo-dbus + +src_dbus_glib_test_syncevo_dbus_SOURCES = src/dbus/glib/test.c +src_dbus_glib_test_syncevo_dbus_LDADD = $(DBUS_GLIB_LIBS) $(src_dbus_glib_lib) +src_dbus_glib_test_syncevo_dbus_CFLAGS = $(DBUS_GLIB_CFLAGS) $(SYNCEVO_WFLAGS) +src_dbus_glib_test_syncevo_dbus_CPPFLAGS = $(src_dbus_glib_cppflags) + +src_dbus_glib_built_sources = \ + src/dbus/glib/syncevo-marshal.c \ + src/dbus/glib/syncevo-marshal.h \ + src/dbus/glib/syncevo-server-bindings.h \ + src/dbus/glib/syncevo-connection-bindings.h \ + src/dbus/glib/syncevo-session-bindings.h \ + src/dbus/glib/syncevo-server-glue.h \ + src/dbus/glib/syncevo-connection-glue.h \ + src/dbus/glib/syncevo-session-glue.h \ + src/dbus/glib/syncevo-server.xml \ + src/dbus/glib/syncevo-connection.xml \ + src/dbus/glib/syncevo-session.xml + +BUILT_SOURCES += $(src_dbus_glib_built_sources) + +CLEANFILES += $(src_dbus_glib_built_sources) + +# D-Bus binding tool gets confused by doc comments, strip them first +src/dbus/glib/%.xml: $(top_srcdir)/src/dbus/interfaces/spec-strip-docs.xsl $(top_srcdir)/src/dbus/interfaces/%-full.xml + $(AM_V_GEN)$(XSLT) -o $@ $+ + +src/dbus/glib/%-bindings.h: src/dbus/glib/stamp-%-bindings.h + $(AM_V_GEN) + @true +src/dbus/glib/stamp-%-bindings.h: src/dbus/glib/%.xml + $(AM_V_at)XGENNAME='$(dir $@)xgen-$(notdir $@)' \ + && BINDINGSNAME='$(dir $@)$(subst stamp-,,$(notdir $@))' \ + && $(DBUS_BINDING_TOOL) --mode=glib-client --prefix=syncevo $< >"$$XGENNAME" \ + && (cmp -s "$$XGENNAME" "$$BINDINGSNAME" || cp "$$XGENNAME" "$$BINDINGSNAME" )\ + && rm -f "$$XGENNAME" \ + && echo 'timestamp' >$@ + +src/dbus/glib/syncevo-marshal.h: $(top_srcdir)/src/dbus/glib/syncevo-marshal.list $(GLIB_GENMARSHAL) + $(AM_V_GEN)$(GLIB_GENMARSHAL) $< --header --prefix=syncevo_marshal > $@ +src/dbus/glib/syncevo-marshal.c: $(top_srcdir)/src/dbus/glib/syncevo-marshal.list src/dbus/glib/syncevo-marshal.h $(GLIB_GENMARSHAL) + $(AM_V_GEN)echo "#include \"syncevo-marshal.h\"" > $@ \ + && $(GLIB_GENMARSHAL) --prefix=syncevo_marshal $(top_srcdir)/src/dbus/glib/syncevo-marshal.list --body >> $@ + +src/dbus/glib/%-glue.h: src/dbus/glib/stamp-%-glue.h + $(AM_V_GEN) + @true +src/dbus/glib/stamp-%-glue.h: src/dbus/glib/%.xml + $(AM_V_at)XGENNAME='$(dir $@)xgen-$(notdir $@)' \ + && GLUENAME='$(dir $@)$(subst stamp-,,$(notdir $@))' \ + && $(DBUS_BINDING_TOOL) --prefix=syncevo --mode=glib-server $< >"$$XGENNAME" \ + && (cmp -s "$$XGENNAME" "$$GLUENAME" || cp "$$XGENNAME" "$$GLUENAME") \ + && rm -f "$$XGENNAME" \ + && echo 'timestamp' >$@ + +nodist_src_dbus_glib_libsyncevo_dbus_la_SOURCES = \ + $(src_dbus_glib_built_sources) + +src_dbus_glib_libsyncevo_dbus_la_SOURCES = \ + $(src_dbus_glib_syncevo_dbus_headers) \ + src/dbus/glib/syncevo-dbus-types.c \ + src/dbus/glib/syncevo-server.c \ + src/dbus/glib/syncevo-session.c + +src_dbus_glib_libsyncevo_dbus_la_CFLAGS = \ + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(DBUS_GLIB_CFLAGS) \ + $(SYNCEVO_WFLAGS) + +src_dbus_glib_libsyncevo_dbus_la_LIBADD = \ + $(DBUS_GLIB_LIBS) + +src_dbus_glib_libsyncevo_dbus_la_CPPFLAGS = \ + $(src_dbus_glib_cppflags) + +src_dbus_glib_syncevo_dbus_headers = \ + src/dbus/glib/syncevo-dbus-types.h \ + src/dbus/glib/syncevo-server.h \ + src/dbus/glib/syncevo-session.h + +src_dbus_glib_libsyncevo_dbus_includedir = $(includedir)/syncevo-dbus +src_dbus_glib_libsyncevo_dbus_include_HEADERS = \ + $(src_dbus_glib_syncevo_dbus_headers) +endif diff --git a/src/dbus/interfaces/Makefile.am b/src/dbus/interfaces/Makefile.am deleted file mode 100644 index 103d28b5..00000000 --- a/src/dbus/interfaces/Makefile.am +++ /dev/null @@ -1,38 +0,0 @@ -doc_DATA = - -%.xml: %-full.xml - $(XSLT) -o $@ $(srcdir)/spec-strip-docs.xsl $< - -if COND_DOC -%-doc.xml: %-full.xml - $(XSLT) -o $@ $(srcdir)/spec-to-docbook.xsl $< - -syncevo-dbus-api-doc.xml: syncevo-server-doc.xml syncevo-session-doc.xml syncevo-connection-doc.xml - echo '<?xml version="1.0" encoding="UTF-8"?>' >$@ - echo '<reference><title>SyncEvolution D-Bus API $(VERSION)</title>' >>$@ - for xml in $+; do \ - tail -n +2 $$xml >>$@; \ - done - echo '</reference>' >>$@ - -syncevo-dbus-api-doc.html: syncevo-dbus-api-doc.xml - $(XSLT) -o $@ http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl $< - -doc_DATA += syncevo-dbus-api-doc.html - -endif - -BUILT_SOURCES = -if COND_DOC -BUILT_SOURCES += syncevo-server-doc.xml syncevo-connection-doc.xml syncevo-session-doc.xml \ - syncevo-dbus-api-doc.xml syncevo-dbus-api-doc.html -endif - -CLEANFILES = $(BUILT_SOURCES) -EXTRA_DIST = \ - spec-strip-docs.xsl \ - spec-to-docbook.xsl \ - syncevo-connection-full.xml \ - syncevo-server-full.xml \ - syncevo-session-full.xml - diff --git a/src/dbus/interfaces/interfaces.am b/src/dbus/interfaces/interfaces.am new file mode 100644 index 00000000..34451557 --- /dev/null +++ b/src/dbus/interfaces/interfaces.am @@ -0,0 +1,45 @@ +src/dbus/interfaces/%.xml: src/dbus/interfaces/%-full.xml + $(AM_V_GEN)$(XSLT) -o $@ $(top_srcdir)/src/dbus/interfaces/spec-strip-docs.xsl $< + +if COND_DOC +src/dbus/interfaces/%-doc.xml: src/dbus/interfaces/%-full.xml + $(AM_V_GEN)$(XSLT) -o $@ $(top_srcdir)/src/dbus/interfaces/spec-to-docbook.xsl $< + +src/dbus/interfaces/syncevo-dbus-api-doc.xml: src/dbus/interfaces/syncevo-server-doc.xml src/dbus/interfaces/syncevo-session-doc.xml src/dbus/interfaces/syncevo-connection-doc.xml + $(AM_V_GEN)echo '<?xml version="1.0" encoding="UTF-8"?>' >$@ \ + && echo '<reference><title>SyncEvolution D-Bus API $(VERSION)</title>' >>$@ \ + && for xml in $+; \ + do \ + tail -n +2 $$xml >>$@; \ + done; \ + echo '</reference>' >>$@ + +src/dbus/interfaces/syncevo-dbus-api-doc.html: src/dbus/interfaces/syncevo-dbus-api-doc.xml + $(AM_V_GEN)$(XSLT) -o $@ http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl $< + +doc_DATA += src/dbus/interfaces/syncevo-dbus-api-doc.html + +endif + +if COND_DOC +src_dbus_interfaces_built_sources = \ + src/dbus/interfaces/syncevo-server-doc.xml \ + src/dbus/interfaces/syncevo-connection-doc.xml \ + src/dbus/interfaces/syncevo-session-doc.xml \ + src/dbus/interfaces/syncevo-dbus-api-doc.xml \ + src/dbus/interfaces/syncevo-dbus-api-doc.html +else +src_dbus_interfaces_built_sources = +endif + +BUILT_SOURCES += $(src_dbus_interfaces_built_sources) + +CLEANFILES += $(src_dbus_interfaces_built_sources) + +dist_noinst_DATA += \ + src/dbus/interfaces/spec-strip-docs.xsl \ + src/dbus/interfaces/spec-to-docbook.xsl \ + src/dbus/interfaces/syncevo-connection-full.xml \ + src/dbus/interfaces/syncevo-server-full.xml \ + src/dbus/interfaces/syncevo-session-full.xml \ + src/dbus/interfaces/README diff --git a/src/dbus/qt/Makefile.am b/src/dbus/qt/Makefile.am deleted file mode 100644 index cdfe1bb8..00000000 --- a/src/dbus/qt/Makefile.am +++ /dev/null @@ -1,74 +0,0 @@ -if ENABLE_QT_DBUS - -include $(top_srcdir)/m4-repo/autotroll.mk - -libsyncevolution_qt_dbus_includedir = $(includedir)/syncevolution-qt-dbus - -lib_LTLIBRARIES = libsyncevolution-qt-dbus.la - -libsyncevolution_qt_dbus_headers = dbustypes.h - -nodist_libsyncevolution_qt_dbus_include_HEADERS = \ - $(libsyncevolution_qt_dbus_headers) \ - $(built_headers) \ - $(NULL) - -dist_libsyncevolution_qt_dbus_la_SOURCES = \ - $(libsyncevolution_qt_dbus_headers) \ - dbustypes.cpp - -nodist_libsyncevolution_qt_dbus_la_SOURCES = \ - $(BUILT_SOURCES) - -AM_CPPFLAGS = $(SYNCEVOLUTION_CFLAGS) -I$(top_srcdir)/test $(BACKEND_CPPFLAGS) - -EXTRA_DIST = configure-sub.in - -built_headers = \ - syncevo-server-full.h \ - syncevo-session-full.h \ - syncevo-connection-full.h \ - $(NULL) - -BUILT_SOURCES = \ - syncevo-server-full.cpp \ - syncevo-session-full.cpp \ - syncevo-connection-full.cpp \ - syncevo-server-full.moc.cpp \ - syncevo-session-full.moc.cpp \ - syncevo-connection-full.moc.cpp \ - $(built_headers) \ - $(NULL) - -MOSTLYCLEANFILES = $(lib_LTLIBRARIES) - -MAINTAINERCLEANFILES = Makefile.in - -CLEANFILES = $(BUILT_SOURCES) \ - stamp-server \ - stamp-session \ - stamp-connection - -DISTCLEANFILES += syncevolution-qt-dbus.pc -EXTRA_DIST += syncevolution-qt-dbus.pc.in -pkgconfig_DATA = syncevolution-qt-dbus.pc -pkgconfigdir = $(libdir)/pkgconfig - -libsyncevolution_qt_dbus_la_LIBADD = $(QT_DBUS_LIBS) $(QT_LIBS) -libsyncevolution_qt_dbus_la_CPPFLAGS = $(AM_CPPFLAGS) $(QT_CPPFLAGS) -# Allow Qt to set some compile flags, but not the ones normally set via configure. -# In particular -W is not compatible with the SyncEvolution header files (we have -# unused parameters in some inline functions). -libsyncevolution_qt_dbus_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(filter-out -O2 -g -W -Wall, $(QT_CXXFLAGS)) - -syncevo-server-full.cpp syncevo-server-full.h: stamp-server -syncevo-session-full.cpp syncevo-session-full.h: stamp-session -syncevo-connection-full.cpp syncevo-connection-full.h: stamp-connection - -# work around #ifndef SYNCEVO-SERVER-FULL_H_1305547804 bug -stamp-%: $(srcdir)/../interfaces/syncevo-%-full.xml - qdbusxml2cpp -p syncevo-$*-full -i dbustypes.h $< - perl -pi -e 's/SYNCEVO-(\w*)-FULL_H/SYNCEVO_$$1_FULL_H/' syncevo-$*-full.* - touch $@ - -endif # ENABLE_QT_DBUS diff --git a/src/dbus/qt/configure-sub.in b/src/dbus/qt/configure-sub.in deleted file mode 100644 index 707ed125..00000000 --- a/src/dbus/qt/configure-sub.in +++ /dev/null @@ -1,17 +0,0 @@ -dnl -*- mode: Autoconf; -*- -dnl Invoke autogen.sh to produce a configure script. - -AC_ARG_ENABLE(qt-dbus, - AS_HELP_STRING([--enable-qt-dbus], - [build Qt bindings for D-Bus]), - enable_qt_dbus="$enableval", enable_qt_dbus="no") - -if test "$enable_qt_dbus" = "yes"; then - AC_DEFINE(ENABLE_QT_DBUS, 1, [Qt D-Bus bindings available]) - need_qt_modules="$need_qt_modules +dbus" -fi - -AM_CONDITIONAL([ENABLE_QT_DBUS], [test "$enable_qt_dbus" = "yes"]) - -AC_SUBST(QT_DBUS_LIBS) -AC_CONFIG_FILES(src/dbus/qt/syncevolution-qt-dbus.pc) diff --git a/src/dbus/qt/qt.am b/src/dbus/qt/qt.am new file mode 100644 index 00000000..13594dcf --- /dev/null +++ b/src/dbus/qt/qt.am @@ -0,0 +1,76 @@ +if ENABLE_QT_DBUS + +src_dbus_qt_libsyncevolution_qt_dbus_libraries = \ + src/dbus/qt/libsyncevolution-qt-dbus.la + +lib_LTLIBRARIES += $(src_dbus_qt_libsyncevolution_qt_dbus_libraries) + +src_dbus_qt_libsyncevolution_qt_dbus_headers = src/dbus/qt/dbustypes.h + + +src_dbus_qt_libsyncevolution_qt_dbus_includedir = $(includedir)/syncevolution-qt-dbus +nodist_src_dbus_qt_libsyncevolution_qt_dbus_include_HEADERS = \ + $(src_dbus_qt_libsyncevolution_qt_dbus_headers) \ + $(built_headers) + +dist_src_dbus_qt_libsyncevolution_qt_dbus_la_SOURCES = \ + $(src_dbus_qt_libsyncevolution_qt_dbus_headers) \ + src/dbus/qt/dbustypes.cpp + +nodist_src_dbus_qt_libsyncevolution_qt_dbus_la_SOURCES = \ + $(src_dbus_qt_built_sources) + +src_dbus_qt_cppflags = \ + $(SYNCEVOLUTION_CFLAGS) \ + -I$(top_srcdir)/test \ + $(BACKEND_CPPFLAGS) + +built_headers = \ + src/dbus/qt/syncevo-server-full.h \ + src/dbus/qt/syncevo-session-full.h \ + src/dbus/qt/syncevo-connection-full.h + +src_dbus_qt_built_sources = \ + src/dbus/qt/syncevo-server-full.cpp \ + src/dbus/qt/syncevo-session-full.cpp \ + src/dbus/qt/syncevo-connection-full.cpp \ + src/dbus/qt/syncevo-server-full.moc.cpp \ + src/dbus/qt/syncevo-session-full.moc.cpp \ + src/dbus/qt/syncevo-connection-full.moc.cpp \ + $(built_headers) + +BUILT_SOURCES += $(src_dbus_qt_built_sources) + +MOSTLYCLEANFILES += $(src_dbus_qt_libsyncevolution_qt_dbus_libraries) + +MAINTAINERCLEANFILES += src/dbus/qt/Makefile.in + +CLEANFILES += $(src_dbus_qt_built_sources) \ + src/dbus/qt/stamp-server \ + src/dbus/qt/stamp-session \ + src/dbus/qt/stamp-connection + +DISTCLEANFILES += src/dbus/qt/syncevolution-qt-dbus.pc +dist_noinst_DATA += \ + src/dbus/qt/syncevolution-qt-dbus.pc.in +#pkgconfigdir is defined in $(top_srcdir)/setup-variables.am +pkgconfig_DATA += src/dbus/qt/syncevolution-qt-dbus.pc + +src_dbus_qt_libsyncevolution_qt_dbus_la_LIBADD = $(QT_DBUS_LIBS) $(QT_LIBS) +src_dbus_qt_libsyncevolution_qt_dbus_la_CPPFLAGS = $(src_dbus_qt_cppflags) $(QT_CPPFLAGS) +# Allow Qt to set some compile flags, but not the ones normally set via configure. +# In particular -W is not compatible with the SyncEvolution header files (we have +# unused parameters in some inline functions). +src_dbus_qt_libsyncevolution_qt_dbus_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(filter-out -O2 -g -W -Wall, $(QT_CXXFLAGS)) $(SYNCEVO_WFLAGS) + +src/dbus/qt/syncevo-%-full.cpp src/dbus/qt/syncevo-%-full.h: src/dbus/qt/stamp-% + $(AM_V_GEN) + @true + +# work around #ifndef SYNCEVO-SERVER-FULL_H_1305547804 bug +src/dbus/qt/stamp-%: $(top_srcdir)/src/dbus/interfaces/syncevo-%-full.xml + $(AM_V_at)@QDBUSXML_TO_CPP@ -p src/dbus/qt/syncevo-$*-full -i src/dbus/qt/dbustypes.h $< \ + && perl -pi -e 's/SYNCEVO-(\w*)-FULL_H/SYNCEVO_$$1_FULL_H/' src/dbus/qt/syncevo-$*-full.* \ + && echo 'timestamp' >$@ + +endif # ENABLE_QT_DBUS diff --git a/src/dbus/server/.gitignore b/src/dbus/server/.gitignore deleted file mode 100644 index 4a4712ce..00000000 --- a/src/dbus/server/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/org.syncevolution.service -/syncevo-dbus-server-startup.sh -/syncevo-dbus-server.desktop diff --git a/src/dbus/server/Makefile.am b/src/dbus/server/Makefile.am deleted file mode 100644 index 2cbf8a9f..00000000 --- a/src/dbus/server/Makefile.am +++ /dev/null @@ -1,101 +0,0 @@ -if COND_DBUS - -noinst_LTLIBRARIES = libsyncevodbusserver.la - -server_cpp_files = \ - NotificationBackendNoop.cpp \ - NotificationBackendLibnotify.cpp \ - NotificationBackendMLite.cpp \ - NotificationManagerFactory.cpp \ - auto-sync-manager.cpp \ - bluez-manager.cpp \ - client.cpp \ - connection.cpp \ - connman-client.cpp \ - dbus-sync.cpp \ - dbus-transport-agent.cpp \ - dbus-user-interface.cpp \ - exceptions.cpp \ - info-req.cpp \ - network-manager-client.cpp \ - presence-status.cpp \ - progress-data.cpp \ - read-operations.cpp \ - server.cpp \ - session.cpp - -server_h_files = \ - $(server_cpp_files:%.cpp=%.h) \ - NotificationBackendBase.h \ - NotificationBackendLibnotify.h \ - NotificationBackendMLite.h \ - NotificationBackendNoop.h \ - NotificationManager.h \ - NotificationManagerBase.h \ - NotificationManagerFactory.h \ - auto-sync-manager.h \ - auto-term.h \ - bluez-manager.h \ - client.h \ - cmdline-wrapper.h \ - connection.h \ - connman-client.h \ - dbus-sync.h \ - dbus-transport-agent.h \ - dbus-user-interface.h \ - exceptions.h \ - info-req.h \ - network-manager-client.h \ - presence-status.h \ - progress-data.h \ - read-operations.h \ - resource.h \ - restart.h \ - session.h \ - session-listener.h \ - source-progress.h \ - source-status.h \ - timeout.h \ - timer.h - -libsyncevodbusserver_la_SOURCES = \ - $(server_h_files) \ - $(server_cpp_files) \ - main.cpp - -dist_pkgdata_DATA = bluetooth_products.ini - -libsyncevodbusserver_la_LIBADD = $(KEYRING_LIBS) $(LIBNOTIFY_LIBS) $(MLITE_LIBS) $(KDE_KWALLET_LIBS) $(DBUS_LIBS) $(LIBSOUP_LIBS) -libsyncevodbusserver_la_CPPFLAGS = -DHAVE_CONFIG_H -DSYNCEVOLUTION_LOCALEDIR=\"${SYNCEVOLUTION_LOCALEDIR}\" -I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir) $(BACKEND_CPPFLAGS) -libsyncevodbusserver_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(SYNTHESIS_CFLAGS) $(GLIB_CFLAGS) $(DBUS_CFLAGS) $(LIBSOUP_CFLAGS) $(KEYRING_CFLAGS) $(LIBNOTIFY_CFLAGS) $(MLITE_CFLAGS) $(KDE_KWALLET_CFLAGS) - -# Deal with .service, .desktop and startup script files. -CLEANFILES = 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 - -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)|" $< > $@ - -service_in_files = org.syncevolution.service.in -servicedir = $(DBUS_SERVICES_DIR) -service_DATA = $(service_in_files:.service.in=.service) -$(service_DATA): $(service_in_files) Makefile - @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ - -EXTRA_DIST = $(service_in_files) \ - $(SYNCEVO_DBUS_SERVER_SCRIPT_IN) \ - $(SYNCEVO_DBUS_SERVER_DESKTOP_IN) - -endif diff --git a/src/dbus/server/server.am b/src/dbus/server/server.am new file mode 100644 index 00000000..90f36150 --- /dev/null +++ b/src/dbus/server/server.am @@ -0,0 +1,84 @@ +if COND_DBUS + +noinst_LTLIBRARIES += src/dbus/server/libsyncevodbusserver.la + +src_dbus_server_server_cpp_files = \ + src/dbus/server/NotificationBackendNoop.cpp \ + src/dbus/server/NotificationBackendLibnotify.cpp \ + src/dbus/server/NotificationBackendMLite.cpp \ + src/dbus/server/NotificationManagerFactory.cpp \ + src/dbus/server/auto-sync-manager.cpp \ + src/dbus/server/bluez-manager.cpp \ + src/dbus/server/client.cpp \ + src/dbus/server/connection.cpp \ + src/dbus/server/connman-client.cpp \ + src/dbus/server/dbus-sync.cpp \ + src/dbus/server/dbus-transport-agent.cpp \ + src/dbus/server/dbus-user-interface.cpp \ + src/dbus/server/exceptions.cpp \ + src/dbus/server/info-req.cpp \ + src/dbus/server/network-manager-client.cpp \ + src/dbus/server/presence-status.cpp \ + src/dbus/server/progress-data.cpp \ + src/dbus/server/read-operations.cpp \ + src/dbus/server/server.cpp \ + src/dbus/server/session.cpp + +src_dbus_server_server_h_files = \ + $(src_dbus_server_server_cpp_files:.cpp=.h) \ + src/dbus/server/NotificationBackendBase.h \ + src/dbus/server/NotificationManager.h \ + src/dbus/server/NotificationManagerBase.h \ + src/dbus/server/auto-term.h \ + src/dbus/server/cmdline-wrapper.h \ + src/dbus/server/resource.h \ + src/dbus/server/restart.h \ + src/dbus/server/session-listener.h \ + src/dbus/server/source-progress.h \ + src/dbus/server/source-status.h \ + src/dbus/server/timeout.h \ + src/dbus/server/timer.h + +src_dbus_server_libsyncevodbusserver_la_SOURCES = \ + $(src_dbus_server_server_h_files) \ + $(src_dbus_server_server_cpp_files) \ + src/dbus/server/main.cpp + +dist_pkgdata_DATA += src/dbus/server/bluetooth_products.ini + +src_dbus_server_libsyncevodbusserver_la_LIBADD = $(KEYRING_LIBS) $(LIBNOTIFY_LIBS) $(MLITE_LIBS) $(KDE_KWALLET_LIBS) $(DBUS_LIBS) $(LIBSOUP_LIBS) +src_dbus_server_libsyncevodbusserver_la_CPPFLAGS = -DHAVE_CONFIG_H -DSYNCEVOLUTION_LOCALEDIR=\"${SYNCEVOLUTION_LOCALEDIR}\" -I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir) $(BACKEND_CPPFLAGS) +src_dbus_server_libsyncevodbusserver_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(SYNTHESIS_CFLAGS) $(GLIB_CFLAGS) $(DBUS_CFLAGS) $(LIBSOUP_CFLAGS) $(KEYRING_CFLAGS) $(LIBNOTIFY_CFLAGS) $(MLITE_CFLAGS) $(KDE_KWALLET_CFLAGS) $(SYNCEVO_WFLAGS) + +# Deal with .service, .desktop and startup script files. +CLEANFILES += \ + $(src_dbus_server_service_files) \ + $(src_dbus_server_desktop) \ + $(src_dbus_server_script) + +src_dbus_server_script_in = src/dbus/server/syncevo-dbus-server-startup.sh.in +src_dbus_server_script = $(src_dbus_server_script_in:.sh.in=.sh) +src_dbus_server_desktop_in = src/dbus/server/syncevo-dbus-server.desktop.in +src_dbus_server_desktop = $(src_dbus_server_desktop_in:.desktop.in=.desktop) +src_dbus_server_autostartdir = $(sysconfdir)/xdg/autostart +src_dbus_server_autostart_DATA = $(src_dbus_server_desktop) + +libexec_SCRIPTS += $(src_dbus_server_script) +$(src_dbus_server_script): $(src_dbus_server_script_in) + @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< >$@ +$(src_dbus_server_desktop): $(src_dbus_server_desktop_in) + @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< >$@ + +src_dbus_server_service_files_in = src/dbus/server/org.syncevolution.service.in +src_dbus_server_service_files = $(src_dbus_server_service_files_in:.service.in=.service) +src_dbus_server_servicedir = $(DBUS_SERVICES_DIR) +src_dbus_server_service_DATA = $(src_dbus_server_service_files) +$(src_dbus_server_service_files): $(src_dbus_server_service_files_in) + @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< >$@ + +dist_noinst_DATA += \ + $(src_dbus_server_service_files_in) \ + $(src_dbus_server_script_in) \ + $(src_dbus_server_desktop_in) + +endif diff --git a/src/gdbus/.gitignore b/src/gdbus/.gitignore deleted file mode 100644 index 6f30a3ab..00000000 --- a/src/gdbus/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/example diff --git a/src/gdbus/Makefile.am b/src/gdbus/Makefile.am deleted file mode 100644 index bb610f6c..00000000 --- a/src/gdbus/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -# include_HEADERS = gdbus.h - -if ENABLE_MODULES -pkglib_LTLIBRARIES = libgdbussyncevo.la -else -noinst_LTLIBRARIES = libgdbussyncevo.la -endif - -libgdbussyncevo_la_SOURCES = debug.h debug.c mainloop.c object.c watch.c \ - gdbus.h gdbus-cxx-bridge.h gdbus-cxx-bridge.cpp gdbus-cxx.h -libgdbussyncevo_la_LDFLAGS = -version-info 0:0:0 -export-symbols-regex b_dbus_.* - -libgdbussyncevo_la_LIBADD = @GLIB_LIBS@ @DBUS_LIBS@ - -AM_CFLAGS = @GLIB_CFLAGS@ @DBUS_CFLAGS@ -AM_CXXFLAGS = @GLIB_CFLAGS@ @DBUS_CFLAGS@ - -MAINTAINERCLEANFILES = Makefile.in - -# include_HEADERS = gdbus-cxx-bridge.h gdbus-cxx.h -noinst_PROGRAMS = example -example_SOURCES = test/example.cpp -example_CXXFLAGS = @GLIB_CFLAGS@ @DBUS_CFLAGS@ -example_LDADD = libgdbussyncevo.la @GLIB_LIBS@ @DBUS_LIBS@ diff --git a/src/gdbus/gdbus.am b/src/gdbus/gdbus.am new file mode 100644 index 00000000..11cc0366 --- /dev/null +++ b/src/gdbus/gdbus.am @@ -0,0 +1,35 @@ +# include_HEADERS = src/gdbus/gdbus.h + +dist_noinst_DATA += \ + src/gdbus/README + +if ENABLE_MODULES +# pkglibdir is defined to $(libdir)/$(PACKAGE). see: +# http://www.gnu.org/software/automake/manual/automake.html#Uniform +pkglib_LTLIBRARIES = src/gdbus/libgdbussyncevo.la +src_gdbus_version_info = -version-info 0:0:0 +else +noinst_LTLIBRARIES += src/gdbus/libgdbussyncevo.la +endif + +src_gdbus_libgdbussyncevo_la_SOURCES = \ + src/gdbus/debug.h \ + src/gdbus/debug.c \ + src/gdbus/mainloop.c \ + src/gdbus/object.c \ + src/gdbus/watch.c \ + src/gdbus/gdbus.h \ + src/gdbus/gdbus-cxx-bridge.h \ + src/gdbus/gdbus-cxx-bridge.cpp \ + src/gdbus/gdbus-cxx.h +src_gdbus_libgdbussyncevo_la_LDFLAGS = $(src_gdbus_version_info) -export-symbols-regex b_dbus_.* +src_gdbus_libgdbussyncevo_la_LIBADD = @GLIB_LIBS@ @DBUS_LIBS@ +src_gdbus_libgdbussyncevo_la_CFLAGS = @GLIB_CFLAGS@ @DBUS_CFLAGS@ $(SYNCEVO_WFLAGS) +src_gdbus_libgdbussyncevo_la_CXXFLAGS = @GLIB_CFLAGS@ @DBUS_CFLAGS@ $(SYNCEVO_WFLAGS) + +# include_HEADERS = src/gdbus/gdbus-cxx-bridge.h src/gdbus/gdbus-cxx.h +noinst_PROGRAMS += src/gdbus/example +src_gdbus_example_SOURCES = src/gdbus/test/example.cpp +src_gdbus_example_CXXFLAGS = @GLIB_CFLAGS@ @DBUS_CFLAGS@ $(SYNCEVO_WFLAGS) +src_gdbus_example_LDADD = src/gdbus/libgdbussyncevo.la @GLIB_LIBS@ @DBUS_LIBS@ +src_gdbus_example_CPPFLAGS = -I$(top_srcdir)/src/gdbus diff --git a/src/gnome-bluetooth/Makefile.am b/src/gnome-bluetooth/Makefile.am deleted file mode 100644 index 7229d9c0..00000000 --- a/src/gnome-bluetooth/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -plugindir = $(GNOMEBLUETOOTH_DIR)/plugins/ - -INCLUDES = $(GNOMEBLUETOOTH_CFLAGS) \ - -DLOCALEDIR=\"$(SYNCEVOLUTION_LOCALEDIR)\" - -plugin_LTLIBRARIES = libgbtsyncevolution.la -libgbtsyncevolution_la_SOURCES = syncevolution.c -libgbtsyncevolution_la_LDFLAGS = -module -avoid-version - diff --git a/src/gnome-bluetooth/gnome-bluetooth.am b/src/gnome-bluetooth/gnome-bluetooth.am new file mode 100644 index 00000000..a6084302 --- /dev/null +++ b/src/gnome-bluetooth/gnome-bluetooth.am @@ -0,0 +1,10 @@ +src_gnome_bluetoothdir = $(GNOMEBLUETOOTH_DIR)/plugins/ + +src_gnome_bluetooth_LTLIBRARIES = src/gnome-bluetooth/libgbtsyncevolution.la + +src_gnome_bluetooth_libgbtsyncevolution_la_SOURCES = src/gnome-bluetooth/syncevolution.c +src_gnome_bluetooth_libgbtsyncevolution_la_LDFLAGS = -module -avoid-version +src_gnome_bluetooth_libgbtsyncevolution_la_CPPFLAGS = \ + $(GNOMEBLUETOOTH_CFLAGS) \ + -DLOCALEDIR=\"$(SYNCEVOLUTION_LOCALEDIR)\" +src_gnome_bluetooth_libgbtsyncevolution_la_CFLAGS = $(SYNCEVO_WFLAGS) diff --git a/src/gtk-ui/Makefile.am b/src/gtk-ui/Makefile.am deleted file mode 100644 index 5f56fb29..00000000 --- a/src/gtk-ui/Makefile.am +++ /dev/null @@ -1,81 +0,0 @@ -applicationsdir = $(datadir)/applications -applications_in_files = sync.desktop.in sync-gtk.desktop.in -applications_generated = $(applications_in_files:.desktop.in=.desktop) -applications_DATA = $(GUI_DESKTOP_FILES) -@INTLTOOL_DESKTOP_RULE@ - -# When installing both the plain GTK and the Moblin-themed version, -# the Moblin version uses the normal "Sync - Up to date" name/comment -# and the GTK version uses "Sync (GTK)" as name with the same -# comment. This is a somewhat arbitrary choice, with the rationale -# being that a Moblin user is less likely to care about the -# distinction while a GTK user might understand what "(GTK)" means. -sync-moblin.desktop: sync.desktop - cp $< $@ - -gladedir = $(datadir)/syncevolution/ -glade_DATA = \ - ui.xml - -icondir = $(datadir)/icons/hicolor/48x48/apps -dist_icon_DATA = sync.png - -themercdir = $(datadir)/syncevolution/ -themerc_DATA = \ - sync-generic.png \ - sync-spinner.gif \ - sync-ui.rc - -desktopdir = $(datadir)/applications - -EXTRA_DIST = \ - ui.glade \ - $(themerc_DATA) \ - $(applications_in_files) \ - $(noinst_DATA) - -ui.xml: ui.glade - $(GTK_BUILDER_CONV) $< $(@F) - -# sync-ui: default GUI, could be plain GTK or Moblin UX -# sync-ui-gtk: GTK GUI -# sync-ui-moblin: Moblin UX -# -# The later two are built when --enable-gui=all was used. -EXTRA_PROGRAMS = \ - sync-ui \ - sync-ui-gtk \ - sync-ui-moblin -bin_PROGRAMS = $(GUI_PROGRAMS) - -sync_ui_SOURCES = \ - main.c sync-ui.c sync-ui.h sync-ui-config.c sync-ui-config.h \ - mux-frame.c mux-frame.h \ - sync-config-widget.c sync-config-widget.h \ - gtkinfobar.c gtkinfobar.h - -sync_ui_LDADD = $(GUI_LIBS) $(DBUS_GLIB_LIBS) $(top_builddir)/src/dbus/glib/libsyncevo-dbus.la -sync_ui_CFLAGS = $(GUI_CFLAGS) \ - $(DBUS_GLIB_CFLAGS) \ - -DGLADEDIR=\""$(gladedir)"\" \ - -DTHEMEDIR=\""$(themercdir)"\" \ - -DLIBEXECDIR=\"@libexecdir@\" \ - -DSYNCEVOLUTION_LOCALEDIR=\"${SYNCEVOLUTION_LOCALEDIR}\" -sync_ui_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I$(top_builddir)/src/dbus/glib -I$(top_srcdir)/src/dbus/glib $(SYNTHESIS_CFLAGS) - -sync_ui_gtk_SOURCES = $(sync_ui_SOURCES) -nodist_sync_ui_gtk_SOURCES = $(nodist_sync_ui_SOURCES) -sync_ui_gtk_LDADD = $(sync_ui_LDADD) -sync_ui_gtk_CFLAGS = $(sync_ui_CFLAGS) -sync_ui_gtk_CPPFLAGS = $(sync_ui_CPPFLAGS) - -sync_ui_moblin_SOURCES = $(sync_ui_SOURCES) -nodist_sync_ui_moblin_SOURCES = $(nodist_sync_ui_SOURCES) -sync_ui_moblin_LDADD = $(sync_ui_LDADD) -sync_ui_moblin_CFLAGS = $(sync_ui_CFLAGS) -sync_ui_moblin_CPPFLAGS = $(sync_ui_CPPFLAGS) -DUSE_MOBLIN_UX - -CLEANFILES = $(BUILT_SOURCES) \ - ui.xml \ - sync-moblin.desktop \ - $(applications_generated) diff --git a/src/gtk-ui/gtk-ui.am b/src/gtk-ui/gtk-ui.am new file mode 100644 index 00000000..c1438325 --- /dev/null +++ b/src/gtk-ui/gtk-ui.am @@ -0,0 +1,104 @@ +dist_noinst_DATA += \ + src/gtk-ui/README + +src_gtk_ui_applicationsdir = $(datadir)/applications +src_gtk_ui_applications_in_files = \ + src/gtk-ui/sync.desktop.in \ + src/gtk-ui/sync-gtk.desktop.in +src_gtk_ui_applications_generated = $(src_gtk_ui_applications_in_files:.desktop.in=.desktop) +src_gtk_ui_applications_DATA = @GUI_DESKTOP_FILES@ + +# if this will pose a problem then see the link below, probably the solution +# here will need to be used. +# http://mail.gnome.org/archives/commits-list/2010-October/msg05148.html +@INTLTOOL_DESKTOP_RULE@ + +# When installing both the plain GTK and the Moblin-themed version, +# the Moblin version uses the normal "Sync - Up to date" name/comment +# and the GTK version uses "Sync (GTK)" as name with the same +# comment. This is a somewhat arbitrary choice, with the rationale +# being that a Moblin user is less likely to care about the +# distinction while a GTK user might understand what "(GTK)" means. +src/gtk-ui/sync-moblin.desktop: src/gtk-ui/sync.desktop + $(AM_V_GEN)cp $< $@ + +src_gtk_ui_gladedir = $(datadir)/syncevolution/ +src_gtk_ui_glade_DATA = src/gtk-ui/ui.xml + +src_gtk_ui_icondir = $(datadir)/icons/hicolor/48x48/apps +dist_src_gtk_ui_icon_DATA = src/gtk-ui/sync.png + +src_gtk_ui_themercfiles = \ + src/gtk-ui/sync-generic.png \ + src/gtk-ui/sync-spinner.gif \ + src/gtk-ui/sync-ui.rc + +src_gtk_ui_themercdir = $(datadir)/syncevolution/ +dist_src_gtk_ui_themerc_DATA = $(src_gtk_ui_themercfiles) + +src_gtk_ui_desktopdir = $(datadir)/applications + +dist_noinst_DATA += \ + src/gtk-ui/ui.glade \ + $(src_gtk_ui_applications_in_files) + +src/gtk-ui/ui.xml: src/gtk-ui/ui.glade + $(AM_V_GEN)$(GTK_BUILDER_CONV) $< $@ + +# sync-ui: default GUI, could be plain GTK or Moblin UX +# sync-ui-gtk: GTK GUI +# sync-ui-moblin: Moblin UX +# +# The later two are built when --enable-gui=all was used. +EXTRA_PROGRAMS += \ + src/gtk-ui/sync-ui \ + src/gtk-ui/sync-ui-gtk \ + src/gtk-ui/sync-ui-moblin +bin_PROGRAMS += @GUI_PROGRAMS@ + +src_gtk_ui_sync_ui_SOURCES = \ + src/gtk-ui/main.c \ + src/gtk-ui/sync-ui.c \ + src/gtk-ui/sync-ui.h \ + src/gtk-ui/sync-ui-config.c \ + src/gtk-ui/sync-ui-config.h \ + src/gtk-ui/mux-frame.c \ + src/gtk-ui/mux-frame.h \ + src/gtk-ui/sync-config-widget.c \ + src/gtk-ui/sync-config-widget.h \ + src/gtk-ui/gtkinfobar.c \ + src/gtk-ui/gtkinfobar.h + +src_gtk_ui_sync_ui_LDADD = \ + $(GUI_LIBS) \ + $(DBUS_GLIB_LIBS) \ + $(top_builddir)/src/dbus/glib/libsyncevo-dbus.la +src_gtk_ui_sync_ui_CFLAGS = \ + $(GUI_CFLAGS) \ + $(DBUS_GLIB_CFLAGS) \ + -DGLADEDIR=\""$(src_gtk_ui_gladedir)"\" \ + -DTHEMEDIR=\""$(src_gtk_ui_themercdir)"\" \ + -DLIBEXECDIR=\"@libexecdir@\" \ + -DSYNCEVOLUTION_LOCALEDIR=\"${SYNCEVOLUTION_LOCALEDIR}\" \ + $(SYNCEVO_WFLAGS) +src_gtk_ui_sync_ui_CPPFLAGS = \ + -I$(top_builddir) \ + -I$(top_srcdir) \ + -I$(top_builddir)/src/dbus/glib \ + -I$(top_srcdir)/src/dbus/glib \ + $(SYNTHESIS_CFLAGS) + +src_gtk_ui_sync_ui_gtk_SOURCES = $(src_gtk_ui_sync_ui_SOURCES) +src_gtk_ui_sync_ui_gtk_LDADD = $(src_gtk_ui_sync_ui_LDADD) +src_gtk_ui_sync_ui_gtk_CFLAGS = $(src_gtk_ui_sync_ui_CFLAGS) +src_gtk_ui_sync_ui_gtk_CPPFLAGS = $(src_gtk_ui_sync_ui_CPPFLAGS) + +src_gtk_ui_sync_ui_moblin_SOURCES = $(src_gtk_ui_sync_ui_SOURCES) +src_gtk_ui_sync_ui_moblin_LDADD = $(src_gtk_ui_sync_ui_LDADD) +src_gtk_ui_sync_ui_moblin_CFLAGS = $(src_gtk_ui_sync_ui_CFLAGS) +src_gtk_ui_sync_ui_moblin_CPPFLAGS = $(src_gtk_ui_sync_ui_CPPFLAGS) -DUSE_MOBLIN_UX + +CLEANFILES += \ + src/gtk-ui/ui.xml \ + src/gtk-ui/sync-moblin.desktop \ + $(src_gtk_ui_applications_generated) diff --git a/src/src.am b/src/src.am new file mode 100644 index 00000000..590c386b --- /dev/null +++ b/src/src.am @@ -0,0 +1,351 @@ +src_cppflags = -I$(top_srcdir)/src + +if ENABLE_GNOME_BLUETOOTH_PANEL +include $(top_srcdir)/src/gnome-bluetooth/gnome-bluetooth.am +src_cppflags += -I$(top_srcdir)/src/gnome-bluetooth +endif + + +if COND_CORE +include $(top_srcdir)/src/syncevo/syncevo.am +src_cppflags += -I$(top_srcdir)/src/syncevo +include $(top_srcdir)/src/backends/backends.am +src_cppflags += $(addprefix -I$(top_srcdir)/,$(BACKENDS)) -I$(SYNTHESIS_SUBDIR) +bin_PROGRAMS += src/syncevolution +bin_SCRIPTS += src/synccompare +include $(top_srcdir)/src/templates/templates.am +else +src_cppflags += -I$(top_srcdir)/$(SYNTHESIS_SUBDIR_INCLUDES) +endif + +if COND_DBUS +include $(top_srcdir)/src/gdbus/gdbus.am +src_cppflags += -I$(top_srcdir)/src/gdbus +endif +include $(top_srcdir)/src/dbus/dbus.am +src_cppflags += -I$(top_srcdir)/src/dbus +if COND_GUI +include $(top_srcdir)/src/gtk-ui/gtk-ui.am +src_cppflags += -I$(top_srcdir)/src/gtk-ui +endif + +src_cppflags += -I$(top_srcdir)/test -I$(top_srcdir) $(BACKEND_CPPFLAGS) + +DISTCLEANFILES += src/synccompare +CLEANFILES += src/libstdc++.a src/client-test $(CLIENT_LIB_TEST_FILES) + +if COND_DBUS +nodist_bin_SCRIPTS += src/syncevo-http-server +endif +src/syncevo-http-server: $(top_srcdir)/test/syncevo-http-server.py + $(AM_V_GEN)cp $< $@ +CLEANFILES += src/syncevo-http-server + +nodist_bin_SCRIPTS += src/syncevo-phone-config +src/syncevo-phone-config: $(top_srcdir)/test/syncevo-phone-config.py + $(AM_V_GEN)cp $< $@ +CLEANFILES += src/syncevo-phone-config + +SYNCEVOLUTION_DEP = +if !ENABLE_MODULES +# SYNCEVOLUTION_LDADD is defined in configure script. +SYNCEVOLUTION_LDADD += @SYNCSOURCES@ +SYNCEVOLUTION_DEP += @SYNCSOURCES@ +endif +dist_noinst_DATA += \ + src/shlibs.local \ + src/synthesis-includes/Makefile.am \ + src/synthesis-includes/Makefile.in + +DISTCLEANFILES += src/synthesis-includes/Makefile + +# synccompare is created by replacing its 'import Algorithm::Diff;' +# with a simplified copy of Diff.pm. +src/synccompare : $(top_srcdir)/test/Algorithm/Diff.pm $(top_srcdir)/test/synccompare.pl + $(AM_V_GEN)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". +if ENABLE_MODULES +dist_noinst_DATA += $(BACKEND_REGISTRIES) +else +CORE_SOURCES += $(BACKEND_REGISTRIES) +endif + +CORE_CXXFLAGS = $(SYNTHESIS_CFLAGS) +CORE_LDADD = $(SYNCEVOLUTION_LDADD) src/syncevo/libsyncevolution.la $(GLIB_LIBS) $(GTHREAD_LIBS) $(GOBJECT_LIBS) $(LIBS) +CORE_DEP = $(SYNCEVOLUTION_DEP) src/syncevo/libsyncevolution.la $(SYNTHESIS_DEP) +CORE_LD_FLAGS = -Wl,-uSyncEvolution_Module_Version -Wl,--export-dynamic + +# put link to static c++ library into current directory, needed if compiling with --enable-static-c++ +src/libstdc++.a : + $(AM_V_GEN)path=`$(CXX) $(CORE_LDADD) $(LD_FLAGS) -print-file-name=src/libstdc++.a` && ln -s $$path . + +src_syncevolution_SOURCES = \ + src/syncevolution.cpp \ + src/CmdlineSyncClient.h \ + src/CmdlineSyncClient.cpp \ + $(CORE_SOURCES) + +if ENABLE_UNIT_TESTS +nodist_src_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 +src_syncevolution_LDADD = $(CORE_LDADD) $(KEYRING_LIBS) $(KDE_KWALLET_LIBS) +if COND_DBUS +src_syncevolution_LDADD += src/gdbus/libgdbussyncevo.la +endif +src_syncevolution_LDFLAGS = $(CORE_LD_FLAGS) $(DBUS_LIBS) +src_syncevolution_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(KEYRING_CFLAGS) -I$(top_srcdir)/src/gdbus $(DBUS_CFLAGS) $(KDE_KWALLET_CFLAGS) $(SYNCEVO_WFLAGS) +src_syncevolution_DEPENDENCIES = $(EXTRA_LTLIBRARIES) $(CORE_DEP) +src_syncevolution_CPPFLAGS = $(src_cppflags) + +# rule which is only relevant when compiling Synthesis in subdirectory +#$(SYNTHESIS_LIB) : $(SYNTHESIS_SUBDIR)/all +#$(SYNTHESIS_SUBDIR)/% : +# [ ! "$(SYNTHESIS_SUBDIR)" ] || ( cd ${dir $@} && $(MAKE) ${notdir $@} ) + +# include Synthesis in distribution: package only files in git if using a git checkout +all_dist_hooks += src_dist_hook +src_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 ) ) && \ + ( printf '%s' 'Creating ChangeLog...' && \ + ( ( cd '$(SYNTHESIS_SRC)' && \ + echo '# Generated by configure. Do not 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' && \ + printf '%s\n' ' done.' ) || \ + ( rm -f ChangeLog.tmp ; \ + printf '%s\n' ' failed.'; \ + 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 src/testcases + [ ! -L src/templates ] || rm src/templates + +# files created during testing +testclean: + rm -rf src/*.test.vcf src/*.log src/*.tests src/*.diff src/*.dat src/*Client_Sync_*client.* + +distclean-local: + rm -rf $(SYNTHESIS_SUBDIR) + rm -rf $(CLEAN_CLIENT_SRC) + +# Do the linking here, as with all SyncEvolution executables. +# Sources are compiled in dbus/server. +if COND_DBUS +libexec_PROGRAMS += src/syncevo-dbus-server + +src_syncevo_dbus_server_SOURCES = \ + $(CORE_SOURCES) +if ENABLE_UNIT_TESTS +nodist_src_syncevo_dbus_server_SOURCES = test/test.cpp +endif + +src_syncevo_dbus_server_LDADD = src/dbus/server/libsyncevodbusserver.la src/gdbus/libgdbussyncevo.la $(CORE_LDADD) $(KEYRING_LIBS) $(LIBNOTIFY_LIBS) $(MLITE_LIBS) $(KDE_KWALLET_LIBS) $(DBUS_LIBS) +src_syncevo_dbus_server_CPPFLAGS = -DHAVE_CONFIG_H -I$(top_srcdir)/src/gdbus $(src_cppflags) -DSYNCEVOLUTION_LOCALEDIR=\"${SYNCEVOLUTION_LOCALEDIR}\" +src_syncevo_dbus_server_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(GLIB_CFLAGS) $(DBUS_CFLAGS) $(LIBSOUP_CFLAGS) $(KEYRING_CFLAGS) $(LIBNOTIFY_CFLAGS) $(MLITE_CFLAGS) $(KDE_KWALLET_CFLAGS) $(SYNCEVO_WFLAGS) +src_syncevo_dbus_server_LDFLAGS = $(CORE_LD_FLAGS) $(LIBSOUP_LIBS) +src_syncevo_dbus_server_DEPENDENCIES = src/dbus/server/libsyncevodbusserver.la src/gdbus/libgdbussyncevo.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. +src_client_test_SOURCES = \ + src/client-test-app.cpp \ + src/CmdlineSyncClient.cpp \ + test/ClientTest.cpp \ + test/ClientTest.h \ + test/client-test-main.cpp \ + $(CORE_SOURCES) +nodist_src_client_test_SOURCES = test/test.cpp + +if ENABLE_BUTEO_TESTS +src_client_test_buteo_moc_files = src/client-test-buteo.moc.cpp +src_client_test_SOURCES += \ + src/client-test-buteo.h \ + src/client-test-buteo.cpp +nodist_src_client_test_SOURCES += $(src_client_test_buteo_moc_files) +BUILT_SOURCES += $(src_client_test_buteo_moc_files) +endif + +# list of test file base files +# +# Generated files (testcases/eds_event.ics.funambol.tem) are derived from +# the original base file ($(srcdir)/test/testcases/eds_event.ics) by +# applying a patch ($(srcdir)/test/testcases/eds_event.ics.funambol.tem.patch). +CLIENT_LIB_TEST_FILES = \ + src/testcases/lcs/file1.txt \ + src/testcases/lcs/file2.txt \ + src/testcases/local.png \ + src/testcases/templates/clients/SyncEvolution.ini \ + src/testcases/templates/clients/phone/nokia/S40/7210c.ini \ + src/testcases/google_event.ics \ + src/testcases/yahoo_contact.vcf \ + src/testcases/eds_contact.vcf \ + src/testcases/eds_event.ics \ + src/testcases/eds_event.ics.local \ + src/testcases/eds_memo.ics \ + src/testcases/eds_task.ics + +# all patch files +TEST_FILES_PATCHES = $(wildcard $(top_srcdir)/test/testcases/*.patch) +# generated local files +# converts from +# $(top_srcdir)/test/testcases/eds_contact.vcf.apple.tem.patch +# to +# src/testcases/eds_contact.vcf.apple.tem +TEST_FILES_GENERATED = $(subst .patch,,$(subst $(top_srcdir)/test/,src/,$(TEST_FILES_PATCHES))) +# all patched files, regardless whether the patch already exists +TEST_FILES_PATCHED = $(wildcard src/testcases/*.tem) +# add files created via patches +CLIENT_LIB_TEST_FILES += $(TEST_FILES_GENERATED) + +src_client_test_CPPFLAGS = -DHAVE_CONFIG_H -DENABLE_INTEGRATION_TESTS -DENABLE_UNIT_TESTS $(src_cppflags) $(BUTEOSYNCPROFILE_CFLAGS) $(BUTEOSYNCCOMMON_CFLAGS) $(QT_CPPFLAGS) +src_client_test_CXXFLAGS = @CPPUNIT_CXXFLAGS@ $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(KEYRING_CFLAGS) $(BUTEOSYNCPROFILE_CFLAGS) $(BUTEOSYNCCOMMON_CFLAGS) $(filter-out -O2 -g -W -Wall, $(QT_CXXFLAGS)) $(SYNCEVO_WFLAGS) +src_client_test_LDFLAGS = @CPPUNIT_LDFLAGS@ `nm src/syncevo/.libs/libsyncevolution.a | grep funambolAutoRegisterRegistry | sed -e 's/.* /-Wl,-u/'` $(CORE_LD_FLAGS) $(KEYRING_LIBS) $(BUTEOSYNCPROFILE_LIBS) $(BUTEOSYNCCOMMON_LIBS) $(QT_LDFLAGS) +src_client_test_LDADD = $(CORE_LDADD) $(SYNTHESIS_ENGINE) $(BUTEOSYNCPROFILE_LIBS) $(BUTEOSYNCCOMMON_LIBS) $(QT_LIBS) +# 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 +# +# If we create the patched file anew, then set its time to the more +# recent of the two input files. That way it won't be re-generated +# (because it is not older), and it won't be used to refresh the patch +# either in testcase2patch (because it is not newer either). +# That is useful on platforms where diff produces different results +# than the one in the source (possible because the "find shortest +# patch" problem may have multiple solutions). +all_phonies += $(TEST_FILES_GENERATED) +$(TEST_FILES_GENERATED): + @ set -e \ + && mkdir -p 'src/testcases' \ + && echo 'checking whether server specific test case $@ is up-to-date'; \ + patchfile='$(top_srcdir)/test/$(subst src/,,$@).patch'; \ + basefile='$(top_srcdir)/test/$(subst src/,,$(basename $(basename $@)))'; \ + ( [ -e '$@' ] && [ ! '$@' -ot "$$patchfile" ] && [ ! $@ -ot "$$basefile" ] && echo ' $@ up-to-date' ) || \ + ( [ ! -s "$$patchfile" ] && echo " copy $$basefile to $@ because patch file is empty" && cp "$$basefile" '$@' ) || \ + ( echo " generating $@ by applying $$patchfile to $$basefile" && \ + (echo '*** foo'; echo '--- bar'; cat "$$patchfile") | patch -s -o '$@' "$$basefile" && \ + ( if [ "$$basefile" -ot "$$patchfile" ]; then \ + touch -r "$$patchfile" '$@'; else \ + touch -r "$$basefile" '$@'; fi ) \ + ) + + +# 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. +all_phonies += testcase2patch +testcase2patch: $(TEST_FILES_GENERATED) + @ set -e \ + && echo 'checking whether test case patch files are up-to-date'; \ + for i in src/testcases/*.tem; do \ + temfile=`echo "$$i" | cut -d / -f 2-` \ + patchfile="$(top_srcdir)/test/$$temfile.patch"; \ + basefile="$(top_srcdir)/test/`echo $$temfile | 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"; \ + else \ + echo " $$patchfile up-to-date"; \ + fi; \ + done + +# copy base test files +$(filter-out %.tem, $(filter src/testcases/%, $(subst $(top_srcdir)/test/,src/,$(CLIENT_LIB_TEST_FILES)))) : src/% : $(top_srcdir)/test/% + $(AM_V_at)mkdir -p '$(dir $@)'; \ + 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. +src_client_test_DEPENDENCIES = $(EXTRA_LTLIBRARIES) $(CORE_DEP) $(CLIENT_LIB_TEST_FILES) testcase2patch src/synccompare src/templates + +CLEANFILES += $(src_client_test_buteo_moc_files) + +# copy template directory into current working directory, if not there +# yet +all_phonies += src/templates +src/templates: + $(AM_V_at)if test '$(top_srcdir)/src/templates' != 'src/templates' && test '$(top_srcdir)' != '.'; \ + then \ + rm -rf src/templates; \ + ln -s '$(top_srcdir)/src/templates' 'src/templates'; \ + fi + +# distribute test system? +if ENABLE_TESTING +# yes: install client-test in bindir, test files in datadir +TESTS += test/run_src_client_test.sh +bin_PROGRAMS += src/client-test +include $(top_srcdir)/src/testcases.am +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 += src/client-test +nodist_src_client_test_SOURCES += $(CLIENT_LIB_TEST_FILES) +src_client_test_DEPENDENCIES += all +endif + +# test program for output redirection, has to be built +# and run manually +EXTRA_PROGRAMS += src/abort-redirect +CLEANFILES += src/abort-redirect.log +src_abort_redirect_SOURCES = test/abort-redirect.cpp +src_abort_redirect_CPPFLAGS = -DHAVE_CONFIG_H $(src_cppflags) +src_abort_redirect_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(CORE_CXXFLAGS) $(SYNCEVO_WFLAGS) +src_abort_redirect_LDFLAGS = $(CORE_LD_FLAGS) +src_abort_redirect_LDADD = $(CORE_LDADD) +src_abort_redirect_DEPENDENCIES = all + + +# special target for testing with valgrind +valgrind : src/test + valgrind --leak-check=yes --suppressions=valgrind.supp src/client-test + +# old-style name for test program(s) +all_phonies += test valgrind +src/test: src/client-test diff --git a/src/syncevo/.gitignore b/src/syncevo/.gitignore deleted file mode 100644 index 86e90402..00000000 --- a/src/syncevo/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/CmdlineHelp.c -/SyncEvolutionXML.c -/syncevolution.pc diff --git a/src/syncevo/Makefile.am b/src/syncevo/Makefile.am deleted file mode 100644 index 4495a88e..00000000 --- a/src/syncevo/Makefile.am +++ /dev/null @@ -1,220 +0,0 @@ -AM_CPPFLAGS = @BACKEND_CPPFLAGS@ @GLIB_CFLAGS@ -I$(top_srcdir)/test -I$(top_srcdir)/src -DSYNCEVO_BACKEND=\"$(backendsearchdir)\" - -SUBDIRS = configs -BUILT_SOURCES = - -# applies to sources in SyncEvolution repository, but not -# the Funambol C++ client library -SYNCEVOLUTION_CXXFLAGS = @SYNCEVOLUTION_CXXFLAGS@ - -SYNCEVOLUTION_LDADD = @SYNCEVOLUTION_LDADD@ -MAINTAINERCLEANFILES = Makefile.in - -if ENABLE_UNIT_TESTS -SYNCEVOLUTION_CXXFLAGS += $(CPPUNIT_CXXFLAGS) -SYNCEVOLUTION_LDADD += $(CPPUNIT_LDFLAGS) -endif - -lib_LTLIBRARIES = libsyncevolution.la - -SYNCEVOLUTION_SOURCES = \ - ConfigTree.h \ - ConfigFilter.h \ - ConfigFilter.cpp \ - ConfigNode.h \ - ConfigNode.cpp \ - HashConfigNode.h \ - VolatileConfigNode.h \ - VolatileConfigTree.h \ - SmartPtr.h \ - eds_abi_wrapper.h \ - eds_abi_wrapper.cpp \ - GLibSupport.h \ - GLibSupport.cpp \ - \ - SyncML.h \ - SyncML.cpp \ - \ - SynthesisEngine.h \ - SynthesisEngine.cpp \ - \ - Logging.h \ - Logging.cpp \ - LogStdout.h \ - LogStdout.cpp \ - LogRedirect.h \ - LogRedirect.cpp \ - \ - TransportAgent.h \ - TransportAgent.cpp \ - CurlTransportAgent.h \ - CurlTransportAgent.cpp \ - \ - SoupTransportAgent.h \ - SoupTransportAgent.cpp \ - \ - LocalTransportAgent.h \ - LocalTransportAgent.cpp \ - \ - util.cpp \ - util.h \ - \ - lcs.h \ - lcs.cpp \ - \ - Cmdline.cpp \ - Cmdline.h \ - \ - SyncSource.h \ - SyncSource.cpp \ - \ - SynthesisDBPlugin.cpp \ - \ - SyncContext.h \ - SyncContext.cpp \ - \ - SyncConfig.h \ - SyncConfig.cpp \ - \ - DevNullConfigNode.h \ - MultiplexConfigNode.h \ - MultiplexConfigNode.cpp \ - \ - FilterConfigNode.h \ - FilterConfigNode.cpp \ - \ - SafeConfigNode.h \ - SafeConfigNode.cpp \ - \ - PrefixConfigNode.h \ - PrefixConfigNode.cpp \ - \ - FileConfigNode.h \ - FileConfigNode.cpp \ - \ - IniConfigNode.h \ - IniConfigNode.cpp \ - SingleFileConfigTree.h \ - SingleFileConfigTree.cpp \ - \ - DataBlob.h \ - FileDataBlob.h \ - FileDataBlob.cpp \ - StringDataBlob.h \ - StringDataBlob.cpp \ - \ - SafeOstream.h \ - SafeOstream.cpp \ - \ - FileConfigTree.h \ - FileConfigTree.cpp \ - \ - MapSyncSource.h \ - MapSyncSource.cpp \ - \ - TrackingSyncSource.h \ - TrackingSyncSource.cpp - -if ENABLE_ICAL -SYNCEVOLUTION_SOURCES += \ - icalstrdup.c \ - icalstrdup.h -endif - - -libsyncevolution_includedir= $(includedir)/syncevo -libsyncevolution_include_HEADERS = \ - declarations.h \ - Cmdline.h \ - ConfigFilter.h \ - GLibSupport.h \ - TrackingSyncSource.h \ - MapSyncSource.h \ - LogRedirect.h \ - LogStdout.h \ - FileConfigNode.h \ - FilterConfigNode.h \ - PrefixConfigNode.h \ - SafeConfigNode.h \ - SyncConfig.h \ - SyncSource.h \ - util.h \ - SyncContext.h \ - SynthesisEngine.h \ - Logging.h \ - SyncML.h \ - eds_abi_wrapper.h \ - icalstrdup.h \ - SmartPtr.h \ - ConfigNode.h - - -if ENABLE_OBEX -SYNCEVOLUTION_SOURCES += ObexTransportAgent.h ObexTransportAgent.cpp -SYNCEVOLUTION_LDADD += $(LIBOPENOBEX_LIBS) -SYNCEVOLUTION_CXXFLAGS += $(LIBOPENOBEX_CFLAGS) -if ENABLE_BLUETOOTH -SYNCEVOLUTION_LDADD += $(BLUEZ_LIBS) -SYNCEVOLUTION_CXXFLAGS += $(BLUEZ_CFLAGS) -endif -endif - -pkgconfigdir=$(libdir)/pkgconfig -pkgconfig_DATA=syncevolution.pc -DISTCLEANFILES =syncevolution.pc -EXTRA_DIST =syncevolution.pc.in - -libsyncevolution_la_SOURCES = $(SYNCEVOLUTION_SOURCES) -nodist_libsyncevolution_la_SOURCES = SyncEvolutionXML.c -CLEANFILES = SyncEvolutionXML.c -libsyncevolution_la_LIBADD = @EPACKAGE_LIBS@ @GIO_LIBS@ @GTHREAD_LIBS@ @GLIB_LIBS@ $(SYNTHESIS_LIBS) $(TRANSPORT_LIBS) @LIBS@ $(SYNCEVOLUTION_LDADD) $(NSS_LIBS) -libsyncevolution_la_CXXFLAGS = $(TRANSPORT_CFLAGS) $(SYNCEVOLUTION_CXXFLAGS) $(SYNTHESIS_CFLAGS) $(NSS_CFLAGS) -libsyncevolution_la_CPPFLAGS = $(AM_CPPFLAGS) \ - -DDATA_DIR=\""$(pkgdatadir)"\" \ - -DXML_CONFIG_DIR=\""$(datadir)/syncevolution/xml"\" \ - -DTEMPLATE_DIR=\""$(datadir)/syncevolution/templates"\" \ - -DLIBDIR=\""$(libdir)"\" -libsyncevolution_la_DEPENDENCIES = $(SYNTHESIS_DEP) - -if ENABLE_MODULES -libsyncevolution_la_LDFLAGS = -else -libsyncevolution_la_LDFLAGS = -static -endif - -# command which embeds its input lines into a C-style string that runs across multiple lines -TO_C_STRING = sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/' - -# Don't depend on specific XML files. Instead recreate -# SyncEvolutionXML.c each time make is invoked (allows including new -# fragments in the binary without rerunning configure). -SyncEvolutionXML.c: GenSyncEvolutionXML -.PHONY: GenSyncEvolutionXML -GenSyncEvolutionXML: - echo "const char *SyncEvolutionXMLClient =" > SyncEvolutionXML.c.new - (cd $(srcdir)/configs && perl update-samples.pl syncevolution.xml client ) | \ - perl -p -e 's;</datatypes>; <fieldlists/>\n <profiles/>\n <datatypedefs/>\n </datatypes>;' | \ - $(TO_C_STRING) >>SyncEvolutionXML.c.new - echo ";" >>SyncEvolutionXML.c.new - echo "const char *SyncEvolutionXMLClientRules =" >> SyncEvolutionXML.c.new - (cd $(srcdir)/configs && cat remoterules/*.xml remoterules/client/*.xml) | $(TO_C_STRING) >>SyncEvolutionXML.c.new - echo ";" >>SyncEvolutionXML.c.new - if cmp SyncEvolutionXML.c SyncEvolutionXML.c.new >/dev/null; then rm SyncEvolutionXML.c.new; else mv SyncEvolutionXML.c.new SyncEvolutionXML.c; fi - -# turn README.rst into a file with plain text strings for -# "Synopsis" and "Usage" -CLEANFILES += CmdlineHelp.c -BUILT_SOURCES += CmdlineHelp.c -EXTRA_DIST += readme2c.pl -CmdlineHelp.c: readme2c.pl $(top_srcdir)/README.rst - perl $+ >$@ - -# include boost in distribution -#dist-hook: -# cp -r $(srcdir)/boost $(distdir) -# find $(distdir) -name .libs -o -name "*~" -o -name ".*" -o -name "*.o" -o -name "*.lo" -o -name CVS -o -name autom4te.cache | xargs rm -rf - -# make sure that the installed development files are usable -installcheck-local: $(srcdir)/installcheck-local.sh - env PKG_CONFIG_PATH=$(DESTDIR)/$(pkgconfigdir):$$PKG_CONFIG_PATH $< "$(DESTDIR)/$(libsyncevolution_includedir)" "$(DESTDIR)/$(includedir)" "$(DESTDIR)/$(libdir)" -EXTRA_DIST += installcheck-local.sh diff --git a/src/syncevo/SingleFileConfigTree.h b/src/syncevo/SingleFileConfigTree.h index adf31188..601a4c43 100644 --- a/src/syncevo/SingleFileConfigTree.h +++ b/src/syncevo/SingleFileConfigTree.h @@ -20,9 +20,9 @@ #ifndef INCL_EVOLUTION_SINGLE_FILE_CONFIG_TREE # define INCL_EVOLUTION_SINGLE_FILE_CONFIG_TREE -#include <ConfigTree.h> -#include <DataBlob.h> -#include <util.h> +#include <syncevo/ConfigTree.h> +#include <syncevo/DataBlob.h> +#include <syncevo/util.h> #include <string> #include <map> diff --git a/src/syncevo/SoupTransportAgent.cpp b/src/syncevo/SoupTransportAgent.cpp index 3cd56bc3..ba38cd7b 100644 --- a/src/syncevo/SoupTransportAgent.cpp +++ b/src/syncevo/SoupTransportAgent.cpp @@ -24,7 +24,7 @@ #include <algorithm> #include <libsoup/soup-status.h> -#include <Logging.h> +#include <syncevo/Logging.h> #ifdef HAVE_LIBSOUP_SOUP_GNOME_FEATURES_H #include <libsoup/soup-gnome-features.h> diff --git a/src/syncevo/configs/Makefile.am b/src/syncevo/configs/Makefile.am deleted file mode 100644 index fc449bf4..00000000 --- a/src/syncevo/configs/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -xmldir = $(datadir)/syncevolution/xml -nobase_dist_xml_DATA = $(shell cd $(srcdir) && find * -name '*.xml') update-samples.pl diff --git a/src/syncevo/configs/configs.am b/src/syncevo/configs/configs.am new file mode 100644 index 00000000..44ced442 --- /dev/null +++ b/src/syncevo/configs/configs.am @@ -0,0 +1,7 @@ +src_syncevo_configs_xmldir = $(datadir)/syncevolution/xml +dist_src_syncevo_configs_xml_SCRIPTS = src/syncevo/configs/update-samples.pl + +dist_noinst_DATA += \ + src/syncevo/configs/README + +include $(top_srcdir)/src/syncevo/configs/configs_xml.am diff --git a/src/syncevo/configs/configs_xml.am b/src/syncevo/configs/configs_xml.am new file mode 100644 index 00000000..d878b37e --- /dev/null +++ b/src/syncevo/configs/configs_xml.am @@ -0,0 +1,31 @@ +# TODO: preferably generate this list instead +#./*.xml +src_syncevo_configsdir = $(datadir)/syncevolution/xml +dist_src_syncevo_configs_DATA = $(wildcard src/syncevo/configs/*.xml) +# ./datatypes/*.xml +src_syncevo_configs_datatypesdir = $(datadir)/syncevolution/xml/datatypes +dist_src_syncevo_configs_datatypes_DATA = $(wildcard src/syncevo/configs/datatypes/*.xml) +# ./datatypes/server/*.xml +src_syncevo_configs_datatypes_serverdir = $(datadir)/syncevolution/xml/datatypes/server +dist_src_syncevo_configs_datatypes_server_DATA = $(wildcard src/syncevo/configs/datatypes/server/*.xml) +# ./debug/*.xml +src_syncevo_configs_debugdir = $(datadir)/syncevolution/xml/debug +dist_src_syncevo_configs_debug_DATA = $(wildcard src/syncevo/configs/debug/*.xml) +# ./remoterules/*.xml +src_syncevo_configs_remoterulesdir = $(datadir)/syncevolution/xml/remoterules +dist_src_syncevo_configs_remoterules_DATA = $(wildcard src/syncevo/configs/remoterules/*.xml) +# ./remoterules/client/*.xml +src_syncevo_configs_remoterules_clientdir = $(datadir)/syncevolution/xml/remoterules/client +dist_src_syncevo_configs_remoterules_client_DATA = $(wildcard src/syncevo/configs/remoterules/client/*.xml) +# ./remoterules/server/*.xml +src_syncevo_configs_remoterules_serverdir = $(datadir)/syncevolution/xml/remoterules/server +dist_src_syncevo_configs_remoterules_server_DATA = $(wildcard src/syncevo/configs/remoterules/server/*.xml) +# ./scripting/*.xml +src_syncevo_configs_scriptingdir = $(datadir)/syncevolution/xml/scripting +dist_src_syncevo_configs_scripting_DATA = $(wildcard src/syncevo/configs/scripting/*.xml) +# ./scripting/client/*.xml +src_syncevo_configs_scripting_clientdir = $(datadir)/syncevolution/xml/scripting/client +dist_src_syncevo_configs_scripting_client_DATA = $(wildcard src/syncevo/configs/scripting/client/*.xml) +# ./scripting/server/*.xml +src_syncevo_configs_scripting_serverdir = $(datadir)/syncevolution/xml/scripting/server +dist_src_syncevo_configs_scripting_server_DATA = $(wildcard src/syncevo/configs/scripting/server/*.xml) diff --git a/src/syncevo/syncevo.am b/src/syncevo/syncevo.am new file mode 100644 index 00000000..2521eaca --- /dev/null +++ b/src/syncevo/syncevo.am @@ -0,0 +1,246 @@ +include $(top_srcdir)/src/syncevo/configs/configs.am + +# applies to sources in SyncEvolution repository, but not +# the Funambol C++ client library +src_syncevo_cxxflags = @SYNCEVOLUTION_CXXFLAGS@ +src_syncevo_cppflags = @BACKEND_CPPFLAGS@ @GLIB_CFLAGS@ -I$(top_srcdir)/test -I$(top_builddir)/src/syncevo -I$(top_srcdir)/src -DSYNCEVO_BACKEND=\"$(BACKENDS_SEARCH_DIRECTORY)\" +src_syncevo_ldadd = @SYNCEVOLUTION_LDADD@ + +if ENABLE_UNIT_TESTS +src_syncevo_cxxflags += $(CPPUNIT_CXXFLAGS) +src_syncevo_ldadd += $(CPPUNIT_LDFLAGS) +endif + +lib_LTLIBRARIES += src/syncevo/libsyncevolution.la + +src_syncevo_sources = \ + src/syncevo/ConfigTree.h \ + src/syncevo/ConfigFilter.h \ + src/syncevo/ConfigFilter.cpp \ + src/syncevo/ConfigNode.h \ + src/syncevo/ConfigNode.cpp \ + src/syncevo/HashConfigNode.h \ + src/syncevo/VolatileConfigNode.h \ + src/syncevo/VolatileConfigTree.h \ + src/syncevo/SmartPtr.h \ + src/syncevo/eds_abi_wrapper.h \ + src/syncevo/eds_abi_wrapper.cpp \ + src/syncevo/GLibSupport.h \ + src/syncevo/GLibSupport.cpp \ + \ + src/syncevo/SyncML.h \ + src/syncevo/SyncML.cpp \ + \ + src/syncevo/SynthesisEngine.h \ + src/syncevo/SynthesisEngine.cpp \ + \ + src/syncevo/Logging.h \ + src/syncevo/Logging.cpp \ + src/syncevo/LogStdout.h \ + src/syncevo/LogStdout.cpp \ + src/syncevo/LogRedirect.h \ + src/syncevo/LogRedirect.cpp \ + \ + src/syncevo/TransportAgent.h \ + src/syncevo/TransportAgent.cpp \ + src/syncevo/CurlTransportAgent.h \ + src/syncevo/CurlTransportAgent.cpp \ + \ + src/syncevo/SoupTransportAgent.h \ + src/syncevo/SoupTransportAgent.cpp \ + \ + src/syncevo/LocalTransportAgent.h \ + src/syncevo/LocalTransportAgent.cpp \ + \ + src/syncevo/util.cpp \ + src/syncevo/util.h \ + \ + src/syncevo/lcs.h \ + src/syncevo/lcs.cpp \ + \ + src/syncevo/Cmdline.cpp \ + src/syncevo/Cmdline.h \ + \ + src/syncevo/SyncSource.h \ + src/syncevo/SyncSource.cpp \ + \ + src/syncevo/SynthesisDBPlugin.cpp \ + \ + src/syncevo/SyncContext.h \ + src/syncevo/SyncContext.cpp \ + \ + src/syncevo/SyncConfig.h \ + src/syncevo/SyncConfig.cpp \ + \ + src/syncevo/DevNullConfigNode.h \ + src/syncevo/MultiplexConfigNode.h \ + src/syncevo/MultiplexConfigNode.cpp \ + \ + src/syncevo/FilterConfigNode.h \ + src/syncevo/FilterConfigNode.cpp \ + \ + src/syncevo/SafeConfigNode.h \ + src/syncevo/SafeConfigNode.cpp \ + \ + src/syncevo/PrefixConfigNode.h \ + src/syncevo/PrefixConfigNode.cpp \ + \ + src/syncevo/FileConfigNode.h \ + src/syncevo/FileConfigNode.cpp \ + \ + src/syncevo/IniConfigNode.h \ + src/syncevo/IniConfigNode.cpp \ + src/syncevo/SingleFileConfigTree.h \ + src/syncevo/SingleFileConfigTree.cpp \ + \ + src/syncevo/DataBlob.h \ + src/syncevo/FileDataBlob.h \ + src/syncevo/FileDataBlob.cpp \ + src/syncevo/StringDataBlob.h \ + src/syncevo/StringDataBlob.cpp \ + \ + src/syncevo/SafeOstream.h \ + src/syncevo/SafeOstream.cpp \ + \ + src/syncevo/FileConfigTree.h \ + src/syncevo/FileConfigTree.cpp \ + \ + src/syncevo/MapSyncSource.h \ + src/syncevo/MapSyncSource.cpp \ + \ + src/syncevo/TrackingSyncSource.h \ + src/syncevo/TrackingSyncSource.cpp + +if ENABLE_ICAL +src_syncevo_sources += \ + src/syncevo/icalstrdup.c \ + src/syncevo/icalstrdup.h +endif + + +src_syncevo_libsyncevolution_includedir= $(includedir)/syncevo +src_syncevo_libsyncevolution_include_HEADERS = \ + src/syncevo/declarations.h \ + src/syncevo/Cmdline.h \ + src/syncevo/ConfigFilter.h \ + src/syncevo/GLibSupport.h \ + src/syncevo/TrackingSyncSource.h \ + src/syncevo/MapSyncSource.h \ + src/syncevo/LogRedirect.h \ + src/syncevo/LogStdout.h \ + src/syncevo/FileConfigNode.h \ + \ + src/syncevo/FilterConfigNode.h \ + src/syncevo/PrefixConfigNode.h \ + src/syncevo/SafeConfigNode.h \ + src/syncevo/SyncConfig.h \ + src/syncevo/SyncSource.h \ + src/syncevo/util.h \ + src/syncevo/SyncContext.h \ + src/syncevo/SynthesisEngine.h \ + src/syncevo/Logging.h \ + src/syncevo/SyncML.h \ + src/syncevo/eds_abi_wrapper.h \ + src/syncevo/icalstrdup.h \ + src/syncevo/SmartPtr.h \ + src/syncevo/ConfigNode.h + + +if ENABLE_OBEX +src_syncevo_sources += \ + src/syncevo/ObexTransportAgent.h \ + src/syncevo/ObexTransportAgent.cpp + +src_syncevo_ldadd += $(LIBOPENOBEX_LIBS) +src_syncevo_cxxflags += $(LIBOPENOBEX_CFLAGS) +if ENABLE_BLUETOOTH +src_syncevo_ldadd += $(BLUEZ_LIBS) +src_syncevo_cxxflags += $(BLUEZ_CFLAGS) +endif +endif + +#pkgconfigdir is defined in $(top_srcdir)/setup-variables.am +pkgconfig_DATA += src/syncevo/syncevolution.pc +DISTCLEANFILES += src/syncevo/syncevolution.pc +dist_noinst_DATA += src/syncevo/syncevolution.pc.in + +src_syncevo_libsyncevolution_la_SOURCES = $(src_syncevo_sources) +nodist_src_syncevo_libsyncevolution_la_SOURCES = src/syncevo/SyncEvolutionXML.c +CLEANFILES += src/syncevo/SyncEvolutionXML.c +src_syncevo_libsyncevolution_la_LIBADD = \ + @EPACKAGE_LIBS@ \ + @GIO_LIBS@ \ + @GTHREAD_LIBS@ \ + @GLIB_LIBS@ \ + $(SYNTHESIS_LIBS) \ + $(TRANSPORT_LIBS) \ + @LIBS@ \ + $(src_syncevo_ldadd) \ + $(NSS_LIBS) +src_syncevo_libsyncevolution_la_CXXFLAGS = \ + $(TRANSPORT_CFLAGS) \ + $(src_syncevo_cxxflags) \ + $(SYNTHESIS_CFLAGS) \ + $(NSS_CFLAGS) \ + $(SYNCEVO_WFLAGS) +src_syncevo_libsyncevolution_la_CFLAGS = \ + $(SYNCEVO_WFLAGS) +src_syncevo_libsyncevolution_la_CPPFLAGS = \ + $(src_syncevo_cppflags) \ + -DDATA_DIR=\""$(pkgdatadir)"\" \ + -DXML_CONFIG_DIR=\""$(datadir)/syncevolution/xml"\" \ + -DTEMPLATE_DIR=\""$(datadir)/syncevolution/templates"\" \ + -DLIBDIR=\""$(libdir)"\" +src_syncevo_libsyncevolution_la_DEPENDENCIES = $(SYNTHESIS_DEP) @SYNCEVOLUTION_LDADD@ + +if ENABLE_MODULES +src_syncevo_libsyncevolution_la_LDFLAGS = +else +src_syncevo_libsyncevolution_la_LDFLAGS = -static +endif + +# command which embeds its input lines into a C-style string that runs across multiple lines +TO_C_STRING = sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/' + +# Don't depend on specific XML files. Instead recreate +# SyncEvolutionXML.c each time make is invoked (allows including new +# fragments in the binary without rerunning configure). +src/syncevo/SyncEvolutionXML.c: src/syncevo/GenSyncEvolutionXML + $(AM_V_GEN) + @true +all_phonies += src/syncevo/GenSyncEvolutionXML +src/syncevo/GenSyncEvolutionXML: + $(AM_V_at)echo "const char *SyncEvolutionXMLClient =" >src/syncevo/SyncEvolutionXML.c.new \ + && (cd $(top_srcdir)/src/syncevo/configs && perl update-samples.pl syncevolution.xml client ) | \ + perl -p -e 's;</datatypes>; <fieldlists/>\n <profiles/>\n <datatypedefs/>\n </datatypes>;' | \ + $(TO_C_STRING) >>src/syncevo/SyncEvolutionXML.c.new \ + && echo ";" >>src/syncevo/SyncEvolutionXML.c.new \ + && echo "const char *SyncEvolutionXMLClientRules =" >>src/syncevo/SyncEvolutionXML.c.new \ + && (cd $(top_srcdir)/src/syncevo/configs && cat remoterules/*.xml remoterules/client/*.xml) | $(TO_C_STRING) >>src/syncevo/SyncEvolutionXML.c.new \ + && echo ";" >>src/syncevo/SyncEvolutionXML.c.new \ + && if cmp -s src/syncevo/SyncEvolutionXML.c src/syncevo/SyncEvolutionXML.c.new; \ + then \ + rm src/syncevo/SyncEvolutionXML.c.new; \ + else \ + mv src/syncevo/SyncEvolutionXML.c.new src/syncevo/SyncEvolutionXML.c; \ + fi; + +# turn README.rst into a file with plain text strings for +# "Synopsis" and "Usage" +CLEANFILES += src/syncevo/CmdlineHelp.c +BUILT_SOURCES += src/syncevo/CmdlineHelp.c +dist_noinst_SCRIPTS += src/syncevo/readme2c.pl +src/syncevo/CmdlineHelp.c: src/syncevo/readme2c.pl $(top_srcdir)/README.rst + $(AM_V_GEN)perl $+ >$@ + +# include boost in distribution +#dist-hook: +# cp -r $(srcdir)/boost $(distdir) +# find $(distdir) -name .libs -o -name "*~" -o -name ".*" -o -name "*.o" -o -name "*.lo" -o -name CVS -o -name autom4te.cache | xargs rm -rf + +# make sure that the installed development files are usable +src_syncevo_install_check_local: $(top_srcdir)/src/syncevo/installcheck-local.sh + env PKG_CONFIG_PATH=$(DESTDIR)/$(pkgconfigdir):$$PKG_CONFIG_PATH $< "$(DESTDIR)/$(src_syncevo_libsyncevolution_includedir)" "$(DESTDIR)/$(includedir)" "$(DESTDIR)/$(libdir)" + +all_local_installchecks += src_syncevo_install_check_local +dist_noinst_SCRIPTS += src/syncevo/installcheck-local.sh diff --git a/src/syncevo/syncevolution.pc.in b/src/syncevo/syncevolution.pc.in index ef46d44d..aaecb924 100644 --- a/src/syncevo/syncevolution.pc.in +++ b/src/syncevo/syncevolution.pc.in @@ -3,6 +3,7 @@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ backenddir=@libdir@/syncevolution/backends +datarootdir=@datarootdir@ templatedir=@datadir@/syncevolution/templates Name: libsyncevolution diff --git a/src/templates/templates.am b/src/templates/templates.am new file mode 100644 index 00000000..1fe1ffb8 --- /dev/null +++ b/src/templates/templates.am @@ -0,0 +1,16 @@ +# TODO: preferably generate this list instead +# ./ +src_templatesdir = $(datadir)/syncevolution/templates +dist_src_templates_DATA = src/templates/README +# ./clients +src_templates_clientsdir = $(datadir)/syncevolution/templates/clients +dist_src_templates_clients_DATA = $(wildcard src/templates/clients/*.ini) +# ./clients/phone +src_templates_clients_phonedir = $(datadir)/syncevolution/templates/clients/phone +dist_src_templates_clients_phone_DATA = $(wildcard src/templates/clients/phone/*.ini) +# ./contexts +src_templates_contextsdir = $(datadir)/syncevolution/templates/contexts +dist_src_templates_contexts_DATA = $(wildcard src/templates/contexts/*.ini) +# ./servers +src_templates_serversdir = $(datadir)/syncevolution/templates/servers +dist_src_templates_servers_DATA = $(wildcard src/templates/servers/*.ini) diff --git a/src/testcases.am b/src/testcases.am new file mode 100644 index 00000000..6a065687 --- /dev/null +++ b/src/testcases.am @@ -0,0 +1,27 @@ +# this file is not standalone. it needs variable TEST_FILES_GENERATED to be +# already defined. + +src_testcasesdir = $(docdir)/testcases +dist_src_testcases_DATA = \ + src/testcases/local.png \ + src/testcases/google_event.ics \ + src/testcases/yahoo_contact.vcf \ + src/testcases/eds_contact.vcf \ + src/testcases/eds_event.ics \ + src/testcases/eds_event.ics.local \ + src/testcases/eds_memo.ics \ + src/testcases/eds_task.ics \ + $(TEST_FILES_GENERATED) + +src_testcases_lcsdir = $(docdir)/testcases/lcs +dist_src_testcases_lcs_DATA = \ + src/testcases/lcs/file1.txt \ + src/testcases/lcs/file2.txt + +src_testcases_templates_clientsdir = $(docdir)/testcases/templates/clients +dist_src_testcases_templates_clients_DATA = \ + src/testcases/templates/clients/SyncEvolution.ini + +src_testcases_templates_clients_phone_nokia_s40dir = $(docdir)/testcases/templates/clients/phone/nokia/S40 +dist_src_testcases_templates_clients_phone_nokia_s40_DATA = \ + src/testcases/templates/clients/phone/nokia/S40/7210c.ini diff --git a/test/Makefile.am b/test/Makefile.am deleted file mode 100644 index cfec2ded..00000000 --- a/test/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -EXTRA_DIST = \ - abort-redirect.cpp \ - ClientTest.h \ - ClientTest.cpp \ - COPYING \ - client-test-main.cpp \ - test.h \ - test.cpp \ - Algorithm/Artistic \ - Algorithm/COPYING \ - Algorithm/Diff.pm \ - Algorithm/README \ - testcases/eds_event.ics \ - testcases/eds_event.ics.local \ - testcases/eds_task.ics \ - testcases/vcal10.ics \ - testcases/eds_contact.vcf \ - testcases/eds_contact.vcf \ - testcases/eds_memo.ics \ - testcases/google_event.ics \ - testcases/yahoo_contact.vcf \ - testcases/lcs/file1.txt \ - testcases/lcs/file2.txt \ - testcases/local.png \ - testcases/templates/clients/phone/nokia/S40/7210c.ini \ - testcases/templates/clients/SyncEvolution.ini \ - syncevo-http-server.py \ - syncevo-http-server-logging.conf \ - syncevo-phone-config.py \ - $(wildcard testcases/*.patch) \ - synccompare.pl diff --git a/test/run_src_client_test.sh b/test/run_src_client_test.sh new file mode 100755 index 00000000..740da46b --- /dev/null +++ b/test/run_src_client_test.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# This script is run by `make check'. Since `make check' is run from top source +# directory and `client-test' is expected to be run from `src' directory, this +# script have to be employed, so `client-test' can find some files. +cd 'src' && ./client-test diff --git a/test/test-dbus.py b/test/test-dbus.py index 16d2b4f6..60aed1a6 100755 --- a/test/test-dbus.py +++ b/test/test-dbus.py @@ -291,6 +291,28 @@ def ShutdownSubprocess(popen, timeout): return False return True +def TryKill(pid, signal): + try: + os.kill(pid, signal) + except OSError, ex: + # might have quit in the meantime, deal with the race + # condition + if ex.errno != 3: + raise ex + +def ShutdownSubprocess(popen, timeout): + start = time.time() + if popen.poll() == None: + TryKill(popen.pid, signal.SIGTERM) + while popen.poll() == None and start + timeout >= time.time(): + time.sleep(0.01) + if popen.poll() == None: + TryKill(popen.pid, signal.SIGKILL) + while popen.poll() == None and start + timeout + 1 >= time.time(): + time.sleep(0.01) + return False + return True + class DBusUtil(Timeout): """Contains the common run() method for all D-Bus test suites and some utility functions.""" diff --git a/test/test.am b/test/test.am new file mode 100644 index 00000000..37ea3ba9 --- /dev/null +++ b/test/test.am @@ -0,0 +1,36 @@ +dist_noinst_DATA += \ + test/abort-redirect.cpp \ + test/ClientTest.h \ + test/ClientTest.cpp \ + test/client-test-main.cpp \ + test/test.h \ + test/test.cpp + +dist_noinst_SCRIPTS += \ + test/Algorithm/Diff.pm \ + test/syncevo-http-server.py \ + test/syncevo-phone-config.py \ + test/synccompare.pl \ + test/run_src_client_test.sh + +dist_noinst_DATA += \ + test/COPYING \ + test/Algorithm/Artistic \ + test/Algorithm/COPYING \ + test/Algorithm/README \ + test/testcases/eds_event.ics \ + test/testcases/eds_event.ics.local \ + test/testcases/eds_task.ics \ + test/testcases/vcal10.ics \ + test/testcases/eds_contact.vcf \ + test/testcases/eds_contact.vcf \ + test/testcases/eds_memo.ics \ + test/testcases/google_event.ics \ + test/testcases/yahoo_contact.vcf \ + test/testcases/lcs/file1.txt \ + test/testcases/lcs/file2.txt \ + test/testcases/local.png \ + test/testcases/templates/clients/phone/nokia/S40/7210c.ini \ + test/testcases/templates/clients/SyncEvolution.ini \ + test/syncevo-http-server-logging.conf \ + $(wildcard test/testcases/*.patch) |