diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7c1e9f9639bce8406e0df8ec9b2d46526e09b948..03298e13e2dc163971921b002788e8f0b0c7b1dd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -405,7 +405,7 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS)
   if(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS)
     message(SEND_ERROR "Cannot compile GUI without Mesh, Post or Plugin modules")
   endif(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS)
-  # get jpeg lib
+
   if(FLTK_JPEG)
     set_config_option(HAVE_LIBJPEG "Jpeg(Fltk)")
   else(FLTK_JPEG)
@@ -416,7 +416,7 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS)
       list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR})
     endif(JPEG_FOUND)
   endif(FLTK_JPEG)
-  # get zlib
+
   if(FLTK_Z)
     set_config_option(HAVE_LIBZ "Zlib(Fltk)")
   else(FLTK_Z)
@@ -427,7 +427,7 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS)
       list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
     endif(ZLIB_FOUND)
   endif(FLTK_Z)
-  # get png lib
+
   if(HAVE_LIBZ)
     if(FLTK_PNG)
       set_config_option(HAVE_LIBPNG "Png(Fltk)")
@@ -440,6 +440,21 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS)
       endif(PNG_FOUND)
     endif(FLTK_PNG)
   endif(HAVE_LIBZ)
+
+  if(ENABLE_MPEG_ENCODE)
+    add_subdirectory(contrib/mpeg_encode)
+    include_directories(contrib/mpeg_encode/headers)
+    set_config_option(HAVE_MPEG_ENCODE "Mpeg")
+  endif(ENABLE_MPEG_ENCODE)
+
+  if(ENABLE_OSMESA)
+    find_library(OSMESA_LIB OSMesa)
+    if(OSMESA_LIB)
+      set_config_option(HAVE_OSMESA "OSMesa")
+      list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB})
+    endif(OSMESA_LIB)
+  endif(ENABLE_OSMESA)
+
   find_package(OpenGL REQUIRED)
   if(OPENGL_GLU_FOUND)
     add_subdirectory(Graphics)
@@ -449,32 +464,21 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS)
   endif(OPENGL_GLU_FOUND)
 endif(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS)
 
-if(ENABLE_ANN)
-  find_library(ANN_LIB ann PATH_SUFFIXES lib)
-  find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN)
-  if(ANN_LIB AND ANN_INC)
-    list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB})
-    list(APPEND EXTERNAL_INCLUDES ${ANN_INC})
-  else(ANN_LIB AND ANN_INC)
-    message(STATUS "System ANN not found - using contrib/ANN instead")
-    add_subdirectory(contrib/ANN)
-    include_directories(contrib/ANN/include)
-  endif(ANN_LIB AND ANN_INC)
-  set_config_option(HAVE_ANN "Ann")
-endif(ENABLE_ANN)
-
-if(ENABLE_BLOSSOM)
-  add_subdirectory(contrib/blossom)
-  include_directories(contrib/blossom/MATCH contrib/blossom/concorde97
-                      contrib/blossom/concorde97/INCLUDE)
-  set_config_option(HAVE_BLOSSOM "Blossom")
-endif(ENABLE_BLOSSOM)
-
-if(ENABLE_CHACO)
-  add_subdirectory(contrib/Chaco)
-  include_directories(contrib/Chaco/main)
-  set_config_option(HAVE_CHACO "Chaco")
-endif(ENABLE_CHACO)
+if(HAVE_MESH OR HAVE_PLUGINS)
+  if(ENABLE_ANN)
+    find_library(ANN_LIB ann PATH_SUFFIXES lib)
+    find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN)
+    if(ANN_LIB AND ANN_INC)
+      list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${ANN_INC})
+    else(ANN_LIB AND ANN_INC)
+      message(STATUS "System ANN not found - using contrib/ANN instead")
+      add_subdirectory(contrib/ANN)
+      include_directories(contrib/ANN/include)
+    endif(ANN_LIB AND ANN_INC)
+    set_config_option(HAVE_ANN "Ann")
+  endif(ENABLE_ANN)
+endif(HAVE_MESH OR HAVE_PLUGINS)
 
 if(ENABLE_BFGS)
   add_subdirectory(contrib/lbfgs)
