Commit Graph

108 Commits

Author SHA1 Message Date
Roland Kaufmann
9328cb896e Protect against underlinking of UMFPACK library
If libumfpack.so does not declare an explicit dependency on libamd.so,
the linker option -Wl,--as-needed will cause an undefined reference
since we don't use libamd.so ourself. If the configuration determines
that this may be the case, a linker option that forces linking the the
AMD library is added for the SuiteSparse library, and the general
configuration then gets out of the way if this is set.
2013-02-19 13:15:00 +01:00
Roland Kaufmann
be7ad261d5 Probe various candidates for system release info
Not all Linux distributions is LSB-compliant, notably RHEL 6, so we
should make an effort to check various known other files in order to
identify the distribution.
2013-02-15 13:58:49 +01:00
Roland Kaufmann
4fc2593bb3 Prevent conflict between older Boost and newer CMake
The probe for Boost was changed in CMake 2.8; if the system has
installed configuration files tailored for an older CMake, the
library paths are not setup correctly. This patch disables using
those configuration files; just use the library directly instead.
2013-02-15 13:51:53 +01:00
Roland Kaufmann
b412acb448 Don't remove original files from in-source trees
If we are building in-source, some files are not copied because they
would end up being the same, e.g. GNUmakefile.
2013-02-15 13:51:52 +01:00
Roland Kaufmann
9320faaf83 Correct typo which made distclean target malfunction
Probably typed _DIRECTORY instead of _DIR since there were other
variables nearby with that suffix.
2013-02-15 13:51:52 +01:00
Atgeirr Flø Rasmussen
0af4c3bbca Merge pull request #146 from rolk/0146_testing_dep
Remove dependency on Boost.Test from main library
2013-02-15 01:31:15 -08:00
Roland Kaufmann
b2520ab9cb Print CMake and OS version info to configuration log
Instead of asking the user which distribution it is, this will now be
visible from the log (which is included when uploading CTest runs)
2013-02-15 10:13:14 +01:00
Roland Kaufmann
8948f02746 Remove dependency on Boost.Test from main library
The unit tests are not bundled with the runtime, so it is an unnecessary
dependency. (It is still of course a dependency for the development
package).
2013-02-15 09:39:53 +01:00
Roland Kaufmann
a160847dfb Check for both headers and libs before making test prog
Previously, it was assumed that the project was available if only the
libraries were found (either by full compile, or by package).
2013-02-13 09:30:08 +01:00
Roland Kaufmann
01a54e9907 Remove debug information put to output tree when distclean 2013-02-11 23:08:29 +01:00
Roland Kaufmann
51a8efa228 Disable precompiled headers for buggy compilers 2013-02-11 23:08:29 +01:00
Roland Kaufmann
be3f3385ad Provide compiler version as a separate macro 2013-02-11 23:08:29 +01:00
Roland Kaufmann
6bbcbd97db Compile examples as well 2013-02-11 23:08:29 +01:00
Roland Kaufmann
32b7e527ee Modularize compilation of tests and tutorials 2013-02-11 23:08:29 +01:00
Roland Kaufmann
eaf690f870 Make directory names available through variables as well 2013-02-11 23:08:29 +01:00
Roland Kaufmann
f67a066bdd Modularize copying of test input files 2013-02-11 23:08:28 +01:00
Roland Kaufmann
d9696c7ea4 Modularize default build settings 2013-02-11 23:08:28 +01:00
Roland Kaufmann
42cab79feb Modularize location of source files 2013-02-11 23:08:28 +01:00
Roland Kaufmann
7bfa115fb3 Modularize compilation of main library 2013-02-11 23:08:28 +01:00
Roland Kaufmann
293ea97fa9 Modularize installation target 2013-02-11 23:08:28 +01:00
Roland Kaufmann
e4e9c1cfaa Modularize documentation 2013-02-11 23:08:28 +01:00
Roland Kaufmann
d2e5361c35 Modularize dist-clean target 2013-02-11 23:08:28 +01:00
Atgeirr Flø Rasmussen
c58b4684b3 Use more functions in testing found umfpack
The HAVE_UMFPACK_WITHOUT_CHOLMOD test would generate a false success.
New test contains program with more calls to the umfpack API, reflecting
our actual usage.
2013-02-11 23:08:28 +01:00
Roland Kaufmann
79f64d2c16 Be more flexible about version number quoting
Some versions of libtool write quotes around the version number, some
do not; we must handle both cases.
2013-02-11 23:08:28 +01:00
Roland Kaufmann
ae6e5314e3 Remove hardcoded project names and directories
Everything is now set through variables, which means that we can
change the name of the project by just altering the header.
2013-02-11 23:08:28 +01:00
Roland Kaufmann
99f2a6e55f Output the name of the libtool archive generated
Enables us to take of this file in a custom clean rule.
2013-02-11 23:08:27 +01:00
Roland Kaufmann
d6b245f549 Explicitly specify language for precompiled headers
This will hopefully guide some (buggy) compiler variants to not start
interpreting the header as a full program, or at least give a more
sensible error message.
2013-02-11 23:08:27 +01:00
Roland Kaufmann
097068f9c1 Move now generic templates into cmake/ directory
Templates can now be reused across projects. The output files are still
put in the root of the output tree because that is where the client
programs will look for them.
2013-02-11 23:06:39 +01:00
Roland Kaufmann
f883d52f0f Make template instantiatable for multiple projects
The name "opm-project" is replaced by the real name of the project.
2013-02-11 23:06:39 +01:00
Roland Kaufmann
2f20314ffb Pick up description from one place 2013-02-11 23:06:39 +01:00
Roland Kaufmann
66772d4819 Move template to designated cmake/ directory 2013-02-11 23:06:38 +01:00
Roland Kaufmann
45e00d88d7 Check the current commit of the project source code
Knowing which commit is being built and if there is any local
modifications to it can be of great help to pinpoint build problems.
2013-02-11 23:06:38 +01:00
Roland Kaufmann
33f3bc29e7 Allow in-source builds of ERT in sibling directory
The source code of ERT is located in a devel/ subdirectory, but it is
not usual (?) to have this structure in a separate build directory as
well. If you however build everything in the same directory as the
source code, then this sub-directory needs to be accounted for.
2013-02-11 23:06:38 +01:00
Roland Kaufmann
c28950c0f8 Link to core function to get more realistic test
Using umfpack_dl_solve as a test function increases the chance that the
probe will not be able to link successfully if it has not found all
libraries necessary (to link other than trivial test programs).
2013-02-11 23:06:38 +01:00
Roland Kaufmann
2b7e3f8759 Generate libtool archive (.la) files
These files are text files which specify which platform specific
libraries we should be looking for. We need libtool installed to
use them, but they can be generated pretty inexpensively from the
CMake script itself.
2013-02-11 23:06:38 +01:00
Roland Kaufmann
6f3a7baccd Add standard variables/location hints
There is a convention that one can do `pkg-config --variable=includedir`
and have it return the path to the source files (even if that should
have been taken care of by options in --cflags).
2013-02-11 23:06:38 +01:00
Roland Kaufmann
ae14059a15 Only write source path line once
If more than one match is written, then DUNE_CHECK_MODULES will return
several matches, which becomes a syntax error on the resulting command-
line. Thus, check if there is a match before writing anything.
2013-02-11 23:06:38 +01:00
Roland Kaufmann
46975fc130 Enable building as a link in dunecontrol chain
Dunecontrol scans the module directory for certain files and phrases
which must be present if the project can be used as a dependency for
other DUNE modules.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
fdff36fcbf Use full set of dependencies when test compiling
The old implementation erraneously used only the first argument that was
passed to the testing procedure due to the way lists are passed in CMake
when unquoted. Thus, the test failed for SuiteSparse >= 4.0 which needs
more than one dependency.

