diff --git a/CMakeModules/morse/find/FindBLAS.cmake b/CMakeModules/morse/find/FindBLAS.cmake
index 82b7dd4cfe55308d458dcff1ec231420bdf547f0..d6f69e6149a62e7b0ce5252797a67630909db657 100644
--- a/CMakeModules/morse/find/FindBLAS.cmake
+++ b/CMakeModules/morse/find/FindBLAS.cmake
@@ -35,6 +35,13 @@
 #  BLAS_DIR            - Where to find the base directory of blas
 #  BLAS_INCDIR         - Where to find the header files
 #  BLAS_LIBDIR         - Where to find the library files
+# The module can also look after the following environment variables if paths
+# are not given as cmake variable
+#  BLAS_DIR            - Where to find the base directory of blas
+#  BLAS_INCDIR         - Where to find the header files
+#  BLAS_LIBDIR         - Where to find the library files
+# For MKL case and if no paths are given as hints, we will try to use the MKLROOT
+# environment variable
 ##########
 ### List of vendors (BLA_VENDOR) valid in this module
 ########## List of vendors (BLA_VENDOR) valid in this module
@@ -180,6 +187,9 @@ macro(Check_Fortran_Libraries LIBRARIES _prefix _name _flags _list _thread)
     set(_libraries_work TRUE)
     set(${LIBRARIES})
     set(_combined_name)
+    set(ENV_MKLROOT "$ENV{MKLROOT}")
+    set(ENV_BLAS_DIR "$ENV{BLAS_DIR}")
+    set(ENV_BLAS_LIBDIR "$ENV{BLAS_LIBDIR}")
     if (NOT _libdir)
         if (BLAS_DIR)
             list(APPEND _libdir "${BLAS_DIR}")
@@ -193,7 +203,28 @@ macro(Check_Fortran_Libraries LIBRARIES _prefix _name _flags _list _thread)
             endif()
         elseif (BLAS_LIBDIR)
             list(APPEND _libdir "${BLAS_LIBDIR}")
+        elseif(ENV_BLAS_DIR)
+            list(APPEND _libdir "${ENV_BLAS_DIR}")
+            list(APPEND _libdir "${ENV_BLAS_DIR}/lib")
+            if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+                list(APPEND _libdir "${ENV_BLAS_DIR}/lib64")
+                list(APPEND _libdir "${ENV_BLAS_DIR}/lib/intel64")
+            else()
+                list(APPEND _libdir "${ENV_BLAS_DIR}/lib32")
+                list(APPEND _libdir "${ENV_BLAS_DIR}/lib/ia32")
+            endif()
+        elseif(ENV_BLAS_LIBDIR)
+            list(APPEND _libdir "${ENV_BLAS_LIBDIR}")
         else()
+            if (ENV_MKLROOT)
+                if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+                    list(APPEND _libdir "${ENV_MKLROOT}/lib64")
+                    list(APPEND _libdir "${ENV_MKLROOT}/lib/intel64")
+                else()
+                    list(APPEND _libdir "${ENV_MKLROOT}/lib32")
+                    list(APPEND _libdir "${ENV_MKLROOT}/lib/ia32")
+                endif()
+            endif()
             if (WIN32)
                 string(REPLACE ":" ";" _libdir2 "$ENV{LIB}")
             elseif (APPLE)
@@ -370,10 +401,12 @@ if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All")
                     if (CMAKE_C_COMPILER_NAME STREQUAL "gcc" OR
                         CMAKE_C_COMPILER_NAME STREQUAL "cc")
                         list(APPEND BLAS_SEARCH_LIBS
-                        "mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core gomp")
+                        "mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core")
+                        set(OMP_LIB "-lgomp")
                     else ()
                         list(APPEND BLAS_SEARCH_LIBS
-                        "mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core iomp5")
+                        "mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core")
+                        set(OMP_LIB "-liomp5")
                     endif ()
                 endif ()
                 if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All")
@@ -442,10 +475,12 @@ if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All")
                     if (CMAKE_C_COMPILER_NAME STREQUAL "gcc" OR
                         CMAKE_C_COMPILER_NAME STREQUAL "cc")
                         list(APPEND BLAS_SEARCH_LIBS
-                        "mkl_intel_lp64 mkl_gnu_thread mkl_core gomp")
+                        "mkl_intel_lp64 mkl_gnu_thread mkl_core")
+                        set(OMP_LIB "-lgomp")
                     else ()
                         list(APPEND BLAS_SEARCH_LIBS
-                        "mkl_intel_lp64 mkl_intel_thread mkl_core iomp5")
+                        "mkl_intel_lp64 mkl_intel_thread mkl_core")
+                        set(OMP_LIB "-liomp5")
                     endif ()
                 endif ()
                 if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All")
@@ -476,7 +511,7 @@ if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All")
                 ${BLAS_mkl_SEARCH_SYMBOL}
                 "${additional_flags}"
                 "${SEARCH_LIBS}"
-                "${CMAKE_THREAD_LIBS_INIT};${LM}"
+                "${OMP_LIB};${CMAKE_THREAD_LIBS_INIT};${LM}"
                 )
                 if(_LIBRARIES)
                     set(BLAS_LINKER_FLAGS "${additional_flags}")
