Commit Graph
100 Commits
Author SHA1 Message Date
Roland Kaufmann 5284497bad Remove superfluous backing class for share_obj
I originally wanted to make share_obj a class so that I could hide the
helper function, but it turned out that I needed a function after all
since a function template can be inferred from the parameters but the
type cannot from the constructor.

By returning a shared_ptr directly, the compiler can do return object
optimization.
2017-12-04 16:24:14 +01:00
Roland Kaufmann f173dad56e Provide stream that ignores everything written to it
Use this stream when you want a straight code path, but also be able
to disable output at will.
2017-12-04 16:24:14 +01:00
Roland Kaufmann 9193105410 Change from pass-by-value to pass-by-const-ref
The object is copied when put into the list, so there should be no
danger of dangling references.
2017-12-04 16:24:14 +01:00
Roland Kaufmann 0c53ac1509 Add classes for event-handling
The new classes Event and EventSource can be used as a simple mechanism
for implementing event-based callbacks in the simulators.
2017-12-04 16:24:14 +01:00
Roland Kaufmann b9c4adff9e Depend on Boost::iostreams
The benchmark library uses Boost::iostreams to do decompression. Since
we only scan for the Boost dependency once, this submodule is added to
all of the projects in order to have a coherent dependency on Boost.
2014-02-28 19:30:06 +01:00
Roland Kaufmann cd9012152d Provide dependency information for opm-benchmarks 2014-02-28 19:30:06 +01:00
Roland Kaufmann 0635670ac8 Declare a need to know if BOOST is available
Note that the variable HAVE_DUNE_BOOST is not set by FindBoost,
but by OpmAliases.
2014-02-28 17:52:27 +01:00
Roland Kaufmann ab926cd82c Declare a need to know if UMFPACK is available
Note that the variable HAVE_UMFPACK is not set by FindSuiteSparse,
but by OpmAliases.
2014-02-28 17:52:26 +01:00
Roland Kaufmann 8cbfaa3c14 Create aliases for probed variables
Headers from other libraries (notably DUNE) require definitions of
other variables than our probe process set (e.g. HAVE_UMFPACK instead
of HAVE_SUITESPARSE_UMFPACK_H). This module sets those aliases for
compatibility.
2014-02-28 17:52:25 +01:00
Roland Kaufmann 0a35670b7b Terminology instead of Notation as section header
Notation implies that we are going to be given symbols which
represents values or such (which arguably could be true since the
path is a particular value, and from programming we are used to
multi-letter symbols perhaps also with whitespace, but it's a
stretch), but Terminology is more accurate, as this section
describes fits the definition better: it is a vocabulary of
technical terms.

