From ae629d9b424dfbe82de723f75da942673cb06dff Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Fri, 8 Nov 2013 14:01:29 +0000
Subject: [PATCH] better fix for petsc 3.4

---
 CMakeLists.txt | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9cb575640b..e6791f01cf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -869,19 +869,25 @@ if(HAVE_SOLVER)
       # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
       message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}")
       message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
+      # find includes by parsing the petscvariables file
       file(STRINGS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables 
            PETSC_VARIABLES NEWLINE_CONSUME)
-      # find include directories
-      list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include)
-      #if(NOT HAVE_MPI) # necessary for PETSC >= 3.4
-      #  list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include/mpiuni)
-      #endif(NOT HAVE_MPI)
-      list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
-      string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
+      # try to find PETSC_CC_INCLUDES for PETSc >= 3.4
+      string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
              ${PETSC_VARIABLES})
       if(PETSC_PACKAGES_INCLUDES)
+        string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
+               ${PETSC_PACKAGES_INCLUDES})
+      else(PETSC_PACKAGES_INCLUDES)
+        # try to find PETSC_PACKAGES_INCLUDES in older versions
+        list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include)
+        list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
+        string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
+               ${PETSC_VARIABLES})
         string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
                ${PETSC_PACKAGES_INCLUDES})
+      endif(PETSC_PACKAGES_INCLUDES)
+      if(PETSC_PACKAGES_INCLUDES)
         if(PETSC_PACKAGES_INCLUDES)
           string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
           string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
-- 
GitLab