@@ -936,12 +971,14 @@ endif(BLA_F95)
 
 set(CMAKE_FIND_LIBRARY_SUFFIXES ${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
 
-if (BLAS_FOUND AND NOT BLAS_DIR)
+if (BLAS_FOUND)
     list(GET BLAS_LIBRARIES 0 first_lib)
     get_filename_component(first_lib_path "${first_lib}" PATH)
     if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)")
         string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}")
-        set(BLAS_DIR "${not_cached_dir}" CACHE PATH "Installation directory of BLAS library" FORCE)
+        set(BLAS_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of BLAS library" FORCE)
+    else()
+        set(BLAS_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of BLAS library" FORCE)
     endif()
 endif()
 
diff --git a/CMakeModules/morse/find/FindFFTW.cmake b/CMakeModules/morse/find/FindFFTW.cmake
index 801c85207a3379156d667e5e29d06e17fb63f5e5..6791ce566966448f847e10d989776eba2d4a8a9d 100644
--- a/CMakeModules/morse/find/FindFFTW.cmake
+++ b/CMakeModules/morse/find/FindFFTW.cmake
@@ -40,6 +40,10 @@
 #  FFTW_DIR             - Where to find the base directory of fftw
 #  FFTW_INCDIR          - Where to find the header files
 #  FFTW_LIBDIR          - Where to find the library files
+# The module can also look for the following environment variables if paths
+# are not given as cmake variable: FFTW_DIR, FFTW_INCDIR, FFTW_LIBDIR
+# For MKL case and if no paths are given as hints, we will try to use the MKLROOT
+# environment variable
 
 #=============================================================================
 # Copyright 2012-2013 Inria
@@ -60,7 +64,7 @@
 
 
 if (NOT FFTW_FOUND)
-    set(FFTW_DIR "" CACHE PATH "Installation directory of FFTW library")
+    set(FFTW_DIR "" CACHE PATH "Installation directory of FFTW library given by user")
     if (NOT FFTW_FIND_QUIETLY)
         message(STATUS "A cache variable, namely FFTW_DIR, has been set to specify the install directory of FFTW")
     endif()
@@ -136,6 +140,14 @@ if (FFTW_LOOK_FOR_THREADS)
     endif()
 endif()
 
+if (FFTW_LOOK_FOR_MKL)
+    if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_MKL)
+        find_package(Threads REQUIRED)
+    else()
+        find_package(Threads)
+    endif()
+endif()
+
 if (FFTW_LOOK_FOR_OMP)
     if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_OMP)
         find_package(OpenMP REQUIRED)
@@ -144,16 +156,29 @@ if (FFTW_LOOK_FOR_OMP)
     endif()
 endif()
 
-if( NOT FFTW_FOUND )
-
-    # Looking for include
-    # -------------------
-
-    # Add system include paths to search include
-    # ------------------------------------------
-    unset(_inc_env)
+# Looking for include
+# -------------------
+
+# Add system include paths to search include
+# ------------------------------------------
+unset(_inc_env)
+set(ENV_MKLROOT "$ENV{MKLROOT}")
+set(ENV_FFTW_DIR "$ENV{FFTW_DIR}")
+set(ENV_FFTW_INCDIR "$ENV{FFTW_INCDIR}")
+if(ENV_FFTW_INCDIR)
+    list(APPEND _inc_env "${ENV_FFTW_INCDIR}")
+elseif(ENV_FFTW_DIR)
+    list(APPEND _inc_env "${ENV_FFTW_DIR}")
+    list(APPEND _inc_env "${ENV_FFTW_DIR}/include")
+    list(APPEND _inc_env "${ENV_FFTW_DIR}/include/fftw")
+else()
+    if (ENV_MKLROOT)
+        list(APPEND _inc_env "${ENV_MKLROOT}/include/fftw")
+    endif()
+    # system variables
     if(WIN32)
-        string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}")
+        string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}")
+        list(APPEND _inc_env "${_path_env}")
     else()
         string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}")
         list(APPEND _inc_env "${_path_env}")
@@ -164,271 +189,297 @@ if( NOT FFTW_FOUND )
         string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}")
         list(APPEND _inc_env "${_path_env}")
     endif()
-    list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}")
-    list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}")
-    list(REMOVE_DUPLICATES _inc_env)
-
-    # set paths where to look for
-    set(PATH_TO_LOOK_FOR "${_inc_env}")
-
-    # Try to find the fftw header in the given paths
-    # -------------------------------------------------
-    # call cmake macro to find the header path
-    if(FFTW_INCDIR)
+endif()
+list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}")
+list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}")
+list(REMOVE_DUPLICATES _inc_env)
+
+# set paths where to look for
+set(PATH_TO_LOOK_FOR "${_inc_env}")
+
+# Try to find the fftw header in the given paths
+# -------------------------------------------------
+# call cmake macro to find the header path
+if(FFTW_INCDIR)
+    set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND")
+    find_path(FFTW_fftw3.h_DIRS
+      NAMES fftw3.h
+      HINTS ${FFTW_INCDIR})
+else()
+    if(FFTW_DIR)
         set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND")
         find_path(FFTW_fftw3.h_DIRS
           NAMES fftw3.h
-          HINTS ${FFTW_INCDIR})
+          HINTS ${FFTW_DIR}
+          PATH_SUFFIXES include include/fftw)
     else()
