From 4be454f9031bee0d85d272a4bc7c3d79d07db4bc Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Thu, 17 Mar 2011 06:52:14 +0000
Subject: [PATCH] trying to fix missing petsc libs, second try

---
 CMakeLists.txt | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 051cf63324..be7d7466fc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,7 +44,7 @@ option(ENABLE_NETGEN "Enable Netgen mesh generator" ON)
 option(ENABLE_OCC "Enable Open CASCADE geometrical models" ON)
 option(ENABLE_OSMESA "Use OSMesa for offscreen rendering" OFF)
 option(ENABLE_PARSER "Build the GEO file parser" ON)
-option(ENABLE_PETSC "Enable PETSc linear algebra solvers" OFF)
+option(ENABLE_PETSC "Enable PETSc linear algebra solvers" ON)
 option(ENABLE_PLUGINS "Build the post-processing plugins" ON)
 option(ENABLE_POST "Build the post-processing module" ON)
 option(ENABLE_QT "Build QT GUI" OFF)
@@ -621,26 +621,31 @@ if(ENABLE_PETSC)
            ${PETSC_VARIABLES})
     string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
            ${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})
         foreach(VAR ${PETSC_PACKAGES_INCLUDES})
       list(APPEND EXTERNAL_INCLUDES ${VAR})
       endforeach(VAR)
-    endif (PETSC_PACKAGES_INCLUDES)
+    endif(PETSC_PACKAGES_INCLUDES)
     # find libraries (<= 3.0)
     set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
     find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED 
                        ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "")
-    # petsc 3.1 create only one library (libpetsc)
-    if (NOT PETSC_LIBS)
-      find_library (PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib)
+    # petsc 3.1 creates only one library (libpetsc)
+    if(NOT PETSC_LIBS)
+      find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib)
     endif(NOT PETSC_LIBS)
-    string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PETSC_PACKAGES_LIBS
-           ${PETSC_VARIABLES})
-    string(REPLACE "PACKAGES_LIBS = " "" PETSC_PACKAGES_LIBS
-           ${PETSC_PACKAGES_LIBS})
-    list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS} "${PETSC_PACKAGES_LIBS}")
+    list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
+    # find additional libraries to link with
+    string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
+    string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
+    string(STRIP ${PLIBS} PLIBS)
+    list(APPEND EXTERNAL_LIBRARIES "${PLIBS}")
+    string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
+    string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
+    string(STRIP ${LLIBS} LLIBS)
+    list(APPEND EXTERNAL_LIBRARIES "${LLIBS}")
   endif(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables)
 endif(ENABLE_PETSC)
 
-- 
GitLab