From 607e5e3b4b15a02fedd308f24916a8b9b1c5281e Mon Sep 17 00:00:00 2001
From: Ansgar Burchardt <burchardt@igpm.rwth-aachen.de>
Date: Thu, 16 Jan 2014 12:45:13 +0000
Subject: [PATCH] Add partial CMake support (tests are still missing).

[[Imported from SVN: r12681]]
---
 CMakeLists.txt                                | 12 +++++++++
 cmake/pkg/dune-solvers-config.cmake.in        | 20 ++++++++++++++
 dune-solvers-config.cmake.in                  | 20 ++++++++++++++
 dune-solvers-version.cmake.in                 |  8 ++++++
 dune/CMakeLists.txt                           |  1 +
 dune/solvers/CMakeLists.txt                   | 10 +++++++
 dune/solvers/common/CMakeLists.txt            | 10 +++++++
 dune/solvers/iterationsteps/CMakeLists.txt    | 27 +++++++++++++++++++
 dune/solvers/norms/CMakeLists.txt             | 12 +++++++++
 dune/solvers/operators/CMakeLists.txt         |  5 ++++
 dune/solvers/solvers/CMakeLists.txt           | 12 +++++++++
 dune/solvers/transferoperators/CMakeLists.txt | 14 ++++++++++
 m4/CMakeLists.txt                             |  4 +++
 13 files changed, 155 insertions(+)
 create mode 100644 CMakeLists.txt
 create mode 100644 cmake/pkg/dune-solvers-config.cmake.in
 create mode 100644 dune-solvers-config.cmake.in
 create mode 100644 dune-solvers-version.cmake.in
 create mode 100644 dune/CMakeLists.txt
 create mode 100644 dune/solvers/CMakeLists.txt
 create mode 100644 dune/solvers/common/CMakeLists.txt
 create mode 100644 dune/solvers/iterationsteps/CMakeLists.txt
 create mode 100644 dune/solvers/norms/CMakeLists.txt
 create mode 100644 dune/solvers/operators/CMakeLists.txt
 create mode 100644 dune/solvers/solvers/CMakeLists.txt
 create mode 100644 dune/solvers/transferoperators/CMakeLists.txt
 create mode 100644 m4/CMakeLists.txt

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 00000000..5cba9093
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,12 @@
+project("dune-solvers" CXX)
+cmake_minimum_required(VERSION 2.8.6)
+
+find_package(dune-common)
+list(APPEND CMAKE_MODULE_PATH ${dune-common_MODULE_PATH})
+include(DuneMacros)
+
+dune_project()
+
+add_subdirectory("dune")
+
+finalize_dune_project(GENERATE_CONFIG_H_CMAKE)
diff --git a/cmake/pkg/dune-solvers-config.cmake.in b/cmake/pkg/dune-solvers-config.cmake.in
new file mode 100644
index 00000000..43ed3a93
--- /dev/null
+++ b/cmake/pkg/dune-solvers-config.cmake.in
@@ -0,0 +1,20 @@
+if(NOT @DUNE_MOD_NAME@_FOUND)
+#compute installation prefix relative to this file
+get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_prefix "${_dir}/../../.." ABSOLUTE)
+
+#import the target
+#include("${_prefix}/lib/cmake/@DUNE_MOD_NAME@-targets.cmake")
+
+#report other information
+set(@DUNE_MOD_NAME@_PREFIX "${_prefix}")
+set(@DUNE_MOD_NAME@_INCLUDE_DIRS "${_prefix}/include")
+set(@DUNE_MOD_NAME@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
+set(@DUNE_MOD_NAME@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
+set(@DUNE_MOD_NAME@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
+set(@DUNE_MOD_NAME@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
+set(@DUNE_MOD_NAME@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
+set(@DUNE_MOD_NAME@_DEPENDS "@DUNE_DEPENDS@")
+set(@DUNE_MOD_NAME@_SUGGESTS "@DUNE_SUGGESTS@")
+set(@DUNE_MOD_NAME@_MODULE_PATH "${_prefix}/@DUNE_INSTALL_MODULEDIR@")
+endif(NOT @DUNE_MOD_NAME@_FOUND)
\ No newline at end of file
diff --git a/dune-solvers-config.cmake.in b/dune-solvers-config.cmake.in
new file mode 100644
index 00000000..43ed3a93
--- /dev/null
+++ b/dune-solvers-config.cmake.in
@@ -0,0 +1,20 @@
+if(NOT @DUNE_MOD_NAME@_FOUND)
+#compute installation prefix relative to this file
+get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_prefix "${_dir}/../../.." ABSOLUTE)
+
+#import the target
+#include("${_prefix}/lib/cmake/@DUNE_MOD_NAME@-targets.cmake")
+
+#report other information
+set(@DUNE_MOD_NAME@_PREFIX "${_prefix}")
+set(@DUNE_MOD_NAME@_INCLUDE_DIRS "${_prefix}/include")
+set(@DUNE_MOD_NAME@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
+set(@DUNE_MOD_NAME@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
+set(@DUNE_MOD_NAME@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
+set(@DUNE_MOD_NAME@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
+set(@DUNE_MOD_NAME@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
+set(@DUNE_MOD_NAME@_DEPENDS "@DUNE_DEPENDS@")
+set(@DUNE_MOD_NAME@_SUGGESTS "@DUNE_SUGGESTS@")
+set(@DUNE_MOD_NAME@_MODULE_PATH "${_prefix}/@DUNE_INSTALL_MODULEDIR@")
+endif(NOT @DUNE_MOD_NAME@_FOUND)
\ No newline at end of file
diff --git a/dune-solvers-version.cmake.in b/dune-solvers-version.cmake.in
new file mode 100644
index 00000000..a1c2199d
--- /dev/null
+++ b/dune-solvers-version.cmake.in
@@ -0,0 +1,8 @@
+set(PACKAGE_VERSION "@DUNE_MOD_VERSION@")
+
+if(NOT "${PACKAGE_FIND_VERSION}" VERSION_GREATER "@DUNE_MOD_VERSION@")
+  set (PACKAGE_VERSION_COMPATIBLE 1) # compatible with older
+  if ("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "@DUNE_MOD_VERSION@")
+    set(PACKAGE_VERSION_EXACT 1) #exact match for this version
+  endif()
+endif()
diff --git a/dune/CMakeLists.txt b/dune/CMakeLists.txt
new file mode 100644
index 00000000..f62b2603
--- /dev/null
+++ b/dune/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory("solvers")
diff --git a/dune/solvers/CMakeLists.txt b/dune/solvers/CMakeLists.txt
new file mode 100644
index 00000000..83d271c6
--- /dev/null
+++ b/dune/solvers/CMakeLists.txt
@@ -0,0 +1,10 @@
+add_subdirectory("common")
+add_subdirectory("iterationsteps")
+add_subdirectory("norms")
+add_subdirectory("operators")
+add_subdirectory("solvers")
+add_subdirectory("transferoperators")
+
+install(FILES
+    computeenergy.hh
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/solvers)
diff --git a/dune/solvers/common/CMakeLists.txt b/dune/solvers/common/CMakeLists.txt
new file mode 100644
index 00000000..3bdd6841
--- /dev/null
+++ b/dune/solvers/common/CMakeLists.txt
@@ -0,0 +1,10 @@
+install(FILES
+    arithmetic.hh
+    boxconstraint.hh
+    canignore.hh
+    genericvectortools.hh
+    numproc.hh
+    permutationmanager.hh
+    preconditioner.hh
+    staticmatrixtools.hh
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/solvers/common)
diff --git a/dune/solvers/iterationsteps/CMakeLists.txt b/dune/solvers/iterationsteps/CMakeLists.txt
new file mode 100644
index 00000000..f506aac5
--- /dev/null
+++ b/dune/solvers/iterationsteps/CMakeLists.txt
@@ -0,0 +1,27 @@
+install(FILES
+    amgstep.hh
+    blockgsstep.cc
+    blockgsstep.hh
+    cgstep.cc
+    cgstep.hh
+    istlseqilu0step.hh
+    iterationstep.hh
+    lineariterationstep.hh
+    linegsstep.cc
+    linegsstep.hh
+    minimalpolynomialextrapolationstep.hh
+    mmgstep.cc
+    mmgstep.hh
+    multigridstep.cc
+    multigridstep.hh
+    obstacletnnmgstep.hh
+    projectedblockgsstep.cc
+    projectedblockgsstep.hh
+    projectedlinegsstep.cc
+    projectedlinegsstep.hh
+    richardsonstep.hh
+    truncatedblockgsstep.hh
+    truncatedsaddlepointgsstep.hh
+    trustregiongsstep.cc
+    trustregiongsstep.hh
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/solvers/iterationsteps)
diff --git a/dune/solvers/norms/CMakeLists.txt b/dune/solvers/norms/CMakeLists.txt
new file mode 100644
index 00000000..4da971a1
--- /dev/null
+++ b/dune/solvers/norms/CMakeLists.txt
@@ -0,0 +1,12 @@
+install(FILES
+    blocknorm.hh
+    diagnorm.hh
+    energynorm.hh
+    fullnorm.hh
+    h1seminorm.hh
+    norm.hh
+    pnorm.hh
+    reorderedblocknorm.hh
+    sumnorm.hh
+    twonorm.hh
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/solvers/norms)
diff --git a/dune/solvers/operators/CMakeLists.txt b/dune/solvers/operators/CMakeLists.txt
new file mode 100644
index 00000000..a3eee0b0
--- /dev/null
+++ b/dune/solvers/operators/CMakeLists.txt
@@ -0,0 +1,5 @@
+install(FILES
+    lowrankoperator.hh
+    nulloperator.hh
+    sumoperator.hh
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/solvers/operators)
diff --git a/dune/solvers/solvers/CMakeLists.txt b/dune/solvers/solvers/CMakeLists.txt
new file mode 100644
index 00000000..a2e7d1c6
--- /dev/null
+++ b/dune/solvers/solvers/CMakeLists.txt
@@ -0,0 +1,12 @@
+install(FILES
+    cgsolver.cc
+    cgsolver.hh
+    iterativesolver.cc
+    iterativesolver.hh
+    loopsolver.cc
+    loopsolver.hh
+    quadraticipopt.hh
+    solver.hh
+    tcgsolver.cc
+    tcgsolver.hh
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/solvers/solvers)
diff --git a/dune/solvers/transferoperators/CMakeLists.txt b/dune/solvers/transferoperators/CMakeLists.txt
new file mode 100644
index 00000000..d76a30ad
--- /dev/null
+++ b/dune/solvers/transferoperators/CMakeLists.txt
@@ -0,0 +1,14 @@
+install(FILES
+    compressedmultigridtransfer.hh
+    densemultigridtransfer.hh
+    genericmultigridtransfer.hh
+    mandelobsrestrictor.cc
+    mandelobsrestrictor.hh
+    multigridtransfer.hh
+    obstaclerestrictor.hh
+    truncatedcompressedmgtransfer.cc
+    truncatedcompressedmgtransfer.hh
+    truncateddensemgtransfer.cc
+    truncateddensemgtransfer.hh
+    truncatedmgtransfer.hh
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/solvers/transferoperators)
diff --git a/m4/CMakeLists.txt b/m4/CMakeLists.txt
new file mode 100644
index 00000000..3da0b6f1
--- /dev/null
+++ b/m4/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(FILES
+    dune-solvers.m4
+    ipopt4.m4
+    DESTINATION share/aclocal)
-- 
GitLab