@@ -488,17 +492,6 @@ if(ENABLE_DINTEGRATION)
   set_config_option(HAVE_DINTEGRATION "DIntegration")
 endif(ENABLE_DINTEGRATION)
 
-if(ENABLE_GMM)
-  find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm)
-  if(GMM_INC)
-    list(APPEND EXTERNAL_INCLUDES ${GMM_INC})
-  else(GMM_INC)
-    message(STATUS "System GMM not found - using contrib/gmm instead")
-    include_directories(contrib/gmm)
-  endif(GMM_INC)
-  set_config_option(HAVE_GMM "Gmm")
-endif(ENABLE_GMM)
-
 if(ENABLE_KBIPACK)
   find_library(GMP_LIB gmp)
   if(GMP_LIB)
@@ -531,21 +524,30 @@ if(ENABLE_MPI)
    endif(MPI_FOUND)
 endif(ENABLE_MPI)
 
-if(ENABLE_MPEG_ENCODE)
-  add_subdirectory(contrib/mpeg_encode)
-  include_directories(contrib/mpeg_encode/headers)
-  set_config_option(HAVE_MPEG_ENCODE "Mpeg")
-endif(ENABLE_MPEG_ENCODE)
-
-if(ENABLE_METIS)
-  add_subdirectory(contrib/Metis)
-  include_directories(contrib/Metis)
-  set_config_option(HAVE_METIS "Metis")
-  message("WARNING: By including Metis you have to comply with Metis' special "
-          "licensing requirements stated in contrib/Metis/README.txt.")
-endif(ENABLE_METIS)
+if(HAVE_MESH OR HAVE_SOLVER)
+  if(ENABLE_METIS)
+    add_subdirectory(contrib/Metis)
+    include_directories(contrib/Metis)
+    set_config_option(HAVE_METIS "Metis")
+    message("WARNING: By including Metis you have to comply with Metis' special "
+            "licensing requirements stated in contrib/Metis/README.txt.")
+  endif(ENABLE_METIS)
+
+  if(ENABLE_CHACO)
+    add_subdirectory(contrib/Chaco)
+    include_directories(contrib/Chaco/main)
+    set_config_option(HAVE_CHACO "Chaco")
+  endif(ENABLE_CHACO)
+endif(HAVE_MESH OR HAVE_SOLVER)
 
 if(HAVE_MESH)
+  if(ENABLE_BLOSSOM)
+    add_subdirectory(contrib/blossom)
+    include_directories(contrib/blossom/MATCH contrib/blossom/concorde97
+                        contrib/blossom/concorde97/INCLUDE)
+    set_config_option(HAVE_BLOSSOM "Blossom")
+  endif(ENABLE_BLOSSOM)
+
   if(ENABLE_NETGEN)
     add_subdirectory(contrib/Netgen)
     include_directories(contrib/Netgen contrib/Netgen/libsrc/include 
@@ -644,122 +646,135 @@ if(ENABLE_MED OR ENABLE_CGNS)
   endif(HDF5_LIB)
 endif(ENABLE_MED OR ENABLE_CGNS)
 
-if(ENABLE_TAUCS)
-  if(NOT HAVE_METIS)
-    message(SEND_ERROR "You have to enable METIS in order to use TAUCS")
-  endif(NOT HAVE_METIS)
-  find_library(TAUCS_LIB taucs PATH_SUFFIXES lib)
-  if(TAUCS_LIB)
-    find_path(TAUCS_INC "taucs.h" PATH_SUFFIXES src include taucs)
-    if(TAUCS_INC)
-      set_config_option(HAVE_TAUCS "Taucs")
-      add_definitions(-DTAUCS_CILK)
-      list(APPEND EXTERNAL_LIBRARIES ${TAUCS_LIB})
-      list(APPEND EXTERNAL_INCLUDES ${TAUCS_INC})
-    endif(TAUCS_INC)
-  endif(TAUCS_LIB)
-endif(ENABLE_TAUCS)
-
-if(ENABLE_PETSC)
-  set(ENV_PETSC_DIR $ENV{PETSC_DIR})
-  set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
-  if(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables)
-    # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
-    set_config_option(HAVE_PETSC "PETSc")
-    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)
-    list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
-    string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
-           ${PETSC_VARIABLES})
-    if(PETSC_PACKAGES_INCLUDES)
-      string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
-             ${PETSC_PACKAGES_INCLUDES})
+if(HAVE_SOLVER)
+  if(ENABLE_GMM)
+    find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm)
+    if(GMM_INC)
+      list(APPEND EXTERNAL_INCLUDES ${GMM_INC})
+    else(GMM_INC)
+      message(STATUS "System GMM not found - using contrib/gmm instead")
+      include_directories(contrib/gmm)
+    endif(GMM_INC)
+    set_config_option(HAVE_GMM "Gmm")
+  endif(ENABLE_GMM)
+
+  if(ENABLE_TAUCS)
+    if(NOT HAVE_METIS)
+      message(SEND_ERROR "You have to enable METIS in order to use TAUCS")
+    endif(NOT HAVE_METIS)
+    find_library(TAUCS_LIB taucs PATH_SUFFIXES lib)
+    if(TAUCS_LIB)
+      find_path(TAUCS_INC "taucs.h" PATH_SUFFIXES src include taucs)
+      if(TAUCS_INC)
+        set_config_option(HAVE_TAUCS "Taucs")
+        add_definitions(-DTAUCS_CILK)
+        list(APPEND EXTERNAL_LIBRARIES ${TAUCS_LIB})
+        list(APPEND EXTERNAL_INCLUDES ${TAUCS_INC})
+      endif(TAUCS_INC)
+    endif(TAUCS_LIB)
+  endif(ENABLE_TAUCS)
+
+  if(ENABLE_PETSC)
+    set(ENV_PETSC_DIR $ENV{PETSC_DIR})
+    set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
+    if(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables)
+      # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
+      set_config_option(HAVE_PETSC "PETSc")
+      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)
+      list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
+      string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
+             ${PETSC_VARIABLES})
       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)
