diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4d0980108da14a46268f27760bec2a873b0852c7..1c50815ba993162837d2b82cf3b81194dfa815f4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -877,61 +877,6 @@ if(HAVE_SOLVER)
     set_config_option(HAVE_GMM "Gmm")
   endif(ENABLE_GMM)
 
-  if(ENABLE_TAUCS)
-    if(HAVE_METIS)
-      add_subdirectory(contrib/taucs)
-      include_directories(contrib/taucs/src contrib/taucs/config)
-      if(WIN32 OR CYGWIN)
-        add_definitions(-DOSTYPE_win32)
-      elseif(APPLE)
-        add_definitions(-DOSTYPE_darwin)
-      else(WIN32)
-        add_definitions(-DOSTYPE_linux)
-      endif(WIN32 OR CYGWIN)
-      file(GLOB_RECURSE TAUCS_D ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/D/*.c)
-      file(GLOB_RECURSE TAUCS_S ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/S/*.c)
-      file(GLOB_RECURSE TAUCS_Z ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/Z/*.c)
-      file(GLOB_RECURSE TAUCS_C ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/C/*.c)
-      file(GLOB_RECURSE TAUCS_G ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/G/*.c)
-      list(APPEND GMSH_SRC ${TAUCS_D};${TAUCS_S};${TAUCS_Z};${TAUCS_C};${TAUCS_G})
-      set_source_files_properties(${TAUCS_D} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_DOUBLE)
-      set_source_files_properties(${TAUCS_S} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_SINGLE)
-      set_source_files_properties(${TAUCS_Z} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_DCOMPLEX)
-      set_source_files_properties(${TAUCS_C} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_SCOMPLEX)
-      set_source_files_properties(${TAUCS_G} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_GENERAL)
-      set_config_option(HAVE_TAUCS "Taucs")
-    else(HAVE_METIS)
-      message(STATUS "Warning: Disabling Taucs (requires METIS)")
-    endif(HAVE_METIS)
-  endif(ENABLE_TAUCS)
-
-  if(ENABLE_MUMPS)
-    set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord)
-    if(NOT ENABLE_MPI)
-      list(APPEND MUMPS_LIBS_REQUIRED mpiseq)
-    endif(NOT ENABLE_MPI)
-    find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib")
-    find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include)
-    find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include)
-    find_path(CMUMPS_INC "cmumps_c.h" PATH_SUFFIXES src include)
-    find_path(ZMUMPS_INC "zmumps_c.h" PATH_SUFFIXES src include)
-    if(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
-      set_config_option(HAVE_MUMPS "MUMPS")
-      list(APPEND EXTERNAL_LIBRARIES ${MUMPS_LIBRARIES})
-      list(APPEND EXTERNAL_INCLUDES ${SMUMPS_INC})
-      list(APPEND EXTERNAL_INCLUDES ${DMUMPS_INC})
-      list(APPEND EXTERNAL_INCLUDES ${CMUMPS_INC})
-      list(APPEND EXTERNAL_INCLUDES ${ZMUMPS_INC})
-      find_library(GFORTRAN_LIB gfortran)
-      if(GFORTRAN_LIB)
-        list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB})
-      endif(GFORTRAN_LIB)
-      if(ENABLE_GMM) # use GMM/MUMPS interface
-        add_definitions(-DGMM_USES_MUMPS)
-      endif(ENABLE_GMM)
-    endif(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
-  endif(ENABLE_MUMPS)
-
   if(ENABLE_PETSC)
     if(PETSC_DIR)
       set(ENV_PETSC_DIR ${PETSC_DIR})
@@ -1070,6 +1015,61 @@ if(HAVE_SOLVER)
     endif(PETSC_VARIABLES)
   endif(ENABLE_PETSC)
 
+  if(ENABLE_TAUCS AND HAVE_BLAS AND HAVE_LAPACK)
+    if(HAVE_METIS)
+      add_subdirectory(contrib/taucs)
+      include_directories(contrib/taucs/src contrib/taucs/config)
+      if(WIN32 OR CYGWIN)
+        add_definitions(-DOSTYPE_win32)
+      elseif(APPLE)
+        add_definitions(-DOSTYPE_darwin)
+      else(WIN32)
+        add_definitions(-DOSTYPE_linux)
+      endif(WIN32 OR CYGWIN)
+      file(GLOB_RECURSE TAUCS_D ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/D/*.c)
+      file(GLOB_RECURSE TAUCS_S ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/S/*.c)
+      file(GLOB_RECURSE TAUCS_Z ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/Z/*.c)
+      file(GLOB_RECURSE TAUCS_C ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/C/*.c)
+      file(GLOB_RECURSE TAUCS_G ${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/G/*.c)
+      list(APPEND GMSH_SRC ${TAUCS_D};${TAUCS_S};${TAUCS_Z};${TAUCS_C};${TAUCS_G})
+      set_source_files_properties(${TAUCS_D} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_DOUBLE)
+      set_source_files_properties(${TAUCS_S} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_SINGLE)
+      set_source_files_properties(${TAUCS_Z} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_DCOMPLEX)
+      set_source_files_properties(${TAUCS_C} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_SCOMPLEX)
+      set_source_files_properties(${TAUCS_G} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_GENERAL)
+      set_config_option(HAVE_TAUCS "Taucs")
+    else(HAVE_METIS)
+      message(STATUS "Warning: Disabling Taucs (requires METIS)")
+    endif(HAVE_METIS)
+  endif(ENABLE_TAUCS AND HAVE_BLAS AND HAVE_LAPACK)
+  
+  if(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK)
+    set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord)
+    if(NOT ENABLE_MPI)
+      list(APPEND MUMPS_LIBS_REQUIRED mpiseq)
+    endif(NOT ENABLE_MPI)
+    find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib")
+    find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include)
+    find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include)
+    find_path(CMUMPS_INC "cmumps_c.h" PATH_SUFFIXES src include)
+    find_path(ZMUMPS_INC "zmumps_c.h" PATH_SUFFIXES src include)
+    if(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
+      set_config_option(HAVE_MUMPS "MUMPS")
+      list(APPEND EXTERNAL_LIBRARIES ${MUMPS_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${SMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${DMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${CMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${ZMUMPS_INC})
+      find_library(GFORTRAN_LIB gfortran)
+      if(GFORTRAN_LIB)
+        list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB})
+      endif(GFORTRAN_LIB)
+      if(ENABLE_GMM) # use GMM/MUMPS interface
+        add_definitions(-DGMM_USES_MUMPS)
+      endif(ENABLE_GMM)
+    endif(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
+  endif(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK)
+
   if(ENABLE_GETDP)
     find_library(GETDP_LIB GetDP)
     find_path(GETDP_INC "GetDP.h" PATH_SUFFIXES getdp)