Hat tip: @bska
2014-02-28 17:52:21 +01:00
Roland Kaufmann b06d1a32a5 Document modules and structures in the build system
Give a brief description of each of the modules that comprises the build
system, and the suffices that is used to form a virtual structure of
variables for each project.
2014-02-28 17:52:20 +01:00
Roland Kaufmann 9f1934570b Only add linker option if it is not really there
This code is run unconditionally each time we do a reconfigure; if the
option is added at each time, they will accumulate (needlessly) on the
command-line, making it harder to inspect the log.
2014-02-28 17:52:19 +01:00
Roland Kaufmann 3112e465a0 Provide CMake find module for opm-autodiff
If the module root is not explicitly specified, the loading of its
configuration is delegated to a find module, which does a heuristic
search in known/surrounding directories. Most OPM modules use the
common logic in OpmPackage; this patch configures the search
specifically for opm-autodiff.
2014-02-28 17:52:18 +01:00
Roland Kaufmann f30ab55974 Provide routine to return the step length taken
The output routine needs to know which step that has been taken in the
past (to arrive at this result), not which step to take next going
forward.
2013-11-27 00:36:17 +01:00
Roland Kaufmann 73dfe849d6 Replace unclear constant with better documentation
The step number is zero before the first timestep has been taken, and
one after. The step number is one before the second timestep has been
taken, and two after. This was not clear from the text.
2013-11-27 00:23:00 +01:00
Roland Kaufmann 29afd2c378 Report after the timestep really is completed
If we report before we increment the timer, then we will report at
a time which is at the beginning and not at the end of the timestep.
2013-11-27 00:04:45 +01:00
Roland Kaufmann 2ba7b3329d Make starting timestep more explicitly known
One-based or zero-based? Better be documented (in a way that doesn't
promote hard-coding in the clients!)
2013-11-26 12:44:37 +01:00
Roland Kaufmann 847d8fe924 Only add parent directories for actual variants
Otherwise we'll inadvertedly add the root directory and will probably
find the system implementation underneath there.
2013-11-25 11:38:24 +01:00
Roland Kaufmann 47eb8a0549 Only add build sub-directory if it is actually used
Otherwise the search will cascade down one level too many.
2013-11-25 11:38:23 +01:00
Roland Kaufmann ce569c75d4 Search in build/ sub-dir if only suite root is given
If the package suite was given (e.g. DUNE_ROOT=/blum), then the code
set up the root for each individual package automatically (e.g.
DUNE_COMMON_ROOT=/blum/dune-common), but the path which was then
activated did not get the local build sub-directory (e.g. if we are
building opm-autodiff in /frub/opm-autodiff/build, then the local
build directory is "build/"), and thus this was not appended to the
library search path. The result was that the source was found (because
the root pointed to a valid source tree), but the library was not
(because it is "hidden" in the subdirectory).
2013-11-25 11:38:22 +01:00
Roland Kaufmann 1a1269d9d7 Extract common parts of blackoil and incomp. state
Put the identical parts of the simulator state into a base class that
they can be referenced from when adressing the common fields.
2013-11-13 13:48:28 +01:00
Roland Kaufmann 7e024a2cce Allow to search for multiple libraries in package
Some packages are split up in several library files, where each of them
doesn't have their own CMake find-module. So we cannot put this list in
the prerequisites. Unlike the headers, where we just add the directory,
all the libraries must be explicitly named on the link line. Thus, we
should allow to specify more than one name in the lib parameter.

The first name specified is designated as the "primary" library and is
assigned to the _LIBRARY variable; the others occur in _LIBRARIES as if
they were prerequisites.

Note that the build system cannot replicate this setup itself; it always
assumes that we are building (at most) one library from the source
files.
2013-11-05 09:55:39 +01:00
Roland Kaufmann cb89621813 Only add option for shared libraries once
The way the test was done previously, it was added for *every* option
after `--enable-shared`, not only that one.
2013-11-05 09:55:38 +01:00
Roland Kaufmann c06a79f30b Specify dir. layout and stylesheets in common templates
These options should be common to all OPM modules to get the same look
for the generated documentation.
2013-11-05 09:55:36 +01:00
Roland Kaufmann 615b88b345 Install header-only pkgconfig file to generic lib/
The previous version assumed that we had libraries, and thus always
installs the .pc file in the multi-arch library directory. However,
we now have modules which does not have a library, but whose header
files still need to be located. Since the lib/ directory is usually
in the pkgconfig search path, it is natural to put them there.
2013-10-21 15:25:22 +02:00
Roland Kaufmann 9338810b6e Allow static linking for SuiteSparse to be forced
If -DSUITESPARSE_USE_STATIC=ON, then the build system will only look for
static versions of the libraries that are part of SuiteSparse, even if
dynamic/shared versions are present on the system. Thus, the default of
preferring dynamic libraries can be overridden.

SuiteSparse is rarely built ourselves, but still uncommon enough to not
be present on computing clusters.

This patch allows us to install the libraries on a workstation, for
instance from package suitesparse-devel and link to it statically
without having to maintain our own build tree.
2013-10-11 14:40:57 +02:00
Roland Kaufmann 5a2e633f9d Pass BUILDNAME and SITE options along to CTest/CDash
By passing these options through ./configure, one can use dunecontrol
to build a complete stack and still get a customized description in
CDash (such as when building in a cluster or VM where the actual machine
name does not matter, or when you want to add key options to the name
shown) without having to run a second configuration just to set those
in the cache.