Also add dependency to BLAS and LAPACK which was hidden because the
caller already included these itself.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
718fce9e2a Add realtime library on Linux, if SuiteSparse >= 4.0
Functions in the helper library is dependent on librt
2013-02-11 23:06:37 +01:00
Roland Kaufmann
4dbefc603a Look for packages from underneath a single root
Previous implementation had a separate search path for headers and for
the library, which in the case of "RedHat-multiarch" made it miss the
library (it was looking for /usr/lib/lib64 instead of /usr/lib64); the
new version starts looking from /usr.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
5772f7a5c2 Explicitly specified paths should replace predefined ones
We don't want a typo in any of those to accidentially make the
configuration pick up the system libraries instead.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
668cf14059 Add config library new to SuiteSparse 4.0
SuiteSparse 4.0 implements many of its internals in a separate helper
directory which must also be linked if this is present.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
f89ad15fe9 Include CMakePushCheckState on our own
Functions in this library was made available by other unrelated
modules, making this file unusable on its own.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
f8d047d4db Try to do without unnecessary dependencies
UMFPACK is by default dependent on CHOLMOD, but on some systems it is
compiled with -DNCHOLMOD; in those cases we should not try to link in
the library -- it may not be available and in any cases it is not used,
so it is just a superfluous dependency.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
172e9b3e33 Bail out if none of the required components are found
The way the test was written earlier, it would accept if it found
components that were transitively pulled in even if the originally
requested component was not!
2013-02-11 23:06:37 +01:00
Roland Kaufmann
ceeba95ba7 Assume that UMFPACK requires CHOLMOD by default
At this time no probe is added to check if an UMFPACK without dependency
to CHOLMOD is installed; thus if you need/want UMFPACK, you'll have to
go for the entire SparseSuite.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
39758ab13b Revert clever setting of version number in dune.module
dunecontrol will read the dune.module file first, before calling any
configuration files; thus it cannot be initialized from the script
but the version numbers must be hardcoded here and updated manually.
2013-02-11 23:06:37 +01:00
Roland Kaufmann
ad4e9064f7 Write pkgconfig files as well as CMake
Note that using pkg-config is NOT recommended because of:

1. It doesn't know which language you are using, so language-specific
   options such as -std=c++11 or -std=c99 cannot be passed along. Yet,
   the build will corrupt if you don't get these correct.

2. It has no means of communicating which defines that should be set
   in config.h, effectively disabling them all, possibly leading to
   inconsistencies between the library and the executable.
2013-02-11 23:06:27 +01:00
Roland Kaufmann
7c1568311e Multi-arch support in writing config mode file 2013-02-11 22:38:02 +01:00