The changes necessary to fix this are a bit intrusive, but not
* install libsyncevolution header files in a standard
* change the #include rules inside these .h files so that they use
"syncevolution/" as prefix for all of them, rename "core"
directory to "syncevolution"
* don't depend on config.h in the header files (apps might not
have the same defines in their own config.h)
* install libsyncevolution.la and add a .pc file for it
* scan a directory for backends to open dynamically in
SyncSource.cpp instead of using a hard-coded list (should also
work when running inside the build directory, with backends in
The change at SyncEvolution side has been pushed to eds
points need discussing:
1. To make syncevolution core as a library and remove config.h, I have to add
dependencies for libsyncevolution (eds, glib, etc.); this means a backend developer
who does not touch eds stuff has to install eds library to install libsyncevolution.
2. client-test was always linked to backend libraries even when the backend is
built as dynamic library; I am not sure why it worked like this. I have changed so that
client-test will not link to backend libraries but later dynamically loads the backends
library at runtime if enable-shared is on.
3. We have discussed how to scan possible backend libraries both from a standard path
and the built directory; Patrick pointed out a possible solution to scan the program path
which is passed in as argv in main. This still not worked easily because we are relying
on the static initialization which is before the main routine is called. We may need to
clean up the static initializations if possible.