+        string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
+               ${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)
-    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 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)
-    # find slepc (needs to be linked in before petsc)
-    if(ENABLE_SLEPC)
-      set(ENV_SLEPC_DIR $ENV{SLEPC_DIR})
-      find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib)
-      if(SLEPC_LIB)
-        find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include 
-                  ${ENV_PETSC_ARCH}/include include/slepc)
-        if(SLEPC_INC)
-          set_config_option(HAVE_SLEPC "SLEPc")
-          list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
-          list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) 
-          find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR} 
-                    PATH_SUFFIXES ${ENV_PETSC_ARCH}/include)
-          if(SLEPC_INC2)
-            list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2}) 
-          endif(SLEPC_INC2)
-        endif(SLEPC_INC)
-      endif(SLEPC_LIB)
-      if(NOT HAVE_SLEPC AND NOT ENV_SLEPC_DIR)
-         message("WARNING: Export SLEPC_DIR before calling cmake")
-      endif(NOT HAVE_SLEPC AND NOT ENV_SLEPC_DIR)
-    endif(ENABLE_SLEPC)
-    list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
-    # find additional libraries to link with
-    string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
-    if(PLIBS)
-      string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
-      string(STRIP ${PLIBS} PLIBS)
-      list(APPEND EXTERNAL_LIBRARIES "${PLIBS}")
-    endif(PLIBS)
-    string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
-    if(PLIBS_BASIC)
-      string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
-      string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
-      list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}")
-    endif(PLIBS_BASIC)
-    string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
-    if(LLIBS)
-      string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
-      string(STRIP ${LLIBS} LLIBS)
-      list(APPEND EXTERNAL_LIBRARIES "${LLIBS}")
-    endif(LLIBS)
-  else(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables)
-    # new-style PETSc installations (in standard system directories)
-    find_library(PETSC_LIBS petsc)
-    find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
-    if(PETSC_LIBS AND PETSC_INC)
-      set_config_option(HAVE_PETSC "PETSc")
+      # 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 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)
+      # find slepc (needs to be linked in before petsc)
       if(ENABLE_SLEPC)
