From 92e79ef231698de598769538f08dc2f35d3d4aa0 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Mon, 30 May 2016 13:20:17 +0200
Subject: [PATCH] HDF5: Add add_dune_hdf5_flags() to cmake

---
 CMakeLists.txt                      |  2 --
 cmake/modules/AddHDF5Flags.cmake    | 18 ++++++++++++++++++
 cmake/modules/DuneFufemMacros.cmake |  2 ++
 dune/fufem/test/CMakeLists.txt      |  3 +--
 4 files changed, 21 insertions(+), 4 deletions(-)
 create mode 100644 cmake/modules/AddHDF5Flags.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4266cf52..357a711e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,8 +9,6 @@ find_package(dune-common REQUIRED)
 list(APPEND CMAKE_MODULE_PATH ${dune-common_MODULE_PATH})
 include(DuneMacros)
 
-find_package(HDF5 COMPONENTS C HL)
-
 dune_project()
 
 add_subdirectory("doc")
diff --git a/cmake/modules/AddHDF5Flags.cmake b/cmake/modules/AddHDF5Flags.cmake
new file mode 100644
index 00000000..195c9cb4
--- /dev/null
+++ b/cmake/modules/AddHDF5Flags.cmake
@@ -0,0 +1,18 @@
+#
+# Module providing convenience methods for compile binaries with HDF5 support.
+#
+# Provides the following functions:
+#
+# add_dune_hdf5_flags(target1 target2 ...)
+#
+# adds HDF5 flags to the targets for compilation and linking
+#
+
+function(add_dune_hdf5_flags _targets)
+    if(HDF5_FOUND)
+        foreach(_target ${_targets})
+            target_link_libraries(${_target} ${HDF5_LIBRARIES})
+            set_property(TARGET ${_target} APPEND PROPERTY INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIR})
+        endforeach(_target ${_targets})
+    endif(HDF5_FOUND)
+endfunction(add_dune_hdf5_flags)
diff --git a/cmake/modules/DuneFufemMacros.cmake b/cmake/modules/DuneFufemMacros.cmake
index c394897f..fe934054 100644
--- a/cmake/modules/DuneFufemMacros.cmake
+++ b/cmake/modules/DuneFufemMacros.cmake
@@ -42,9 +42,11 @@ set(Python_ADDITIONAL_VERSIONS 2.7 3 3.2)
 
 find_package(PythonLibs)
 find_package(Adolc)
+find_package(HDF5 COMPONENTS C HL)
 
 find_package(Boost COMPONENTS serialization)
 set(HAVE_BOOST_SERIALIZATION ${Boost_SERIALIZATION_FOUND})
 
 include(AddPythonLibsFlags)
 include(AddAdolcFlags)
+include(AddHDF5Flags)
diff --git a/dune/fufem/test/CMakeLists.txt b/dune/fufem/test/CMakeLists.txt
index d0b4d637..efcfe0c4 100644
--- a/dune/fufem/test/CMakeLists.txt
+++ b/dune/fufem/test/CMakeLists.txt
@@ -85,6 +85,5 @@ endif()
 
 if (HDF5_FOUND)
   dune_add_test(SOURCES test-hdf5.cc)
-  set_property(TARGET test-hdf5 APPEND PROPERTY INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIR})
-  target_link_libraries(test-hdf5 ${HDF5_LIBRARIES})
+  add_dune_hdf5_flags(test-hdf5)
 endif()
-- 
GitLab