From 781a43836b4f28fc17f15264b6ecf1513db76af8 Mon Sep 17 00:00:00 2001
From: Markus Blatt <mblatt@dune-project.org>
Date: Mon, 20 Aug 2012 15:03:10 +0000
Subject: [PATCH] Simplify code by using set_property with APPEND flag.

[[Imported from SVN: r6910]]
---
 cmake/modules/DuneMPI.cmake | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/cmake/modules/DuneMPI.cmake b/cmake/modules/DuneMPI.cmake
index e29c59f04..214dd963d 100644
--- a/cmake/modules/DuneMPI.cmake
+++ b/cmake/modules/DuneMPI.cmake
@@ -46,19 +46,23 @@ if(MPI_FOUND)
 endif(MPI_FOUND)
 
 # adds MPI flags to the targets
-function(add_dune_mpi_flags _targets)
+function(add_dune_mpi_flags)
+  cmake_parse_arguments(ADD_MPI "SOURCE_ONLY" "" "" ${ARGN})
+  message("ADD_MPI_UNPARSED_ARGUMENTS=${ADD_MPI_UNPARSED_ARGUMENTS}")
+  if(ADD_MPI_SOURCE_ONLY)
+    set(_prefix SOURCE)
+  else()
+    set(_prefix TARGET)
+  endif()
   if(MPI_FOUND)
-    foreach(_target ${_targets})
-      target_link_libraries(${_target} ${MPI_DUNE_LIBRARIES})
-      # The definitions are a hack as we do not seem to know which MPI implementation was
-      # found.
-      GET_TARGET_PROPERTY(_props ${_target} COMPILE_FLAGS)
-      string(REPLACE "_props-NOTFOUND" "" _props "${_props}")
-      SET_TARGET_PROPERTIES(${_target} PROPERTIES COMPILE_FLAGS
-        "${_props} ${MPI_DUNE_COMPILE_FLAGS} -DENABLE_MPI=1 -DMPICH_SKIP_MPICXX -DMPIPP_H")
-      GET_TARGET_PROPERTY(_props ${_target} LINK_FLAGS)
-      string(REPLACE "_props-NOTFOUND" "" _props "${_props}")
-      SET_TARGET_PROPERTIES(${_target} PROPERTIES LINK_FLAGS "${_props} ${MPI_DUNE_LINK_FLAGS}")
-    endforeach(_target ${_targets})
+    set_property(${_prefix} ${ADD_MPI_UNPARSED_ARGUMENTS} APPEND PROPERTY COMPILE_FLAGS ${MPI_DUNE_COMPILE_FLAGS})
+    set_property(${_prefix} ${ADD_MPI_UNPARSED_ARGUMENTS} APPEND PROPERTY COMPILE_DEFINITIONS ENABLE_MPI=1
+      MPICH_SKIP_MPICXX MPIPP_H)
+    if(NOT ADD_MPI_SOURCE_ONLY)
+    set_property(${_prefix} ${ADD_MPI_UNPARSED_ARGUMENTS} APPEND PROPERTY LINK_FLAGS ${MPI_DUNE_LINK_FLAGS})
+    foreach(target ${ADD_MPI_UNPARSED_ARGUMENTS})
+      target_link_libraries(${target} ${MPI_DUNE_LIBRARIES})
+    endforeach(target ${ADD_MPI_UNPARSED_ARGUMENTS})
+    endif(NOT ADD_MPI_SOURCE_ONLY)
   endif(MPI_FOUND)
 endfunction(add_dune_mpi_flags)
-- 
GitLab