Also fixes a bug where --with-cmake would skip any further option
specified after it.
2013-10-08 17:44:06 +02:00
Roland Kaufmann f786b832c0 Enable MPI if path is given
Assume that ./configure --with-mpi= also implies --enable-mpi; if you
absolutely want to specify path without enabling (?!) then you can do
--with-mpi=... --disable-mpi (in that order).

This patch look for anything after the equal sign of the --with
parameter and only set the variable _MPI_PREFIX_PATH if that is given;
it always toggle USE_MPI.
2013-10-07 15:49:51 +02:00
Roland Kaufmann ff3ba2dbb9 Use dSYM bundles as debugging containers (on MacOS X)
gdb on MacOS X does not seem to be very fond of "flat" dSYM files, but
it can read the bundle variant fine. Thus we change that to enable
debugging across several tools.
2013-10-06 18:04:57 +02:00
Roland Kaufmann e1823dc9a7 Disable output to console if parameter quiet = true
If the standard output is not desirable, it can be suppressed and
custom output can be written through the timestep_completed event
instead.
2013-09-26 12:37:02 +02:00
Roland Kaufmann 9b2cf047e5 Search for dune.module in private installations
When doing a private install of DUNE libraries, the dune.module file
is put in the lib/ directory, regardless of architecture.

This patch searches the lib/ directory as a catch-all after having
searched the platform-specific directories. This should minimize the
chance of hitting an accidentally unrelated dune.module.
2013-09-24 15:39:48 +02:00
Roland Kaufmann 48a7dc58b3 Honor the CMAKE_NOT_USING_CONFIG_FLAGS settings
If this is set, then everything is lumped into CMAKE_CXX_FLAGS since
that is the only one that is going to be used when building anyway.
2013-09-24 15:39:48 +02:00
Roland Kaufmann c4b5cdedad Clear default flags in an (im)proper way
The CMAKE_NOT_USING_CONFIG_FLAGS option is really only settable by a
user that doesn't want _DEBUG or _RELEASE flags to not have effect.
If we want other flags than the platform default, we must do hairy
things like clearing them from the cache (overriding the user's
seletion if it was the same as the platform default).
2013-09-24 15:39:47 +02:00
Roland Kaufmann b13f9d251b Fix logic bug and make language explicit
The operator precedence in CMake can be surprising, so add parenthesis
to make in unambigious. Also, make it more explicit from which language
we get the default options. (They are all set from the settings given
for C++; why would have different optimization options for C and C++?)
2013-09-24 15:39:46 +02:00
Roland Kaufmann b6c5d3572d Update the CMake cache to reflect current settings
During configuration some of the values for CMake properties (compiler
flags etc.) may be changed either by the user (through command line
parameters or option files), or by the configuration script itself
(setting more aggressive options or detailed debugging for instance).

This change writes many of the relevant values back into the cache so
they are available for introspection (using e.g. ccmake) or when the
rerunning the configuration without specifying all options.
2013-09-24 15:39:46 +02:00
Roland Kaufmann 93bfbecb3b Improve detection of dune.module
Remove lib/.libs/ and lib64/ as well as lib/ to find the prefix for the
installation root.
2013-09-24 15:39:45 +02:00
Roland Kaufmann 66907b7c42 Improve troubleshooting for missing dune.module
If the library is found, but dune.module is not, we really should give
an error because the #ifdefs in the code will not work as intended.

