Hello Patrick, I have no objections to introducing your ONOFF_<feature> mechanism into target_options.h of libsynthesis. The target_option.h mechanism is just our common denominator that works for ALL platforms, even those with weird compilers not allowing external compile switches.
So using ONOFF_<feature> in target_options.h for those defines that need to be controlled from the "outside" in the Linux context makes much sense, and leaves the rest of target_options.h as the static configuration that differentiates the libynthesis builds from other builds based on the same sources, but in completely different build environments. So just go ahead :-) Best Regards, Lukas Zeller On Dec 10, 2009, at 9:20 , Patrick Ohly wrote: > Hello! > > We have an open issue about making compilation of libsynthesis more > dynamic via configure flags, which depends on the more general problem: > Bug 7913 - syncevolution.org binaries + Fedora Core 11 + libpcre.so.3 > Bug 3471 - libsynthesis: better configuration mechanism + debugging > > Right now, all compile-time options are controlled by a static targets.h > file, in the case of Linux/autotools located in > src/Targets/ReleasedProducts/combiEngine_opensource_linux/. > > This file is also used by non-autotools builds. My proposal is to keep > it like that and add the possibility to set defines in > config.h/configure which override the default in targets.h. The > rationale for making that optional is that (at least in theory) such a > config.h could be generated in different ways and it shouldn't be > necessary to update all of these when adding something to targets.h. > > Patch is below. It describes the key approach like this: > +// Many of the options below can also be configured via config.h. > +// If ONOFF_<feature> is defined, then the feature is on if > +// ONOFF_<feature> is != 0, otherwise it is off. If that > +// define is not set, then the default setting in this file applies. > +#ifdef HAVE_CONFIG_H > +# include <config.h> > +#endif > > Is that okay? > > Should I go ahead and add more of these ONOFF_<feature> checks to this > targets.h, or will we do that on demand? > > Bye, Patrick > > diff --git a/configure.in b/configure.in > index 35a7653..5fcda1e 100644 > --- a/configure.in > +++ b/configure.in > @@ -12,10 +12,29 @@ AC_PROG_LIBTOOL > AC_PROG_MAKE_SET > AM_PROG_CC_C_O > > + > dnl All of these libraries have to be compiled and installed > dnl separately. TODO: build bundled sources? > -PKG_CHECK_MODULES(PCRE, libpcre) > +dnl > +dnl WARNING: the initial PKG_CHECK_MODULES() must be executed > +dnl in all cases (i.e., not depend on an if clause) because > +dnl it initializes pkg-config checking. > PKG_CHECK_MODULES(SQLITE3, sqlite3) > +AC_ARG_ENABLE(regex, > + AS_HELP_STRING([--enable-regex], > + [enable regular expression support in scripts, > depends on libpcre, enabled by default]), > + [enable_regex=$enableval], > + [enable_regex="yes"]) > +if test "$enable_regex" == "yes"; then > + PKG_CHECK_MODULES(PCRE, libpcre, > + [HAVE_PCRE=1], > + [AC_ERROR([libpcre not found, required for > --enable-regex])]) > + HAVE_PCRE=1 > +else > + HAVE_PCRE=0 > +fi > +AC_DEFINE_UNQUOTED(ONOFF_REGEX_SUPPORT, $HAVE_PCRE, "regular expressions in > scripts") > + > AC_CHECK_HEADER(zlib.h, , [AC_ERROR(zlib.h not found.)]) > AC_CHECK_HEADER(xmltok/xmlparse.h, have_system_xmltok="yes") > AC_CHECK_HEADER(expat.h, have_system_expat="yes") > diff --git > a/src/Targets/ReleasedProducts/combiEngine_opensource_linux/target_options.h > b/src/Targets/ReleasedProducts/combiEngine_opensource_linux/target_options.h > index 3253c15..868f6f7 100644 > --- > a/src/Targets/ReleasedProducts/combiEngine_opensource_linux/target_options.h > +++ > b/src/Targets/ReleasedProducts/combiEngine_opensource_linux/target_options.h > @@ -3,6 +3,15 @@ > * > */ > > +// Many of the options below can also be configured via config.h. > +// If ONOFF_<feature> is defined, then the feature is on if > +// ONOFF_<feature> is != 0, otherwise it is off. If that > +// define is not set, then the default setting in this file applies. > +#ifdef HAVE_CONFIG_H > +# include <config.h> > +#endif > + > + > // SYNCML SERVER ENGINE LIBRARY OPENSOURCE LINUX > // ############################################# > > @@ -126,6 +135,13 @@ > // - script with regex support > #define SCRIPT_SUPPORT 1 > #define REGEX_SUPPORT 1 > +#if defined(ONOFF_REGEX_SUPPORT) > +# if ONOFF_REGEX_SUPPORT > +# define REGEX_SUPPORT 1 > +# else > +# undef REGEX_SUPPORT > +# endif > +#endif > > // - server does support target options > #define SYSYNC_TARGET_OPTIONS 1 > > > -- > Best Regards, Patrick Ohly > > The content of this message is my personal opinion only and although > I am an employee of Intel, the statements I make here in no way > represent Intel's position on the issue, nor am I authorized to speak > on behalf of Intel on this matter. > > > > _______________________________________________ > os-libsynthesis mailing list > [email protected] > http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis Lukas Zeller ([email protected]) - Synthesis AG, SyncML Solutions & Sustainable Software Concepts [email protected], http://www.synthesis.ch _______________________________________________ os-libsynthesis mailing list [email protected] http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis
