Commit Graph
427 Commits
Author SHA1 Message Date
Markus Blatt a561e68b41 Require UMFPack
A direct coarse solver of AMG is needed for good convergence and umfpack
was tested to work better than SuperLU previously. Hence we now require it.
2022-04-20 19:53:13 +02:00
Markus Blatt a44c0ad80b Always build with MPI and search for SuperLU and Quadmath.
Concerning MPI, both DUNE and OPM must be compiled with the
same default. For DUNE that is to used MPI if it is found.
With the previous default Cmake in opm-grid would fail for
DUNE 2.8

Even if SuperLU is found umfpack will be used as the coarse
solver for AMG. But if dune-fem is used  that will need SuperL
if it is on the system otherwise linking will fail for DUNE 2.8

Quadmath is used by dune-fem if it is found and linking of flow
will fail in this case for DUNE 2.8 if we did not search for it.
2022-04-20 19:53:13 +02:00
Markus Blatt 0cdfeae0e5 Added CMake variable to prevent timestamps in flow binary packages.
One can now set the variable OPM_BINARY_PACKAGE_VERSION to a
meaningful version string (Debian 11.2: 2021.10-4). When building
outside of git it will be used as the project hash. If the variable is
non-empty there will also be no timestamp in project-timestamp.hh (as
this would break reproducible builds).

Note that if building from git or not setting the variable then everything
will be like before.
2022-03-23 22:53:43 +01:00
Markus Blatt 283d7b3dce Do not try to get git hashes for version if built from tarballs. 2022-03-23 22:37:31 +01:00
Markus Blatt b21f5e248d List link dependencies as private.
This hides them for shared libraries that do not need them.
Should fix the following lintian warnings:

W: libopm-common-dev: pkg-config-references-unknown-shared-library usr/lib/x86_64-linux-gnu/pkgconfig/opm-common.pc -lpython3.7m (line 12)
W: libopm-common-dev: pkg-config-references-unknown-shared-library usr/lib/x86_64-linux-gnu/pkgconfig/opm-common.pc -lstdc++fs (line 12)
W: libopm-common-dev: pkg-config-references-unknown-shared-library usr/lib/x86_64-linux-gnu/pkgconfig/opm-common.pc -lgomp (line 12)
W: libopm-common-dev: pkg-config-references-unknown-shared-library usr/lib/x86_64-linux-gnu/pkgconfig/opm-common.pc -lboost_system (line 12)
W: libopm-common-dev: pkg-config-references-unknown-shared-library usr/lib/x86_64-linux-gnu/pkgconfig/opm-common.pc -lcjson (line 12)

Gbp-Pq: Name 0002-List-link-dependencies-as-private.patch
2021-11-15 11:03:55 +01:00
Joakim Hove 9685946196 Merge pull request #2799 from akva2/fix_suitesparse_warning
changed: use STRING type
2021-10-29 16:39:51 +02:00
Arne Morten Kvarving fecd879840 changed: use STRING type
there is no such thing as INT type in cmake
2021-10-29 14:25:41 +02:00
Arne Morten Kvarving c979f25d02 fix cjson find module
the param to find_package_handle_standard_args should match module name
2021-10-29 13:15:47 +02:00
Joakim Hove 798e93e4a8 Merge pull request #2774 from blattms/dune-2.8-imported-targets
Define imported targets needed e.g. for dune-fem 2.8.0
2021-10-21 20:17:43 +02:00
Markus Blatt c6e1730a0a Search for GMP if dune-common is used.
We do suggest dune-fem for opm-models and that one links to it
if available.
2021-10-21 15:33:02 +02:00
Markus Blatt e67a55bf86 dune-fem uses QuadMath if available, search for it.
One still has to set USE_QUADMATH to true otherwise no
search will happen.
2021-10-21 15:30:44 +02:00
Markus Blatt d577b74106 Introduced DUNE-2.8 compatible imported targets where needed.
I.e. in the find_package files for PTScotch ParMETIS, Quadmath,
SuiteSparse, and SuperLU.
2021-10-21 15:29:12 +02:00
Markus Blatt c713d540e6 Adds a rudimentary FindTBB.cmake to make DUNE 2.8 with TBB work
Fixes errors like

Target "test_communication_utils" links to target
"PkgConfig::PkgConfigTBB" but the target
was not found.  Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
2021-10-20 22:06:29 +02:00
Markus Blatt 22e9452de0 Search for TBB in Finddune-common.cmake
When configured with TBB dune-common-targets.cmake lists the
imported TBB::tbb or PkgConfig::PkgConfigTBB target
in INTERFACE_LINK_LIBRARIES. Hence we need to be able to resolve
this target in opm. We do this by searching for TBB id dune-common
is a prerequisite.

This commit fixes the problem only for newer versions of TBB shipping a
TBBConfig.cmake file.

The error fixed is along these lines:

Target "test_communication_utils" links to target "TBB::tbb" but the target
was not found.  Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
2021-10-20 22:06:29 +02:00
Arne Morten Kvarving 53cfb50d75 use -e when passing exename to test drivers 2021-10-13 11:27:47 +02:00
Feda Curic c2e8eabc2f Use built in FindBoost 2021-10-07 12:11:54 +02:00
Markus Blatt 657f04cd28 Merge pull request #2631 from blattms/dune-2.8-metis
Fix FindMETIS for DUNE 2.8.
2021-08-30 16:23:55 +02:00
Markus Blatt 0056e0a2a1 Fix FindMETIS for DUNE 2.8.
With version 2.8 DUNE will specify imported target METIS::METIS for
the linker and introduces a METIS_API_VERSION to distinguish different
versions. This patch introduces these to the find module used by OPM.
2021-08-26 15:08:27 +02:00
Arne Morten Kvarving 7f84696bc9 changed: default to asserts enabled in release mode 2021-08-19 13:03:25 +02:00
Arne Morten Kvarving 1d4a3cc655 fixed: make WITH_NDEBUG cmake option work again
cmake now adds -DNDEBUG to default CXX flags
invert logic and use -UNDEBUG to remove instead
2021-08-04 15:21:37 +02:00
Joakim Hove bd3724068c Merge pull request #2512 from blattms/doxygen-no-timestamp
For discussion: Deactive timestamping in doxygen for reproducible builds.
2021-06-17 08:32:00 +02:00
Markus Blatt f8840e7152 Deactive timestamping in doxygen for reproducible builds. 2021-06-15 21:17:03 +02:00
Markus Blatt ff9792e31c Work around issues of Boost >=1.70.0 and CMake 3.18.4
With that combination the first search seems to happen in CONFIG mode
but subsequent searches will use MODULE mode. This will result in the
following warning:

CMake Warning at /usr/share/cmake-3.18/Modules/FindBoost.cmake:1187 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.18/Modules/FindBoost.cmake:1311 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.18/Modules/FindBoost.cmake:1919 (_Boost_MISSING_DEPENDENCIES)
  cmake/Modules/OpmFind.cmake:135 (find_package)
  cmake/Modules/OpmFind.cmake:230 (find_and_append_package_to)
  cmake/Modules/OpmLibMain.cmake:83 (find_and_append_package_list_to)
  CMakeLists.txt:222 (include)

Also the variable Boost_LIBRARIES will look quite messed up by
occurrences of optimized and debug:
Boost_LIBRARIES=optimized;/usr/lib/x86_64-linux-gnu/libboost_system.so.1.74.0;debug;/usr/lib/x86_64-linux-gnu/libboost_system.so;optimized;/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.74.0;debug;/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so

Which will make the modules unusable because of CMake errors during
linking:

CMake Error at /usr/share/dune/cmake/modules/DuneMacros.cmake:991 (target_link_libraries):
  The "debug" argument must be followed by a library.
Call Stack (most recent call first):
  src/CMakeLists.txt:2 (target_link_dune_default_libraries)
-- Configuring incomplete, errors occurred!

Note this fix is only needed for Boost versions 1.70 and higher.
Older versions do not provide cmake package configuration
files (BoostConfig.cmake) and hence there can be no mixup.

Note also that the alternative approach of setting
CMAKE_FIND_PACKAGE_PREFER_CONFIG does not work for OPM as with this
e.g. the Dune module versions would not be set correctly.
2021-06-15 21:04:41 +02:00
Markus Blatt bf55667553 Allow installation of bash completion scripts to new location.
That location is /usr/share/bash-completion/completions and scripts
will be loaded on demand. Added option USE_BASH_COMPLETIONS_DIR (default OFF)
to request this. It is needed to prevent lintian warnings for Debian
packages.
2021-06-15 20:56:50 +02:00
Markus Blatt ddfe309a88 Use current CMAKE_CXX_STANDARD in opm-project-prereq.cmake 2021-04-29 16:03:59 +02:00
Markus Blatt 7740e00883 Removed code for CMake < 3.10 2021-04-29 16:03:21 +02:00
Markus Blatt f336cd1b74 Include OpmPackage in opm-project-config.cmake and force -std=c++17
OpmPackage is needed as it defines find_package_deps. The CXX standard
needs to be set as some cmake package config scripts will add
incompatible compile switches like -std=gnu++11 otherwise (I guess
because of import targets with INTERFACE_COMPILE_FEATURES), that will
break the build.
2021-04-29 14:07:59 +02:00
Markus Blatt 62b202e85c Stop pretending that we support CMake 2.8
We actually already require at least CMake 2.8.12 due to the embedded
pybind11 (some tests of it are even at 3.0). Anyway as Ubuntu LTS has
3.10.2 I doubt that anything less is tested by us.
2021-04-07 13:56:03 +02:00
Markus Blatt 3fd76f9c26 Fixes include paths in pkg-config files (at least in Debian).
Previously we ended up with "-I -I/cjson" for
"/usr/include;/usr/include/cjson" in opm-common_INCLUDE_DIRS.

Gbp-Pq: Name 0008-Fixes-include-paths-in-pkg-config-files-at-least-in-.patch
2021-04-06 22:57:00 +02:00
Markus Blatt 3e22403cfe Make SOVERSION change with every release.
Previously the SOVERSION was the year which indicated a stable ABI
within each year. It is highly unlikely that or ABI is that
stable. Hence we stop pretending that it is and change the version
with every release.

Gbp-Pq: Name 0006-Make-SOVERSION-change-with-every-release.patch
2021-04-06 22:56:59 +02:00
Markus Blatt 8e70bfb93b Fix pkg-config files with imported targets.
They had imported target names (e.g. from OpenMP) in them which did not work.
Also linking std++fs was a bit strange. Hopefully fixed now.

Gbp-Pq: Name 0003-Fix-pkg-config-files-with-imported-targets.patch
2021-04-06 22:56:59 +02:00
Markus Blatt 77050e5042 Moved settings of CMake_STANDARD stuff to OPMInit.cmake
That makes it usable from *prereqs and helps preventing
multiple -std=c++xx options when compiling (at least for
pybind11)
2021-03-18 15:06:00 +01:00
Markus Blatt 55bdaaa9f9 Do not set unnecessary COMPILE_DEFINTIONS.
The ones set for DUNE are for very old unsupported versions.
2021-03-18 15:06:00 +01:00
Markus Blatt 05128745cf Some modules may still export definitions using -D, strip it. 2021-03-17 17:27:26 +01:00
Markus Blatt 213f0c0afa Only add -D for older CMake versions. 2021-03-17 16:57:00 +01:00
Markus Blatt 6d9a924930 Add -D qualifier to DEFINITIONS if missing for old CMake. 2021-03-17 15:36:24 +01:00
Markus Blatt a4f73a3a7c Use add_compile_definitions for newer CMake versions.
add_definitions is deprecated.
Note the new command does not need the -D qualifier but will detect
if there is one and act accordingly. This helps with package
configuration files that have "-DVAR" in their COMPILE_DEFINTIONS

As some packages actually already add the -D qualifier we now detect
that to be able to support old CMake version without
add_compile_definitions. In this case we prevent adding another -D
and use add_definitions.
2021-03-17 11:16:13 +01:00
Joakim Hove 0ae020cb8b Removed cmake module FindCwrap 2021-03-13 16:22:16 +01:00
Markus Blatt 2e0bc4f17a Recover external cjson library support.
This was somehow deactivated when merging opm-parser to opm-common.
2021-03-11 16:21:46 +01:00
Markus Blatt 8951ff3130 [cmake] Use scotch include dir for parmetis bindings of scotch.
The parmetis.h distributed via the parmetis binding of scotch
with Ubuntu 18.04 (libscotchparmetis-dev) includes the header
scotch.h located in /usr/include/scotch/. Therefore our check
of the include file failed. With this commit we check the
parmetis.h header another time with the scotch include path added.
Now parmetis is found on my Ubuntu.
2020-10-21 14:36:39 +02:00
Markus Blatt 7c30586fde Only compile code if non-empty code was submitted for DUNE/OPM.
Also make the search fail if the compilation fails.
2020-08-11 00:53:45 +02:00
Markus Blatt d5388ba653 Fix compile check for dune-geometry from DUNE>2.7
Dune::Geometry::makeQuadrilateral() is deprecated since 2.6 and has recently
been removed. We are using now using Dune::GeometryTypes::quadrilateral
2020-08-11 00:25:23 +02:00
Arne Morten Kvarving 64cbbdde65 add a cmake flag to disable warnings 2020-06-09 15:11:44 +02:00
Arne Morten Kvarving 1d3843cef1 changed: move build timestamp to separate header
to avoid rebuilds for things only needing project versions
2020-06-08 10:06:03 +02:00
Markus Blatt 9452796c57 Send error for required but disabled packages.
When using CMAKE_DISABLE_FIND_PACKAGE_<name>=ON for a required package
CMake did not issue an errors since we never trigger the find_package
call. With this commit we now check whether such package is required
and send an error.
2020-05-20 14:55:52 +02:00
Markus Blatt eeb63d8694 Merge pull request #1758 from blattms/mark-openmp-as-prereq
Mark OpenMP as prerequisite for opm-common
2020-04-29 12:57:02 +02:00
Joakim Hove ad536b718b Merge pull request #1754 from blattms/find-zoltan-only-with-mpi
[CMake] Find Zoltan only if MPI is available.
2020-04-28 14:50:08 +02:00
Markus Blatt a87e6f281d Quietly searcg for OpenMP in opm-common-prereqs.cmake 2020-04-28 12:58:39 +02:00
Markus Blatt b6dd398c32 Find Zoltan only if MPI is available.
Otherwise we experience compilation errors if OPM is configured with
deactivated MPI and activated and found dune-alugrid (cpmpile error
that mpi.h is not found). This commit fixes this for me.
2020-04-27 16:00:49 +02:00
Markus Blatt 0ebe62a1d5 Use OpenMP::OpenMP_CXX target when linking libopmcommon
This should allow downstream to automatically use the correct
compile and linke flags for CMake > 3.9. For older versions
we fall back to the old approach.

Closes #1751
2020-04-27 12:54:18 +02:00