-        if(FFTW_DIR)
-            set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND")
-            find_path(FFTW_fftw3.h_DIRS
-              NAMES fftw3.h
-              HINTS ${FFTW_DIR}
-              PATH_SUFFIXES include)
+        set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND")
+        find_path(FFTW_fftw3.h_DIRS
+                  NAMES fftw3.h
+                  HINTS ${PATH_TO_LOOK_FOR})
+    endif()
+endif()
+mark_as_advanced(FFTW_fftw3.h_DIRS)
+
+# Add path to cmake variable
+# ------------------------------------
+if (FFTW_fftw3.h_DIRS)
+    set(FFTW_INCLUDE_DIRS "${FFTW_fftw3.h_DIRS}")
+else ()
+    set(FFTW_INCLUDE_DIRS "FFTW_INCLUDE_DIRS-NOTFOUND")
+    if(NOT FFTW_FIND_QUIETLY)
+        message(STATUS "Looking for FFTW -- fftw3.h not found")
+    endif()
+endif ()
+
+
+# Looking for lib
+# ---------------
+
+# Add system library paths to search lib
+# --------------------------------------
+unset(_lib_env)
+set(ENV_FFTW_LIBDIR "$ENV{FFTW_LIBDIR}")
+if(ENV_FFTW_LIBDIR)
+    list(APPEND _lib_env "${ENV_FFTW_LIBDIR}")
+elseif(ENV_FFTW_DIR)
+    list(APPEND _lib_env "${ENV_FFTW_DIR}")
+    list(APPEND _lib_env "${ENV_FFTW_DIR}/lib")
+    if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+        list(APPEND _lib_env "${ENV_FFTW_DIR}/lib64")
+        list(APPEND _lib_env "${ENV_FFTW_DIR}/lib/intel64")
+    else()
+        list(APPEND _lib_env "${ENV_FFTW_DIR}/lib32")
+        list(APPEND _lib_env "${ENV_FFTW_DIR}/lib/ia32")
+    endif()
+else()
+    if (ENV_MKLROOT)
+        if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+            list(APPEND _lib_env "${ENV_MKLROOT}/lib64")
+            list(APPEND _lib_env "${ENV_MKLROOT}/lib/intel64")
         else()
-            set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND")
-            find_path(FFTW_fftw3.h_DIRS
-                      NAMES fftw3.h
-                      HINTS ${PATH_TO_LOOK_FOR})
+            list(APPEND _lib_env "${ENV_MKLROOT}/lib32")
+            list(APPEND _lib_env "${ENV_MKLROOT}/lib/ia32")
         endif()
     endif()
-    mark_as_advanced(FFTW_fftw3.h_DIRS)
-
-    # Add path to cmake variable
-    # ------------------------------------
-    if (FFTW_fftw3.h_DIRS)
-        set(FFTW_INCLUDE_DIRS "${FFTW_fftw3.h_DIRS}")
-    else ()
-        set(FFTW_INCLUDE_DIRS "FFTW_INCLUDE_DIRS-NOTFOUND")
-        if(NOT FFTW_FIND_QUIETLY)
-            message(STATUS "Looking for FFTW -- fftw3.h not found")
-        endif()
-    endif ()
-
-
-    # Looking for lib
-    # ---------------
-
-    # Add system library paths to search lib
-    # --------------------------------------
-    unset(_lib_env)
     if(WIN32)
-        string(REPLACE ":" ";" _lib_env "$ENV{LIB}")
+        string(REPLACE ":" ";" _lib_env2 "$ENV{LIB}")
     else()
         if(APPLE)
-            string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}")
+            string(REPLACE ":" ";" _lib_env2 "$ENV{DYLD_LIBRARY_PATH}")
         else()
-            string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}")
+            string(REPLACE ":" ";" _lib_env2 "$ENV{LD_LIBRARY_PATH}")
         endif()
+        list(APPEND _lib_env "${_lib_env2}")
         list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}")
         list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
     endif()
-    list(REMOVE_DUPLICATES _lib_env)
-
-    # set paths where to look for
-    set(PATH_TO_LOOK_FOR "${_lib_env}")
-
-    if(FFTW_LOOK_FOR_FFTW_SIMPLE)
-        set(FFTW_PREC "f")
-        set(FFTW_PREC_TESTFUNC "s")
-    elseif(FFTW_LOOK_FOR_FFTW_DOUBLE)
-        set(FFTW_PREC "")
-        set(FFTW_PREC_TESTFUNC "d")
-    elseif(FFTW_LOOK_FOR_FFTW_LONG)
-        set(FFTW_PREC "l")
-        set(FFTW_PREC_TESTFUNC "l")
-    elseif(FFTW_LOOK_FOR_FFTW_QUAD)
-        set(FFTW_PREC "q")
-        set(FFTW_PREC_TESTFUNC "q")
-    endif()
+endif()
+list(REMOVE_DUPLICATES _lib_env)
+
+# set paths where to look for
+set(PATH_TO_LOOK_FOR "${_lib_env}")
+
+if(FFTW_LOOK_FOR_FFTW_SIMPLE)
+    set(FFTW_PREC "f")
+    set(FFTW_PREC_TESTFUNC "s")
+elseif(FFTW_LOOK_FOR_FFTW_DOUBLE)
+    set(FFTW_PREC "")
+    set(FFTW_PREC_TESTFUNC "d")
+elseif(FFTW_LOOK_FOR_FFTW_LONG)
+    set(FFTW_PREC "l")
+    set(FFTW_PREC_TESTFUNC "l")
+elseif(FFTW_LOOK_FOR_FFTW_QUAD)
+    set(FFTW_PREC "q")
+    set(FFTW_PREC_TESTFUNC "q")
+endif()
 
