diff --git a/CMakeLists.txt b/CMakeLists.txt
index a3621bdbaf70c7e5a9166a4e66018c979606cbea..943c6d373f97ca1c7ff1b69f9b41081703116003 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -752,7 +752,6 @@ if(HAVE_SOLVER)
     endif(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")
       message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}")
       message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
       file(STRINGS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables 
@@ -781,6 +780,9 @@ if(HAVE_SOLVER)
       if(NOT PETSC_LIBS)
         find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib)
       endif(NOT PETSC_LIBS)
+      if(PETSC_LIBS)
+        set_config_option(HAVE_PETSC "PETSc")
+      endif(PETSC_LIBS)
       # find slepc (needs to be linked in before petsc)
       if(ENABLE_SLEPC)
         if(SLEPC_DIR)
@@ -793,8 +795,8 @@ if(HAVE_SOLVER)
           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")
             message(STATUS "Using SLEPc dir: ${ENV_SLEPC_DIR}")
+            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}