Print the locations where we expect the library to appear to the console
for better tracking.
2013-09-24 15:39:44 +02:00
Roland Kaufmann 94e6b26642 Use MultiArch-unaware path for dune.module
As of 2013-09 the DUNE code that reads dune.module is not MultiArch-
aware. Thus, for a 64-bit platform it will look in lib/ on Debian and
lib64/ on RHEL.
2013-09-24 15:39:44 +02:00
Roland Kaufmann fd34cde5ad Add special variable for MultiArch-unaware components
Some components are not yet MultiArch-aware and installs to either
lib/ (Debian) or lib64/ (RHEL) on 64-bit platforms. If we need to
interface with these components, then it is nice to have such a
variable set together with the regular detection code.
2013-09-24 15:39:43 +02:00
Roland Kaufmann d11a8bc5ac Allow use of uppercase version of the _ROOT var
The convention is to use uppercase names, in particular our own
./configure script uses this, so we should at least allow it here
(in addition to the old way for backward compatibility)
2013-09-24 15:39:43 +02:00
Roland Kaufmann d00cff8549 Don't set a default search path; use CMake's default
If we set a default search path ourself, then this will be used if we
specify a SuiteSparse_ROOT with error! Instead, we should just leave
our SuiteSparse_SEARCH_PATH variable empty and then let CMake fill in
its defaults. If there is a directory specified on the other hand
(indicating that we want exactly that location), only use that and
turn all the default paths completely off.
2013-09-24 15:39:42 +02:00
Roland Kaufmann 39a98783af Test variables instead of contents
If you test the contents of a variable, this is not necessarily true
in CMake (since the contents here is a path, and not a variable name;
the default test is "does this variable exist", not "is this a non-
empty string" like in shell script)
2013-09-24 15:39:41 +02:00
Roland Kaufmann 90723230b0 Detect OS version when running on RHEL/CentOS 5.x
These versions only have /etc/redhat-release, not any of the newer
files.
2013-09-24 15:39:41 +02:00
Roland Kaufmann a41b5e140e Test for executable and preserve erroneous path for messages
If an alternate compiler is specified, then check if this is actually
executable before assigning it so that we don't end up with specifying
an empty name to CMake. If the path does not exist, it will be preserved
so that CMake will complain with an easily identifiable error message.
2013-09-24 15:39:39 +02:00
Roland Kaufmann f8f6836c2b Only use Clang-specific pragma if compiler is Clang
Otherwise the compiler will probably give us a warning that these
pragmas are unknown. By default that warning is disabled with our
own build system, but we also want to be able to link to our library
without incorporating the entire build system too.
2013-09-24 11:15:26 +02:00
Roland Kaufmann 88a38a8e3f Fix LinearSolverIstl cleanup also for fast AMG branch
To avoid deprecation warnings the number of smoothing steps was passed
through the Criterion instead of directly to the constructor in commit
a7f32b934b.

However, due to an insufficient test matrix this was not tested using
the fast AMG variant of DUNE so it breaks the builds if
`-DHAS_DUNE_FAST_AMG` is defined.

This change should apply the same type of change to this branch as for
the others. The number of smoothing steps is put into a constant to
avoid the magic number 1 to appear in too many places (although I am
not sure the number for pre- and post-smoothing always should be the
same).
2013-09-20 10:00:21 +02:00
Roland Kaufmann 1341903bb7 Don't warn about functions not emitted
If a function is used by a template but this template is not
instantiated, the function will still be defined in the header
of a module but it won't be callable because it is in an anonymous
namespace and thus we get a warning.

This only happens in Clang; GCC consider functions referenced from
templates as used.

fixup! Don't warn about functions not emitted
2013-09-19 13:09:44 +02:00
Roland Kaufmann 5f00467f02 Set linear solver steps in criterion instead of ctor
The constructor that takes the number of steps is deprecated; this
generates needless warnings.
2013-09-19 10:32:49 +02:00
Roland Kaufmann 1bc992f70d Use struct since that was the original declaration
Otherwise we get a warning later when the real thing is defined.
2013-09-19 10:00:31 +02:00
Roland Kaufmann 5b954096fd Search after new Eigen3 versions in sibling dirs
If we have checked out a newer Eigen3 directory in a sibling directory
to ours, assume that this is because the system version is obsolete and
that we want to use this one instead.
2013-09-02 10:08:32 +02:00
Roland Kaufmann 3c678f06e4 If given build tree as Eigen3 root, find source
Eigen3 is a template-library, so we must compile the source code
directly together with ours instead of linking to a library.

If the build script gives us the location of a "built" Eigen3,
meaning a directory in which CMake has been run, locate the true
source directory from the cache entries.
2013-09-02 09:47:53 +02:00
Roland Kaufmann b03e238d45 Provide protocol for exchanging state with client
The state that is passed to the simulator object is directly
accessible without any encapsulation towards the client. After
the notification callback was introduced, this allows the client
to observe the state in the middle of a simulation.

However, it may be that the simulator has some internal state
which is not reflected in the state object because there is a
cost associated by flushing it into the TwophaseState format.

The notification is called back on every timestep, not just the
ones that will do reporting. It may even be that reporting is
done dynamically and is not known at the time of setup. (It is
more like a condition variable).

Consequently, flushing the state in every timestep is a bad
idea. This patch sets up a new method sync() which it is expected
that the notification will call if it needs the state for
reporting purposes.

Currently it is a no-op. It just establishes a protocol that
other, compatible implementations can also use.
2013-08-30 15:14:22 +02:00
Roland Kaufmann ae7dcf690a Merge pull request #23 from rolk/023_cmake
CMake rollup in anticipation of the 2013.09 release
2013-08-28 11:55:49 -07:00
Roland Kaufmann 85f60ad092 Merge pull request #30 from rolk/030_cmake
CMake rollup in anticipation of the 2013.09 release
2013-08-28 11:53:26 -07:00
Roland Kaufmann f43d6e0019 Print version number in log together with location 2013-08-28 13:21:27 +02:00
Roland Kaufmann 84cc9f5f98 Always search for dune.module in no-arch lib-dir
The previous version may have ended up in lib64/ instead of lib/;
now we remove the arch-specific suffix from the path, and always
use the no-arch version.
2013-08-28 13:21:26 +02:00
Roland Kaufmann a066aa519c Noarch lib-dir was only used in one wrong place
dune.module does not contain any paths to architecture-specific
binaries. It is therefore always installed in no-arch lib/ directory.
Thus, there is no need to have a variable for this, and there was
no other users of this variable either.
2013-08-28 13:21:26 +02:00
Roland Kaufmann eb1086a2b8 Mimic Autotools way to specify non-standard Boost
If Boost is installed in say /usr/include/boost141 and
/usr/lib64/boost141, then there is no root you can specify to pick
them both up. However, whereas Autotools uses --with-boost and
--with-boost-libdir, FindBoost in CMake changes to using two different
variables: BOOST_INCLUDEDIR and BOOST_LIBRARYDIR. Using the header
directory for BOOST_ROOT will not work (in particularily not with
old CMake versions).
2013-08-28 13:21:25 +02:00
Roland Kaufmann 779e366f73 Special handling for some recognized env. vars.
CMake does not like that you specify the compiler with the environment
variables, instead preferring that you set them as cache variables.
This layer translate between the names of the the two.
2013-08-28 13:21:24 +02:00
Roland Kaufmann 82410bda3e Test ERT for a newer API level
We use an ERT version which needs to know whether at least this
function signature exists. The earlier implementation covers too
many versions.
2013-08-28 13:21:24 +02:00
Roland Kaufmann ab8a507e49 Allow spec of not commonly rooted incl and lib dir
Header and library directory may be specified separately by using the
variables e.g. OPM_CORE_INCLUDE_DIR and OPM_CORE_LIB_DIR. These override
even the OPM_CORE_ROOT. This allows us to use a backported version which
uses versioned directory names.
2013-08-27 09:24:36 +02:00
Roland Kaufmann 8c71f4d75b Support installation in a versioned directory
If the option USE_VERSIONED_DIR is set to ON (default is OFF), then
most files are installed in a ${suite}-${label}/ subdirectory
(e.g. header files go in "/usr/include/opm-2013.03/"). This enables
us to easily install backports of newer versions on systems which
have a system package for an older one, without getting conflicts.
2013-08-27 09:24:35 +02:00
Roland Kaufmann 433d33e008 Remove bash4-isms from configuration script
Getting uppercase of a string can be done in a way that is compatible
with Bash 3.2. This creates a dependency on the `tr` utility, but I
reckon it will/can be available everywhere Bash 3.2 is.
2013-08-27 09:24:34 +02:00
Roland Kaufmann 5cc1f0a34c Use libc++ runtime if necessary for C++11 compliance
If we are using the Apple toolchain on MacOS X, we must use the
newer runtime and not the old GCC 4.2 fork, in order to get the
C++11 library features (such as std::shared_ptr).
2013-08-27 09:24:34 +02:00
Roland Kaufmann e5d2b5994e Remove linker command from compiler command-line
There is no SuiteSparse headers or libraries in
/System/Library/Frameworks/Accelerate.framework on MacOS X, so adding
this directive won't contribute anything other than compiler warnings.
2013-08-27 09:24:33 +02:00
Roland Kaufmann dcc917c2c4 Always keep debug bundle near executable on Mac OS X
There isn't a /usr/lib/debug directory as on Linux.
2013-08-27 09:24:32 +02:00
Roland Kaufmann d43ff3c003 Strip debug symbols to separate file on MacOS X
The standard Xcode toolchain on MacOS X uses strip and dsymutil, not
objcopy as the GNU toolchain does.
2013-08-27 09:24:32 +02:00
Roland Kaufmann fc040a44ed Refactor code to separate extensions from filename
The earlier code assumed that the version information always follows
the full file path; this code splits the path up into various parts
so that this may be changed.
2013-08-27 09:24:31 +02:00
Roland Kaufmann cd771b7d3e Only install debug symbols if they are in separate file
If the strip utility is not present, debug symbols won't be in a
separate file and subsequently cannot be installed.
2013-08-27 09:24:30 +02:00
Roland Kaufmann 751296cf5f Report version of Mac OS X in configuration log
If we are building on Mac OS X, use the official operating system
version (e.g. 10.8) instead of the kernel version (e.g. 12.4).
2013-08-27 09:24:30 +02:00
Roland Kaufmann 3dbcb66a21 opm-autodiff needs filesystem component of Boost
Also, it really should be the same as the rest to make sure that we
pick up the right components when we look for the Boost library.
2013-08-27 09:24:28 +02:00
Roland Kaufmann 1002b55a2f Remove dependency on Boost::Signals
The functionality has been replaced with equivalents from C++11.
2013-08-27 09:24:28 +02:00
Roland Kaufmann 972f8cdf0a Allow build tree of SuiteSparse to be used as root
With this changeset, the build tree of SuiteSparse can be used as the
root; the package does not have to be installed.
2013-08-27 09:24:26 +02:00
Roland Kaufmann 5d5e18c2ce Mark known feature variables as used
Some features, such as the Fortran wrappers, are enabled by options,
and it may be usable to have those set in a common definition file.

However, as these features are included conditionally based on use,
their option variables may not exist in other projects, giving a CMake
warning for them.

Here we list such variables too. Reading them at the end corresponds
to the Autotools convention of ignoring unknown --enable-xxx options.
2013-08-27 09:24:24 +02:00
Roland Kaufmann a64118cb81 Simplify creation of Fortran function wrappers
The old version invoked a Fortran compiler to figure out the bindings
necessary to link to a Fortran function. This creates a dependency on
having a Fortran compiler, even though the project may not have any
Fortran source it needs to compile!

Also, the Fortran compiler that is installed on the system may not be
the same as was used to compile the library anyway, so we are not even
sure that this is correct!

Furthermore, FindLAPACK operates on the assumption that names in that
library is suffixed with a single underscore, so if that is not correct,
we won't find any of the functions in that library anyway!

Thus, this patch enables us to assume that appending an underscore is
the right thing to do without using the compiler. This option is off by
default, but can be activated with USE_UNDERSCORING=ON (named after the
GFortran option).
2013-08-27 09:24:22 +02:00
Roland Kaufmann c1eadadb72 Replace old timestep completed event with new scheme 2013-08-26 13:08:49 +02:00
Roland Kaufmann 440c7721ae Remove subdirectory from SuiteSparse include
SuiteSparse may or may not be installed in a suitesparse/ directory.

FindSuiteSparse will look in a suitesparse/ subdirectory when trying
to locate umfpack.h, but it will add the full directory to the compiler
command-line (e.g. `-I/usr/include/suitesparse`) and not that of the
parent. Since the parent is usually included too, it is not noticed
that it is advertedly using another include paths than its own.

However, if we have SuiteSparse installed in a non-system location,
using the subdirectory in the `#include` statement may now cause an
error, even though configuration actually found SuiteSparse!
2013-08-25 09:35:51 +02:00
Roland Kaufmann 9d19b116d7 Issue a CMake warning if client project is incompatible
This puts a test into the ${project}-config.cmake file which warns
if the client project is built with a variable which is incompatible
with the build of opm-core.

Consider this minimal project:

    cmake_minimum_required (VERSION 2.8)
    set (HAVE_MPI 1)
    find_package (opm-core)

If linked with `-Dopm-core_DIR=` path to an opm-core tree which is
build *without* MPI-support, this will issue a warning when building
the client project.

This doesn't catch all cases (if a variable isn't defined, we cannot
know if it is an omission or if it has intentionally been left blank),
but at least it catches some.
2013-08-21 22:16:31 +02:00
Roland Kaufmann aa07341edb Only require METIS if ALUGrid is built for parallel
If we have a parallel ALUGrid, then we must also link with METIS. If
METIS is not available, then parallel ALUGrid should be disabled. If
we have a serial-only ALUGrid, then METIS is not required.
2013-08-21 22:16:11 +02:00
Roland Kaufmann 92ea4c55a2 Don't search for disabled packages
Setting CMAKE_DISABLE_FIND_PACKAGE_xxx flag should make find_package
not doing anything, but this does not seem to work with older versions
of CMake. Anyway, we can test this flag and make sure that we don't
call find_package in that case.