-    if (FFTW_LOOK_FOR_MKL)
+if (FFTW_LOOK_FOR_MKL)
 
-        set(FFTW_libs_to_find "mkl_intel_lp64;mkl_sequential;mkl_core")
+    set(FFTW_libs_to_find "mkl_intel_lp64;mkl_sequential;mkl_core")
 
-        # Try to find the MKL fftw lib in the given paths
-        # -----------------------------------------------
+    # Try to find the MKL fftw lib in the given paths
+    # -----------------------------------------------
 
-        # call cmake macro to find the lib path
-        if(FFTW_LIBDIR)
+    # call cmake macro to find the lib path
+    if(FFTW_LIBDIR)
+        foreach(fftw_lib ${FFTW_libs_to_find})
+            set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
+            find_library(FFTW_${fftw_lib}_LIBRARY
+                NAMES ${fftw_lib}
+                HINTS ${FFTW_LIBDIR})
+        endforeach()
+    else()
+        if(FFTW_DIR)
             foreach(fftw_lib ${FFTW_libs_to_find})
                 set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
                 find_library(FFTW_${fftw_lib}_LIBRARY
                     NAMES ${fftw_lib}
-                    HINTS ${FFTW_LIBDIR})
+                    HINTS ${FFTW_DIR}
+                    PATH_SUFFIXES lib lib32 lib64)
             endforeach()
         else()
-            if(FFTW_DIR)
-                foreach(fftw_lib ${FFTW_libs_to_find})
-                    set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
-                    find_library(FFTW_${fftw_lib}_LIBRARY
-                        NAMES ${fftw_lib}
-                        HINTS ${FFTW_DIR}
-                        PATH_SUFFIXES lib lib32 lib64)
-                endforeach()
-            else()
-                foreach(fftw_lib ${FFTW_libs_to_find})
-                    set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
-                    find_library(FFTW_${fftw_lib}_LIBRARY
-                             NAMES ${fftw_lib}
-                             HINTS ${PATH_TO_LOOK_FOR})
-                endforeach()
-            endif()
+            foreach(fftw_lib ${FFTW_libs_to_find})
+                set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
+                find_library(FFTW_${fftw_lib}_LIBRARY
+                         NAMES ${fftw_lib}
+                         HINTS ${PATH_TO_LOOK_FOR})
+            endforeach()
         endif()
+    endif()
 
-    else(FFTW_LOOK_FOR_MKL)
+else(FFTW_LOOK_FOR_MKL)
 
-        if (FFTW_LOOK_FOR_THREADS)
-            set(FFTW_libs_to_find "fftw3${FFTW_PREC}_threads;fftw3${FFTW_PREC}")
-        elseif (FFTW_LOOK_FOR_OMP)
-            set(FFTW_libs_to_find "fftw3${FFTW_PREC}_omp;fftw3${FFTW_PREC}")
-        else()
-            set(FFTW_libs_to_find "fftw3${FFTW_PREC}")
-        endif()
+    if (FFTW_LOOK_FOR_THREADS)
+        set(FFTW_libs_to_find "fftw3${FFTW_PREC}_threads;fftw3${FFTW_PREC}")
+    elseif (FFTW_LOOK_FOR_OMP)
+        set(FFTW_libs_to_find "fftw3${FFTW_PREC}_omp;fftw3${FFTW_PREC}")
+    else()
+        set(FFTW_libs_to_find "fftw3${FFTW_PREC}")
+    endif()
 
-        # Try to find the fftw lib in the given paths
-        # ----------------------------------------------
+    # Try to find the fftw lib in the given paths
+    # ----------------------------------------------
 
-        # call cmake macro to find the lib path
-        if(FFTW_LIBDIR)
+    # call cmake macro to find the lib path
+    if(FFTW_LIBDIR)
+        foreach(fftw_lib ${FFTW_libs_to_find})
+            set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
+            find_library(FFTW_${fftw_lib}_LIBRARY
+                NAMES ${fftw_lib}
+                HINTS ${FFTW_LIBDIR})
+        endforeach()
+    else()
+        if(FFTW_DIR)
             foreach(fftw_lib ${FFTW_libs_to_find})
                 set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
                 find_library(FFTW_${fftw_lib}_LIBRARY
                     NAMES ${fftw_lib}
-                    HINTS ${FFTW_LIBDIR})
+                    HINTS ${FFTW_DIR}
+                    PATH_SUFFIXES lib lib32 lib64)
             endforeach()
         else()
-            if(FFTW_DIR)
-                foreach(fftw_lib ${FFTW_libs_to_find})
-                    set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
-                    find_library(FFTW_${fftw_lib}_LIBRARY
-                        NAMES ${fftw_lib}
-                        HINTS ${FFTW_DIR}
-                        PATH_SUFFIXES lib lib32 lib64)
-                endforeach()
-            else()
-                foreach(fftw_lib ${FFTW_libs_to_find})
-                    set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
-                    find_library(FFTW_${fftw_lib}_LIBRARY
-                             NAMES ${fftw_lib}
-                             HINTS ${PATH_TO_LOOK_FOR})
-                endforeach()
-            endif()
+            foreach(fftw_lib ${FFTW_libs_to_find})
+                set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND")
+                find_library(FFTW_${fftw_lib}_LIBRARY
+                         NAMES ${fftw_lib}
+                         HINTS ${PATH_TO_LOOK_FOR})
+            endforeach()
         endif()
