On Tue, Jul 31, 2007 at 11:41:27AM -0500, Matthew Farrellee wrote:
Conditionally Compiling Code:
When it comes to externals, it seems we have a number of different ways
of deciding if code should be compiled. There are a number of
WANT_/USE_/HAS_/HAVE_/DOES_ options (I understand many are *OLD*) in
different configuration files (site.def, <platform>.cf,
configure.cf.in/externals.cf.in), and little consistency as to what
should be used for new code. Speaking with Derek I've been told that
code should be conditionally compiled by HAVE_EXT_'s, but I've seen
recent code additions (including my proposed patch below) checking for
WANT_'s. Do people find that HAVE_EXT_'s are not good enough? Maybe
quill is a good example of this since it can work with multiple
databases (i.e. #if WANT_QUILL (above) vs #if HAVE_EXT_POSTGRESQL).
You would be fine changing most all your #if WANT_QUILL tests to #if
HAVE_EXT_POSTGRESQL? Surely not, since you can use Oracle. Does Quill
add anything to Condor if there is no DB back-end? Could we remove all
#if WANT_QUILL tests and just have more specific #if HAVE_EXT_POSTGRESQL
or #if HAVE_EXT_ORACLE, where relevant?
Quill's parser uses no database library and was at least marginally useful.
In Quill's case, we're at least part of the way to having a C++ class
that is abstract from any database. I doubt this actually works, but the
idea would be that if HAVE_EXT_POSTGRES and HAVE_EXT_ORACLE are both NO,
then all of Quill still compiles, it just doesn't do anything useful.
Very few places would have to be wrapped in HAVE_EXT_ORACLE/POSTGRES.
-Erik