Also includes a check for both upper- and same-case versions of found
flag, as some modules, most notably Boost, does not set the upper-case
version of their _FOUND flag; this tests for both.
2013-08-21 22:16:06 +02:00
Roland Kaufmann fab7284717 Add support for Eigen3 in Autotools compatibility layer 2013-08-20 20:48:24 +02:00
Roland Kaufmann dec561bb44 Allow found-variable to be named as package
Boost does not set the BOOST_FOUND variable to indicate that the
package is found (as it would if it had used the usual routine
find_package_handle_standard_args), but rather Boost_FOUND. This
patch tests for that condition, and print some more helpful debug
messages if a prerequisite is missing.
2013-08-19 21:36:59 +02:00
Roland Kaufmann 3ff19f011a Propagate REQUIRED and QUIET according to parent level
If an optional package require further packages, those packages should
not be marked as REQUIRED because CMake will then terminate the
configuration if it is not found (although it is transitively optional).

Conversely, we should be able to specify REQUIRED prerequisites for
REQUIRED packages and have a failure cascade up to termination.

This changeset allows us to specify REQUIRED or not in the list of
prerequisites, and have OpmPackage sort of whether it should be honored
or not.
2013-08-19 20:01:25 +02:00
Roland Kaufmann ae727487f5 Only search for a package again if not found
If it is already found, most packages sets a flag that makes it exit
immediately anyway. We usually cannot rerun find_package to get another
combinations of modules. Here we check the flag before we start looking
for the package to avoid the endless stream of messages.
2013-08-19 20:01:25 +02:00
Roland Kaufmann b3947b0ff3 OPM-Material module must have DUNE Common and DUNE ISTL 2013-08-19 20:01:24 +02:00
Roland Kaufmann c3249a256a Set standard variables for package after probing
Standard variables must be set in order for the package to be picked
up with the OpmFind/OpmPackage dance.
2013-08-19 20:01:23 +02:00
Roland Kaufmann 1b953dce5f Trim unnecessarily required config vars
The modules declare which configuration variables they need to have
present in config.h, not only their own but also defined in projects
using them.