-        find_library(SLEPC_LIB slepc)
-        find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc)
-        if(SLEPC_LIB AND SLEPC_INC)
-          set_config_option(HAVE_SLEPC "SLEPc")
-          list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
-          list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) 
-        endif(SLEPC_LIB AND SLEPC_INC)
+        set(ENV_SLEPC_DIR $ENV{SLEPC_DIR})
+        find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib)
+        if(SLEPC_LIB)
+          find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include 
+                    ${ENV_PETSC_ARCH}/include include/slepc)
+          if(SLEPC_INC)
+            set_config_option(HAVE_SLEPC "SLEPc")
+            list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
+            list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) 
+            find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR} 
+                      PATH_SUFFIXES ${ENV_PETSC_ARCH}/include)
+            if(SLEPC_INC2)
+              list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2}) 
+            endif(SLEPC_INC2)
+          endif(SLEPC_INC)
+        endif(SLEPC_LIB)
+        if(NOT HAVE_SLEPC AND NOT ENV_SLEPC_DIR)
+           message("WARNING: Export SLEPC_DIR before calling cmake")
+        endif(NOT HAVE_SLEPC AND NOT ENV_SLEPC_DIR)
       endif(ENABLE_SLEPC)
       list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
-      list(APPEND EXTERNAL_INCLUDES ${PETSC_INC}) 
-    endif(PETSC_LIBS AND PETSC_INC)
-  endif(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables)
-  if(NOT HAVE_PETSC AND NOT ENV_PETSC_DIR)
-     message("WARNING: Export PETSC_DIR before calling cmake")
-  endif(NOT HAVE_PETSC AND NOT ENV_PETSC_DIR)
-  if(NOT HAVE_PETSC AND NOT ENV_PETSC_ARCH)
-     message("WARNING: Export PETSC_ARCH before calling cmake")
-  endif(NOT HAVE_PETSC AND NOT ENV_PETSC_ARCH)
-endif(ENABLE_PETSC)
+      # find additional libraries to link with
+      string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
+      if(PLIBS)
+        string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
+        string(STRIP ${PLIBS} PLIBS)
+        list(APPEND EXTERNAL_LIBRARIES "${PLIBS}")
+      endif(PLIBS)
+      string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
+      if(PLIBS_BASIC)
+        string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
+        string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
+        list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}")
+      endif(PLIBS_BASIC)
+      string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
+      if(LLIBS)
+        string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
+        string(STRIP ${LLIBS} LLIBS)
+        list(APPEND EXTERNAL_LIBRARIES "${LLIBS}")
+      endif(LLIBS)
+    else(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables)
+      # new-style PETSc installations (in standard system directories)
+      find_library(PETSC_LIBS petsc)
+      find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
+      if(PETSC_LIBS AND PETSC_INC)
+        set_config_option(HAVE_PETSC "PETSc")
+        if(ENABLE_SLEPC)
+          find_library(SLEPC_LIB slepc)
+          find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc)
+          if(SLEPC_LIB AND SLEPC_INC)
+            set_config_option(HAVE_SLEPC "SLEPc")
+            list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
+            list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) 
+          endif(SLEPC_LIB AND SLEPC_INC)
+        endif(ENABLE_SLEPC)
+        list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
+        list(APPEND EXTERNAL_INCLUDES ${PETSC_INC}) 
+      endif(PETSC_LIBS AND PETSC_INC)
+    endif(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables)
+    if(NOT HAVE_PETSC AND NOT ENV_PETSC_DIR)
+       message("WARNING: Export PETSC_DIR before calling cmake")
+    endif(NOT HAVE_PETSC AND NOT ENV_PETSC_DIR)
+    if(NOT HAVE_PETSC AND NOT ENV_PETSC_ARCH)
+       message("WARNING: Export PETSC_ARCH before calling cmake")
+    endif(NOT HAVE_PETSC AND NOT ENV_PETSC_ARCH)
+  endif(ENABLE_PETSC)
+endif(HAVE_SOLVER)
 
 if(ENABLE_OCC)
   if(WIN32 OR CYGWIN)
@@ -837,14 +852,6 @@ if(ENABLE_ACIS)
   endif(ACIS_LIB)
 endif(ENABLE_ACIS)
 
-if(ENABLE_OSMESA)
-  find_library(OSMESA_LIB OSMesa)
-  if(OSMESA_LIB)
-    set_config_option(HAVE_OSMESA "OSMesa")
-    list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB})
-  endif(OSMESA_LIB)
-endif(ENABLE_OSMESA)
-
 if(ENABLE_ONELAB)
   set_config_option(HAVE_ONELAB "OneLab")
 endif(ENABLE_ONELAB)