+    endif()
 
-    endif(FFTW_LOOK_FOR_MKL)
-
-    # If found, add path to cmake variable
-    # ------------------------------------
-    set(FFTW_LIBRARIES "")
-    set(FFTW_LIBRARY_DIRS "")
-    foreach(fftw_lib ${FFTW_libs_to_find})
-
-        if (FFTW_${fftw_lib}_LIBRARY)
-            get_filename_component(${fftw_lib}_lib_path "${FFTW_${fftw_lib}_LIBRARY}" PATH)
-            # set cmake variables
-            list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}")
-            list(APPEND FFTW_LIBRARY_DIRS "${${fftw_lib}_lib_path}")
-        else ()
-            list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}")
-            if (NOT FFTW_FIND_QUIETLY)
-                message(STATUS "Looking for FFTW -- lib ${fftw_lib} not found")
-            endif()
-        endif ()
-        mark_as_advanced(FFTW_${fftw_lib}_LIBRARY)
+endif(FFTW_LOOK_FOR_MKL)
 
-    endforeach()
+# If found, add path to cmake variable
+# ------------------------------------
+set(FFTW_LIBRARIES "")
+set(FFTW_LIBRARY_DIRS "")
+foreach(fftw_lib ${FFTW_libs_to_find})
 
-    list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS)
-    list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS)
+    if (FFTW_${fftw_lib}_LIBRARY)
+        get_filename_component(${fftw_lib}_lib_path "${FFTW_${fftw_lib}_LIBRARY}" PATH)
+        # set cmake variables
+        list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}")
+        list(APPEND FFTW_LIBRARY_DIRS "${${fftw_lib}_lib_path}")
+    else ()
+        list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}")
+        if (NOT FFTW_FIND_QUIETLY)
+            message(STATUS "Looking for FFTW -- lib ${fftw_lib} not found")
+        endif()
+    endif ()
+    mark_as_advanced(FFTW_${fftw_lib}_LIBRARY)
 
-    # check a function to validate the find
-    if(FFTW_LIBRARIES)
+endforeach()
 
-        set(REQUIRED_FLAGS)
-        set(REQUIRED_LDFLAGS)
-        set(REQUIRED_INCDIRS)
-        set(REQUIRED_LIBDIRS)
-        set(REQUIRED_LIBS)
+list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS)
+list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS)
 
-        # FFTW
-        if (FFTW_INCLUDE_DIRS)
-            set(REQUIRED_INCDIRS "${FFTW_INCLUDE_DIRS}")
-        endif()
-        if (FFTW_LIBRARY_DIRS)
-            set(REQUIRED_LIBDIRS "${FFTW_LIBRARY_DIRS}")
-        endif()
-        set(REQUIRED_LIBS "${FFTW_LIBRARIES}")
-        # THREADS
-        if (FFTW_LOOK_FOR_THREADS)
-            list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT}")
-        endif()
-        # OMP
-        if(FFTW_LOOK_FOR_OMP)
-            if (CMAKE_C_COMPILER MATCHES ".+gcc.*")
-                set(REQUIRED_FLAGS "-fopenmp")
-            endif()
+# check a function to validate the find
+if(FFTW_LIBRARIES)
+
+    set(REQUIRED_FLAGS)
+    set(REQUIRED_LDFLAGS)
+    set(REQUIRED_INCDIRS)
+    set(REQUIRED_LIBDIRS)
+    set(REQUIRED_LIBS)
+
+    # FFTW
+    if (FFTW_INCLUDE_DIRS)
+        set(REQUIRED_INCDIRS "${FFTW_INCLUDE_DIRS}")
+    endif()
+    if (FFTW_LIBRARY_DIRS)
+        set(REQUIRED_LIBDIRS "${FFTW_LIBRARY_DIRS}")
+    endif()
+    set(REQUIRED_LIBS "${FFTW_LIBRARIES}")
+    # THREADS
+    if (FFTW_LOOK_FOR_THREADS)
+        list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT}")
+    endif()
+    # OMP
+    if(FFTW_LOOK_FOR_OMP)
+        if (CMAKE_C_COMPILER MATCHES ".+gcc.*")
+            set(REQUIRED_FLAGS "-fopenmp")
         endif()
-        # MKL
-        if(FFTW_LOOK_FOR_MKL)
-            list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT};-lm")
-            if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
-                list(APPEND REQUIRED_LDFLAGS "-Wl,--no-as-needed")
-            endif()
+    endif()
+    # MKL
+    if(FFTW_LOOK_FOR_MKL)
+        list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT};-lm")
+        if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
+            list(APPEND REQUIRED_LDFLAGS "-Wl,--no-as-needed")
         endif()
+    endif()
 