However, a lot of these variables are not actually used in the headers!

This changeset removes all HAVE_XXX variables which is not present in
any opm/*.h* file in these projects, and thus there is no need for the
client to specify.

Note that only the variables used by the module *itself* should be
listed; the build system will setup the complete list from the
prerequisites.
2013-08-19 20:01:23 +02:00
Roland Kaufmann fa32d2a03e Put HAVE_DYNAMIC_BOOST_TEST in config.h for tests only
This define is used by the unit tests; there is no reason why it should
be on the list that must be provided by other projects that use our
headers (the other projects don't use our tests).
2013-08-19 20:01:22 +02:00
Roland Kaufmann 6537f63307 Require the newer 3.1 version of Eigen 2013-08-17 00:04:05 +02:00
Roland Kaufmann 09d2f435f8 Add a small bootstrapper to locate build system
Currently this bootstrapper only finds the macros that are located
in the cmake/ tree in this project. Projects that don't carry their
own build system can specify search locations here.
2013-08-16 23:55:45 +02:00
Roland Kaufmann c34a5700eb Search for directory containing build scripts
Currently only the source tree is "searched", but the template could
be expanded to look in another/more locations (or be specified
explicitly on the command-line with a --with-opm-macros= option)
2013-08-16 23:55:44 +02:00
Roland Kaufmann dcc972f128 Allow source location to be overridden
By default the configure script assumes that the source is located
relative to the script itself. By allowing this to be overridden, the
script can be shared by other projects, each passing their own location
as an extra parameter.
2013-08-16 23:55:44 +02:00
Roland Kaufmann e4a345a648 Use OPM_MACROS_ROOT to locate build scripts
By using a separate variable for this we can easily grep for where
the build system depends on its own location, and also change the
policy regarding this later.

Note that there is no opm-macros module; this is a "psuedo"-module
which links to an additional one (currently, the one we're in)
2013-08-16 23:55:43 +02:00
Roland Kaufmann 0f841e1bdf Allow adding project-specific install targets
If a project needs to install something that is very specific and not
in the general build, it can use this hook to setup additional targets.
2013-08-16 23:55:42 +02:00
Roland Kaufmann 2789809858 Publicly depend on version of dune-grid
The interface of the class PersistentContainer changed between DUNE
2.2 and DUNE 2.3 in an incompatible way, so we need to present
different versions of the class depending on the version of DUNE linked
with. This changeset adds the version variables for dune-grid to the
list of publicly necessary #defines that must go into using
dune-cornerpoint.

Notice that this will cause the definition of DUNE_GRID_VERSION_XXX
to be added to the flags list of dune-cornerpoint. This can be seen as
either a bug or a feature. If you try to link first dune-cornerpoint to
one version and then to another version of DUNE later, there is a very
good chance that you'll end up with problems anyway.
2013-08-16 23:55:36 +02:00
Roland Kaufmann 8ec655e321 Remove support for AGMG from the build system
AGMG is now under a closed-source license, meaning that results
obtained with this solver is not freely reproducible by others.
Its use is therefore discouraged.

As of version 2.3, the DUNE AMG parts are competitive, so there
is a free and open alternative.
2013-08-16 23:55:35 +02:00
Roland Kaufmann 56b910e2ce Use parallel version if and only if MPI is installed 2013-08-16 23:55:34 +02:00
Roland Kaufmann 7e992a2894 Enable use of parallel version of MUMPS
If we have enabled MPI, then we must call MPI_Init and MPI_Finalize
in the program anyway so we may as well use the parallel version of
MUMPS.
2013-08-16 23:55:34 +02:00
Roland Kaufmann 30a7e953a7 Use system-provided MUMPS library for AGMG
This require us to compile in a small glue module which maps the
name of the internal routine to the system routine.
2013-08-16 23:55:33 +02:00
Roland Kaufmann ff9da40f32 Make opm-core pick up AGMG through the standard list 2013-08-16 23:55:32 +02:00