Instead of having the name of the module set for each flag, use the
available standard option. Mixing shared objects and static libraries
in the same build is not a very realistic scenario anyway.
This enables us to call configure without actually having a particular
module; the script may then be used on a group level.
This duplicates functionality from the old autotools implementation
in case any user code needs it. It is not necessary to build the
OPM modules themselves.
opm-core contains code which has #pragma omp. Earlier, OpenMP was
detected as part of the probe for ERT. However, that probe got
smarter, and as a result doesn't probe for more than it needs. Thus,
we need to check for OpenMP explicitly in opm-core. (It is disabled
by default)
Some distributions modify -dumpversion so that it only returns major
and minor numbers, not the patch level. This is usually OK for
determining features, but when debugging the output log, we really
want the full number.
If support for OpenMP should be added, it must be specified by
setting an option. If not, then warnings for unknown pragmas are
disabled, so that the code can have #pragma omp witout getting
messages during build.
Instead of checking every pre-requisite and then determine if the
library is functional, quickly check if the library directories are
present, and if not bail out. The most common reason that ERT is
not usuable, is that it is installed, not that something else is
missing!
If the directory that is specified does not exist, then keep the path
as entered, which makes for better error messages later.
We cannot print an warning on a non-existent name, because it may be
target directories that are specified, or perhaps logical options
(like --with-mpi=yes)
Traditionally, options are put before any other command-line arguments.
However, dunecontrol puts variable assignment before options, like env,
and this confuses getopt.
This variant (based on a suggestion by Andreas Lauser) collects the
variables into an array at the same time as the options are processed.
Follow the guidelines in
<http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/
html_node/Option-Checking.html#Option-Checking>
and print a *warning* if there is an unknown --enable-* or --with-*
option, error otherwise. --disable-option-checking does not turn off the
errors, but silences the warnings.
dunecontrol looks for a dune.module to determine whether a directory
contains a module or not. By copying this file to the build tree, we
can use (out-of-source!) build trees in dunecontrol too.
If the files for ERT is not found, then the find module cheats and
indicates that it didn't compile either (since there are some later
tests for HAVE_ERT).
However, erraneously, it gave this variable the value 0, which tests
for false in the CMake code but not in the #ifdef checks in the C++
code. This error is cancelled in opm-core by the fact that it didn't
store it as a cache variable, but resurfaced in opm-polymer when it
probes the second time (as both opm-core as a dependency and
opm-polymer itself declare a dependency on ERT).
It is now stored in a way that should be satisfactory to both
projects.
There were (at least) three implementations of the same macro; these
have been collected into a separate helper module. (Note that this
means that FindERT is now not completely stand-alone anymore).
If you specified options in an environment variable containing a blank
at the end, then this would not compare equal to the other candidate,
which was stripped, causing the first added argument to drop out! This
is usually the flag for C++11 compliance, causing binary incompatibility