-        # set required libraries for link
-        set(CMAKE_REQUIRED_INCLUDES "${REQUIRED_INCDIRS}")
-        set(CMAKE_REQUIRED_LIBRARIES)
-        list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LDFLAGS}")
-        foreach(lib_dir ${REQUIRED_LIBDIRS})
-            list(APPEND CMAKE_REQUIRED_LIBRARIES "-L${lib_dir}")
-        endforeach()
-        list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LIBS}")
-        list(APPEND CMAKE_REQUIRED_FLAGS "${REQUIRED_FLAGS}")
-        string(REGEX REPLACE "^ -" "-" CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
-
-        # test link
-        unset(FFTW_WORKS CACHE)
-        include(CheckFunctionExists)
-        check_function_exists(${FFTW_PREC_TESTFUNC}fftw_execute_ FFTW_WORKS)
-        mark_as_advanced(FFTW_WORKS)
-
-        if(FFTW_WORKS)
-            # save link with dependencies
-            set(FFTW_LIBRARIES_DEP "${REQUIRED_LIBS}")
-            set(FFTW_LIBRARY_DIRS_DEP "${REQUIRED_LIBDIRS}")
-            set(FFTW_INCLUDE_DIRS_DEP "${REQUIRED_INCDIRS}")
-            set(FFTW_C_FLAGS "${REQUIRED_FLAGS}")
-            set(FFTW_LINKER_FLAGS "${REQUIRED_LDFLAGS}")
-            list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS_DEP)
-            list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS_DEP)
-            list(REMOVE_DUPLICATES FFTW_LINKER_FLAGS)
-        else()
-            if(NOT FFTW_FIND_QUIETLY)
-                message(STATUS "Looking for FFTW : test of ${FFTW_PREC_TESTFUNC}fftw_execute_ with fftw library fails")
-                message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}")
-                message(STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}")
-                message(STATUS "CMAKE_REQUIRED_FLAGS: ${CMAKE_REQUIRED_FLAGS}")
-                message(STATUS "Check in CMakeFiles/CMakeError.log to figure out why it fails")
-            endif()
-        else()
-            set(FFTW_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    # set required libraries for link
+    set(CMAKE_REQUIRED_INCLUDES "${REQUIRED_INCDIRS}")
+    set(CMAKE_REQUIRED_LIBRARIES)
+    list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LDFLAGS}")
+    foreach(lib_dir ${REQUIRED_LIBDIRS})
+        list(APPEND CMAKE_REQUIRED_LIBRARIES "-L${lib_dir}")
+    endforeach()
+    list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LIBS}")
+    list(APPEND CMAKE_REQUIRED_FLAGS "${REQUIRED_FLAGS}")
+    string(REGEX REPLACE "^ -" "-" CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
+
+    # test link
+    unset(FFTW_WORKS CACHE)
+    include(CheckFunctionExists)
+    check_function_exists(${FFTW_PREC_TESTFUNC}fftw_execute_ FFTW_WORKS)
+    mark_as_advanced(FFTW_WORKS)
+
+    if(FFTW_WORKS)
+        # save link with dependencies
+        set(FFTW_LIBRARIES_DEP "${REQUIRED_LIBS}")
+        set(FFTW_LIBRARY_DIRS_DEP "${REQUIRED_LIBDIRS}")
+        set(FFTW_INCLUDE_DIRS_DEP "${REQUIRED_INCDIRS}")
+        set(FFTW_C_FLAGS "${REQUIRED_FLAGS}")
+        set(FFTW_LINKER_FLAGS "${REQUIRED_LDFLAGS}")
+        list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS_DEP)
+        list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS_DEP)
+        list(REMOVE_DUPLICATES FFTW_LINKER_FLAGS)
+    else()
+        if(NOT FFTW_FIND_QUIETLY)
+            message(STATUS "Looking for FFTW : test of ${FFTW_PREC_TESTFUNC}fftw_execute_ with fftw library fails")
+            message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}")
+            message(STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}")
+            message(STATUS "CMAKE_REQUIRED_FLAGS: ${CMAKE_REQUIRED_FLAGS}")
+            message(STATUS "Check in CMakeFiles/CMakeError.log to figure out why it fails")
         endif()
-        set(CMAKE_REQUIRED_INCLUDES)
-        set(CMAKE_REQUIRED_FLAGS)
-        set(CMAKE_REQUIRED_LIBRARIES)
-    endif(FFTW_LIBRARIES)
-
-endif( NOT FFTW_FOUND )
+    else()
+        set(FFTW_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    endif()
+    set(CMAKE_REQUIRED_INCLUDES)
+    set(CMAKE_REQUIRED_FLAGS)
+    set(CMAKE_REQUIRED_LIBRARIES)
+endif(FFTW_LIBRARIES)
 
-if (FFTW_LIBRARIES AND NOT FFTW_DIR)
+if (FFTW_LIBRARIES)
     list(GET FFTW_LIBRARIES 0 first_lib)
     get_filename_component(first_lib_path "${first_lib}" PATH)
     if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)")
         string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}")
-        set(FFTW_DIR "${not_cached_dir}" CACHE PATH "Installation directory of FFTW library" FORCE)
+        set(FFTW_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of FFTW library" FORCE)
+    else()
+        set(FFTW_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of FFTW library" FORCE)
     endif()
 endif()
 
diff --git a/CMakeModules/morse/find/FindLAPACK.cmake b/CMakeModules/morse/find/FindLAPACK.cmake
index 66070b08473d9d4af4ef9050a5ce0c3d84b259d5..2ec1c87f1b6f405350c38e56374c147afe013037 100644
--- a/CMakeModules/morse/find/FindLAPACK.cmake
+++ b/CMakeModules/morse/find/FindLAPACK.cmake
@@ -35,6 +35,13 @@
 #  LAPACK_DIR            - Where to find the base directory of lapack
 #  LAPACK_INCDIR         - Where to find the header files
 #  LAPACK_LIBDIR         - Where to find the library files
+# The module can also look after the following environment variables if paths
+# are not given as cmake variable
+#  LAPACK_DIR            - Where to find the base directory of lapack
+#  LAPACK_INCDIR         - Where to find the header files
+#  LAPACK_LIBDIR         - Where to find the library files
+# For MKL case and if no paths are given as hints, we will try to use the MKLROOT
+# environment variable
 # Note that if BLAS_DIR is set, it will also look for lapack in it
 ### List of vendors (BLA_VENDOR) valid in this module
 ##  Intel(mkl), ACML,Apple, NAS, Generic
@@ -154,20 +161,37 @@ macro(Check_Lapack_Libraries LIBRARIES _prefix _name _flags _list _blas _threads
 set(_libraries_work TRUE)
 set(${LIBRARIES})
 set(_combined_name)
+set(ENV_MKLROOT "$ENV{MKLROOT}")
+set(ENV_BLAS_DIR "$ENV{BLAS_DIR}")
+set(ENV_BLAS_LIBDIR "$ENV{BLAS_LIBDIR}")
+set(ENV_LAPACK_DIR "$ENV{LAPACK_DIR}")
+set(ENV_LAPACK_LIBDIR "$ENV{LAPACK_LIBDIR}")
 if (NOT _libdir)
   if (BLAS_DIR)
-    list(APPEND _libdir "${BLAS_DIR}")
-    list(APPEND _libdir "${BLAS_DIR}/lib")
-    if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
-        list(APPEND _libdir "${BLAS_DIR}/lib64")
-        list(APPEND _libdir "${BLAS_DIR}/lib/intel64")
-    else()
-        list(APPEND _libdir "${BLAS_DIR}/lib32")
-        list(APPEND _libdir "${BLAS_DIR}/lib/ia32")
-    endif()
+      list(APPEND _libdir "${BLAS_DIR}")
+      list(APPEND _libdir "${BLAS_DIR}/lib")
+      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+          list(APPEND _libdir "${BLAS_DIR}/lib64")
+          list(APPEND _libdir "${BLAS_DIR}/lib/intel64")
+      else()
+          list(APPEND _libdir "${BLAS_DIR}/lib32")
+          list(APPEND _libdir "${BLAS_DIR}/lib/ia32")
+      endif()
   elseif (BLAS_LIBDIR)
-    list(APPEND _libdir "${BLAS_LIBDIR}")
-  endif ()
+      list(APPEND _libdir "${BLAS_LIBDIR}")
+  elseif(ENV_BLAS_DIR)
+      list(APPEND _libdir "${ENV_BLAS_DIR}")
+      list(APPEND _libdir "${ENV_BLAS_DIR}/lib")
+      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+          list(APPEND _libdir "${ENV_BLAS_DIR}/lib64")
+          list(APPEND _libdir "${ENV_BLAS_DIR}/lib/intel64")
+      else()
+          list(APPEND _libdir "${ENV_BLAS_DIR}/lib32")
+          list(APPEND _libdir "${ENV_BLAS_DIR}/lib/ia32")
+      endif()
+  elseif(ENV_BLAS_LIBDIR)
+      list(APPEND _libdir "${ENV_BLAS_LIBDIR}")
+  endif()
   if (LAPACK_DIR)
     list(APPEND _libdir "${LAPACK_DIR}")
     list(APPEND _libdir "${LAPACK_DIR}/lib")
@@ -180,7 +204,28 @@ if (NOT _libdir)
     endif()
   elseif (LAPACK_LIBDIR)
     list(APPEND _libdir "${LAPACK_LIBDIR}")
+  elseif(ENV_LAPACK_DIR)
+      list(APPEND _libdir "${ENV_LAPACK_DIR}")
+      list(APPEND _libdir "${ENV_LAPACK_DIR}/lib")
+      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+          list(APPEND _libdir "${ENV_LAPACK_DIR}/lib64")
+          list(APPEND _libdir "${ENV_LAPACK_DIR}/lib/intel64")
+      else()
+          list(APPEND _libdir "${ENV_LAPACK_DIR}/lib32")
+          list(APPEND _libdir "${ENV_LAPACK_DIR}/lib/ia32")
+      endif()
+  elseif(ENV_LAPACK_LIBDIR)
+      list(APPEND _libdir "${ENV_LAPACK_LIBDIR}")
   else()
+    if (ENV_MKLROOT)
+        if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+            list(APPEND _libdir "${ENV_MKLROOT}/lib64")
+            list(APPEND _libdir "${ENV_MKLROOT}/lib/intel64")
+        else()
+            list(APPEND _libdir "${ENV_MKLROOT}/lib32")
+            list(APPEND _libdir "${ENV_MKLROOT}/lib/ia32")
+        endif()
+    endif()
     if (WIN32)
       string(REPLACE ":" ";" _libdir2 "$ENV{LIB}")
     elseif (APPLE)
@@ -212,7 +257,7 @@ foreach(_library ${_list})
         set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
       endif (APPLE)
     else (BLA_STATIC)
-			if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+      if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
         # for ubuntu's libblas3gf and liblapack3gf packages
         set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
       endif ()
@@ -287,71 +332,6 @@ if(BLAS_FOUND)
     endif(NOT BLA_VENDOR)
   endif ($ENV{BLA_VENDOR} MATCHES ".+")
 
-if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
- if(NOT LAPACK_LIBRARIES)
-  check_lapack_libraries(
-  LAPACK_LIBRARIES
-  LAPACK
-  cheev
-  ""
-  "goto2"
-  "${BLAS_LIBRARIES}"
-  ""
-  )
- endif(NOT LAPACK_LIBRARIES)
-endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
-
-
-#acml lapack
- if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All")
-   if (BLAS_LIBRARIES MATCHES ".+acml.+")
-     set (LAPACK_LIBRARIES ${BLAS_LIBRARIES})
-   endif ()
- endif ()
-
-# Apple LAPACK library?
-if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
- if(NOT LAPACK_LIBRARIES)
-  check_lapack_libraries(
-  LAPACK_LIBRARIES
-  LAPACK
-  cheev
-  ""
-  "Accelerate"
-  "${BLAS_LIBRARIES}"
-  ""
-  )
- endif(NOT LAPACK_LIBRARIES)
-endif (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
-if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
-  if ( NOT LAPACK_LIBRARIES )
-    check_lapack_libraries(
-    LAPACK_LIBRARIES
-    LAPACK
-    cheev
-    ""
-    "vecLib"
-    "${BLAS_LIBRARIES}"
-    ""
-    )
-  endif ( NOT LAPACK_LIBRARIES )
-endif (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
-# Generic LAPACK library?
-if (BLA_VENDOR STREQUAL "Generic" OR
-    BLA_VENDOR STREQUAL "ATLAS" OR
-    BLA_VENDOR STREQUAL "All")
-  if ( NOT LAPACK_LIBRARIES )
-    check_lapack_libraries(
-    LAPACK_LIBRARIES
-    LAPACK
-    cheev
-    ""
-    "lapack"
-    "${BLAS_LIBRARIES}"
-    ""
-    )
-  endif ( NOT LAPACK_LIBRARIES )
-endif ()
 #intel lapack
 if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
   if (NOT WIN32)
@@ -431,6 +411,73 @@ if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
     endforeach ()
   endif ()
 endif()
+
+#goto lapack
+if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
+ if(NOT LAPACK_LIBRARIES)
+  check_lapack_libraries(
+  LAPACK_LIBRARIES
+  LAPACK
+  cheev
+  ""
+  "goto2"
+  "${BLAS_LIBRARIES}"
+  ""
+  )
+ endif(NOT LAPACK_LIBRARIES)
+endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
+
+
+#acml lapack
+ if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All")
+   if (BLAS_LIBRARIES MATCHES ".+acml.+")
+     set (LAPACK_LIBRARIES ${BLAS_LIBRARIES})
+   endif ()
+ endif ()
+
+# Apple LAPACK library?
+if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
+ if(NOT LAPACK_LIBRARIES)
+  check_lapack_libraries(
+  LAPACK_LIBRARIES
+  LAPACK
+  cheev
+  ""
+  "Accelerate"
+  "${BLAS_LIBRARIES}"
+  ""
+  )
+ endif(NOT LAPACK_LIBRARIES)
+endif (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
+if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
+  if ( NOT LAPACK_LIBRARIES )
+    check_lapack_libraries(
+    LAPACK_LIBRARIES
+    LAPACK
+    cheev
+    ""
+    "vecLib"
+    "${BLAS_LIBRARIES}"
+    ""
+    )
+  endif ( NOT LAPACK_LIBRARIES )
+endif (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
+# Generic LAPACK library?
+if (BLA_VENDOR STREQUAL "Generic" OR
+    BLA_VENDOR STREQUAL "ATLAS" OR
+    BLA_VENDOR STREQUAL "All")
+  if ( NOT LAPACK_LIBRARIES )
+    check_lapack_libraries(
+    LAPACK_LIBRARIES
+    LAPACK
+    cheev
+    ""
+    "lapack"
+    "${BLAS_LIBRARIES}"
+    ""
+    )
+  endif ( NOT LAPACK_LIBRARIES )
+endif ()
 else(BLAS_FOUND)
   message(STATUS "LAPACK requires BLAS")
 endif(BLAS_FOUND)
@@ -506,11 +553,13 @@ endif(BLA_F95)
 
 set(CMAKE_FIND_LIBRARY_SUFFIXES ${_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
 
-if (LAPACK_FOUND AND NOT LAPACK_DIR)
+if (LAPACK_FOUND)
     list(GET LAPACK_LIBRARIES 0 first_lib)
     get_filename_component(first_lib_path "${first_lib}" PATH)
     if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)")
         string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}")
-        set(LAPACK_DIR "${not_cached_dir}" CACHE PATH "Installation directory of LAPACK library" FORCE)
+        set(LAPACK_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of LAPACK library" FORCE)
+    else()
+        set(LAPACK_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of LAPACK library" FORCE)
     endif()
 endif()
diff --git a/CMakeModules/morse/find/FindQUARK.cmake b/CMakeModules/morse/find/FindQUARK.cmake
index 68e7923f603d1f15ad634dea5e5186e9a24487ab..507f00f71b880fe3ffa16521b397cc2c78e5baa3 100644
--- a/CMakeModules/morse/find/FindQUARK.cmake
+++ b/CMakeModules/morse/find/FindQUARK.cmake
@@ -224,7 +224,7 @@ if(QUARK_LIBRARIES)
         set(REQUIRED_INCDIRS "${QUARK_INCLUDE_DIRS}")
     endif()
     if (QUARK_LIBRARY_DIRS)
-        set(CMAKE_REQUIRED_FLAGS "${QUARK_LIBRARY_DIRS}")
+        set(REQUIRED_LIBDIRS "${QUARK_LIBRARY_DIRS}")
     endif()
     set(REQUIRED_LIBS "${QUARK_LIBRARIES}")
     # HWLOC