diff --git a/modules/find/FindBLAS.cmake b/modules/find/FindBLAS.cmake
index 612773df66b06cb6a66ca017cf6bcec4163dc0ff..dc395f47c21899de411c9a5a1f09b20a5f87622f 100644
--- a/modules/find/FindBLAS.cmake
+++ b/modules/find/FindBLAS.cmake
@@ -327,1075 +327,1159 @@ else ()
   endif()
 endif ()
 
-#BLAS in intel mkl 10 library? (em64t 64bit)
-if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES OR BLA_VENDOR MATCHES "Intel*")
-    # Looking for include
-    # -------------------
+set(ENV_BLAS_DIR "$ENV{BLAS_DIR}")
+set(ENV_BLAS_INCDIR "$ENV{BLAS_INCDIR}")
+set(ENV_BLAS_LIBDIR "$ENV{BLAS_LIBDIR}")
+set(BLAS_GIVEN_BY_USER "FALSE")
+if ( BLAS_DIR OR ( BLAS_INCDIR AND BLAS_LIBDIR) OR ENV_BLAS_DIR OR (ENV_BLAS_INCDIR AND ENV_BLAS_LIBDIR) )
+  set(BLAS_GIVEN_BY_USER "TRUE")
+endif()
 
-    # Add system include paths to search include
-    # ------------------------------------------
-    unset(_inc_env)
-    set(ENV_MKLROOT "$ENV{MKLROOT}")
-    set(ENV_BLAS_DIR "$ENV{BLAS_DIR}")
-    set(ENV_BLAS_INCDIR "$ENV{BLAS_INCDIR}")
-    if(ENV_BLAS_INCDIR)
-      list(APPEND _inc_env "${ENV_BLAS_INCDIR}")
-    elseif(ENV_BLAS_DIR)
-      list(APPEND _inc_env "${ENV_BLAS_DIR}")
-      list(APPEND _inc_env "${ENV_BLAS_DIR}/include")
-    else()
-      if (ENV_MKLROOT)
-        list(APPEND _inc_env "${ENV_MKLROOT}/include")
+macro(FIND_PKGCONFIG_LIBRARIES_ABSOLUTE_PATH _prefix)
+  if(WIN32)
+    string(REPLACE ":" ";" _lib_env "$ENV{LIB}")
+  elseif(APPLE)
+    string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}")
+  else()
+    string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}")
+  endif()
+  list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}")
+  list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
+  set(${_prefix}_LIBRARIES_COPY "${${_prefix}_LIBRARIES}")
+  set(${_prefix}_LIBRARIES "")
+  foreach(_library ${${_prefix}_LIBRARIES_COPY})
+      get_filename_component(_library "${_library}" NAME_WE)
+      find_library(_library_path NAMES ${_library}
+          HINTS ${${_prefix}_LIBDIR} ${${_prefix}_LIBRARY_DIRS} ${_lib_env})
+      if (_library_path)
+          list(APPEND ${_prefix}_LIBRARIES ${_library_path})
+      else()
+          message(FATAL_ERROR "Dependency of ${_prefix} '${_library}' NOT FOUND")
       endif()
-      # system variables
-      if(WIN32)
-        string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}")
-        list(APPEND _inc_env "${_path_env}")
+      unset(_library_path CACHE)
+  endforeach()
+  set(${_prefix}_STATIC_LIBRARIES_COPY "${${_prefix}_STATIC_LIBRARIES}")
+  set(${_prefix}_STATIC_LIBRARIES "")
+  foreach(_library ${${_prefix}_STATIC_LIBRARIES_COPY})
+      get_filename_component(_library "${_library}" NAME_WE)
+      find_library(_library_path NAMES ${_library}
+          HINTS ${${_prefix}_STATIC_LIBDIR} ${${_prefix}_STATIC_LIBRARY_DIRS} ${_lib_env})
+      if (_library_path)
+          list(APPEND ${_prefix}_STATIC_LIBRARIES ${_library_path})
       else()
-        string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}")
-        list(APPEND _inc_env "${_path_env}")
-        string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}")
-        list(APPEND _inc_env "${_path_env}")
-        string(REPLACE ":" ";" _path_env "$ENV{CPATH}")
-        list(APPEND _inc_env "${_path_env}")
-        string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}")
-        list(APPEND _inc_env "${_path_env}")
+          message(FATAL_ERROR "Dependency of ${_prefix} '${_library}' NOT FOUND")
       endif()
-    endif()
-    list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}")
-    list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}")
-    list(REMOVE_DUPLICATES _inc_env)
+      unset(_library_path CACHE)
+  endforeach()
+endmacro()
 
-    # set paths where to look for
-    set(PATH_TO_LOOK_FOR "${_inc_env}")
+# Optionally use pkg-config to detect include/library dirs (if pkg-config is available)
+# -------------------------------------------------------------------------------------
+include(FindPkgConfig)
+find_package(PkgConfig QUIET)
+if( PKG_CONFIG_EXECUTABLE AND NOT BLAS_GIVEN_BY_USER AND BLA_VENDOR STREQUAL "All")
 
-    # Try to find the fftw header in the given paths
-    # -------------------------------------------------
-    # call cmake macro to find the header path
-    if(BLAS_INCDIR)
-      set(BLAS_mkl.h_DIRS "BLAS_mkl.h_DIRS-NOTFOUND")
-      find_path(BLAS_mkl.h_DIRS
-        NAMES mkl.h
-        HINTS ${BLAS_INCDIR})
+  pkg_search_module(BLAS blas)
+  find_pkgconfig_libraries_absolute_path(BLAS)
+  
+  if (NOT BLAS_FIND_QUIETLY)
+    if (BLAS_FOUND AND BLAS_LIBRARIES)
+      message(STATUS "Looking for BLAS - found using PkgConfig")
     else()
-      if(BLAS_DIR)
-        set(BLAS_mkl.h_DIRS "BLAS_mkl.h_DIRS-NOTFOUND")
-        find_path(BLAS_mkl.h_DIRS
-          NAMES mkl.h
-          HINTS ${BLAS_DIR}
-          PATH_SUFFIXES "include")
-      else()
-        set(BLAS_mkl.h_DIRS "BLAS_mkl.h_DIRS-NOTFOUND")
-        find_path(BLAS_mkl.h_DIRS
-          NAMES mkl.h
-          HINTS ${PATH_TO_LOOK_FOR})
-      endif()
+      message(STATUS "${Magenta}Looking for BLAS - not found using PkgConfig."
+        "\n   Perhaps you should add the directory containing blas.pc to"
+        "\n   the PKG_CONFIG_PATH environment variable.${ColourReset}")
     endif()
-    mark_as_advanced(BLAS_mkl.h_DIRS)
+  endif()
 
-    # If found, add path to cmake variable
-    # ------------------------------------
-    if (BLAS_mkl.h_DIRS)
-      set(BLAS_INCLUDE_DIRS "${BLAS_mkl.h_DIRS}")
-    else ()
-      set(BLAS_INCLUDE_DIRS "BLAS_INCLUDE_DIRS-NOTFOUND")
-      if(NOT BLAS_FIND_QUIETLY)
-        message(STATUS "Looking for BLAS -- mkl.h not found")
-      endif()
-    endif()
+  if (BLA_STATIC)
+    set(BLAS_LINKER_FLAGS "${BLAS_STATIC_LDFLAGS}")
+    set(BLAS_COMPILER_FLAGS "${BLAS_STATIC_CFLAGS}")
+    set(BLAS_LIBRARIES "${BLAS_STATIC_LIBRARIES}")
+  else()
+    set(BLAS_LINKER_FLAGS "${BLAS_LDFLAGS}")
+    set(BLAS_COMPILER_FLAGS "${BLAS_CFLAGS}")
+  endif()
+  
+  if (BLAS_FOUND AND BLAS_LIBRARIES)
+    set(BLAS_FOUND_WITH_PKGCONFIG "TRUE")
+  else()
+    set(BLAS_FOUND_WITH_PKGCONFIG "FALSE")
+  endif()
 
-    if (WIN32)
-      string(REPLACE ":" ";" _libdir "$ENV{LIB}")
-    elseif (APPLE)
-      string(REPLACE ":" ";" _libdir "$ENV{DYLD_LIBRARY_PATH}")
-    else ()
-      string(REPLACE ":" ";" _libdir "$ENV{LD_LIBRARY_PATH}")
-    endif ()
-    list(APPEND _libdir "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}")
-    list(APPEND _libdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
-    # libiomp5
-    # --------
-    set(OMP_iomp5_LIBRARY "OMP_iomp5_LIBRARY-NOTFOUND")
-    find_library(OMP_iomp5_LIBRARY
-      NAMES iomp5
-      HINTS ${_libdir}
-      )
-    mark_as_advanced(OMP_iomp5_LIBRARY)
-    set(OMP_LIB "")
-    # libgomp
-    # -------
-    set(OMP_gomp_LIBRARY "OMP_gomp_LIBRARY-NOTFOUND")
-    find_library(OMP_gomp_LIBRARY
-      NAMES gomp
-      HINTS ${_libdir}
-      )
-    mark_as_advanced(OMP_gomp_LIBRARY)
-    # choose one or another depending on the compilo
-    if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
-      if (OMP_gomp_LIBRARY)
-        set(OMP_LIB "${OMP_gomp_LIBRARY}")
-      endif()
-    else(CMAKE_C_COMPILER_ID STREQUAL "Intel")
-      if (OMP_iomp5_LIBRARY)
-        set(OMP_LIB "${OMP_iomp5_LIBRARY}")
-      endif()
-    endif()
+endif()
 
-    if (UNIX AND NOT WIN32)
-      # m
-      find_library(M_LIBRARY
-        NAMES m
-        HINTS ${_libdir})
-      mark_as_advanced(M_LIBRARY)
-      if(M_LIBRARY)
-        set(LM "-lm")
+if( (NOT BLAS_FOUND_WITH_PKGCONFIG) OR BLAS_GIVEN_BY_USER )
+  #BLAS in intel mkl 10 library? (em64t 64bit)
+  if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES OR BLA_VENDOR MATCHES "Intel*")
+      # Looking for include
+      # -------------------
+  
+      # Add system include paths to search include
+      # ------------------------------------------
+      unset(_inc_env)
+      set(ENV_MKLROOT "$ENV{MKLROOT}")
+      set(ENV_BLAS_DIR "$ENV{BLAS_DIR}")
+      set(ENV_BLAS_INCDIR "$ENV{BLAS_INCDIR}")
+      if(ENV_BLAS_INCDIR)
+        list(APPEND _inc_env "${ENV_BLAS_INCDIR}")
+      elseif(ENV_BLAS_DIR)
+        list(APPEND _inc_env "${ENV_BLAS_DIR}")
+        list(APPEND _inc_env "${ENV_BLAS_DIR}/include")
       else()
-        set(LM "")
-      endif()
-      # Fortran
-      set(LGFORTRAN "")
-      if (CMAKE_C_COMPILER_ID MATCHES "GNU")
-        find_library(
-          FORTRAN_gfortran_LIBRARY
-          NAMES gfortran
-          HINTS ${_libdir}
-          )
-        mark_as_advanced(FORTRAN_gfortran_LIBRARY)
-        if (FORTRAN_gfortran_LIBRARY)
-          set(LGFORTRAN "${FORTRAN_gfortran_LIBRARY}")
+        if (ENV_MKLROOT)
+          list(APPEND _inc_env "${ENV_MKLROOT}/include")
         endif()
-      elseif (CMAKE_C_COMPILER_ID MATCHES "Intel")
-        find_library(
-          FORTRAN_ifcore_LIBRARY
-          NAMES ifcore
-          HINTS ${_libdir}
-          )
-        mark_as_advanced(FORTRAN_ifcore_LIBRARY)
-        if (FORTRAN_ifcore_LIBRARY)
-          set(LGFORTRAN "{FORTRAN_ifcore_LIBRARY}")
+        # system variables
+        if(WIN32)
+          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}")
+          string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}")
+          list(APPEND _inc_env "${_path_env}")
+          string(REPLACE ":" ";" _path_env "$ENV{CPATH}")
+          list(APPEND _inc_env "${_path_env}")
+          string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}")
+          list(APPEND _inc_env "${_path_env}")
         endif()
       endif()
-      set(BLAS_COMPILER_FLAGS "")
-      if (NOT BLA_VENDOR STREQUAL "Intel10_64lp_seq")
-        if(BLAS_FIND_REQUIRED)
-          find_package(OpenMP REQUIRED)
+      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(BLAS_INCDIR)
+        set(BLAS_mkl.h_DIRS "BLAS_mkl.h_DIRS-NOTFOUND")
+        find_path(BLAS_mkl.h_DIRS
+          NAMES mkl.h
+          HINTS ${BLAS_INCDIR})
+      else()
+        if(BLAS_DIR)
+          set(BLAS_mkl.h_DIRS "BLAS_mkl.h_DIRS-NOTFOUND")
+          find_path(BLAS_mkl.h_DIRS
+            NAMES mkl.h
+            HINTS ${BLAS_DIR}
+            PATH_SUFFIXES "include")
         else()
-          find_package(OpenMP)
+          set(BLAS_mkl.h_DIRS "BLAS_mkl.h_DIRS-NOTFOUND")
+          find_path(BLAS_mkl.h_DIRS
+            NAMES mkl.h
+            HINTS ${PATH_TO_LOOK_FOR})
         endif()
-        if(OPENMP_C_FLAGS)
-          list(APPEND BLAS_COMPILER_FLAGS "${OPENMP_C_FLAGS}")
+      endif()
+      mark_as_advanced(BLAS_mkl.h_DIRS)
+  
+      # If found, add path to cmake variable
+      # ------------------------------------
+      if (BLAS_mkl.h_DIRS)
+        set(BLAS_INCLUDE_DIRS "${BLAS_mkl.h_DIRS}")
+      else ()
+        set(BLAS_INCLUDE_DIRS "BLAS_INCLUDE_DIRS-NOTFOUND")
+        if(NOT BLAS_FIND_QUIETLY)
+          message(STATUS "Looking for BLAS -- mkl.h not found")
         endif()
       endif()
+  
+      if (WIN32)
+        string(REPLACE ":" ";" _libdir "$ENV{LIB}")
+      elseif (APPLE)
+        string(REPLACE ":" ";" _libdir "$ENV{DYLD_LIBRARY_PATH}")
+      else ()
+        string(REPLACE ":" ";" _libdir "$ENV{LD_LIBRARY_PATH}")
+      endif ()
+      list(APPEND _libdir "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}")
+      list(APPEND _libdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
+      # libiomp5
+      # --------
+      set(OMP_iomp5_LIBRARY "OMP_iomp5_LIBRARY-NOTFOUND")
+      find_library(OMP_iomp5_LIBRARY
+        NAMES iomp5
+        HINTS ${_libdir}
+        )
+      mark_as_advanced(OMP_iomp5_LIBRARY)
+      set(OMP_LIB "")
+      # libgomp
+      # -------
+      set(OMP_gomp_LIBRARY "OMP_gomp_LIBRARY-NOTFOUND")
+      find_library(OMP_gomp_LIBRARY
+        NAMES gomp
+        HINTS ${_libdir}
+        )
+      mark_as_advanced(OMP_gomp_LIBRARY)
+      # choose one or another depending on the compilo
       if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
-        if (BLA_VENDOR STREQUAL "Intel10_32")
-          list(APPEND BLAS_COMPILER_FLAGS "-m32")
-        else()
-          list(APPEND BLAS_COMPILER_FLAGS "-m64")
-        endif()
-        if (NOT BLA_VENDOR STREQUAL "Intel10_64lp_seq")
-          list(APPEND OMP_LIB "-ldl")
+        if (OMP_gomp_LIBRARY)
+          set(OMP_LIB "${OMP_gomp_LIBRARY}")
         endif()
-        if (ENV_MKLROOT)
-          list(APPEND BLAS_COMPILER_FLAGS "-I${ENV_MKLROOT}/include")
+      else(CMAKE_C_COMPILER_ID STREQUAL "Intel")
+        if (OMP_iomp5_LIBRARY)
+          set(OMP_LIB "${OMP_iomp5_LIBRARY}")
         endif()
       endif()
-
-      set(additional_flags "")
-      if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
-        set(additional_flags "-Wl,--no-as-needed")
-      endif()
-    endif ()
-
-    if (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX)
-      if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED)
-        find_package(Threads)
-      else()
-        find_package(Threads REQUIRED)
-      endif()
-
-      set(BLAS_SEARCH_LIBS "")
-
-      if(BLA_F95)
-
-        set(BLAS_mkl_SEARCH_SYMBOL SGEMM)
-        set(_LIBRARIES BLAS95_LIBRARIES)
-        if (WIN32)
-          if (BLA_STATIC)
-            set(BLAS_mkl_DLL_SUFFIX "")
+  
+      if (UNIX AND NOT WIN32)
+        # m
+        find_library(M_LIBRARY
+          NAMES m
+          HINTS ${_libdir})
+        mark_as_advanced(M_LIBRARY)
+        if(M_LIBRARY)
+          set(LM "-lm")
+        else()
+          set(LM "")
+        endif()
+        # Fortran
+        set(LGFORTRAN "")
+        if (CMAKE_C_COMPILER_ID MATCHES "GNU")
+          find_library(
+            FORTRAN_gfortran_LIBRARY
+            NAMES gfortran
+            HINTS ${_libdir}
+            )
+          mark_as_advanced(FORTRAN_gfortran_LIBRARY)
+          if (FORTRAN_gfortran_LIBRARY)
+            set(LGFORTRAN "${FORTRAN_gfortran_LIBRARY}")
+          endif()
+        elseif (CMAKE_C_COMPILER_ID MATCHES "Intel")
+          find_library(
+            FORTRAN_ifcore_LIBRARY
+            NAMES ifcore
+            HINTS ${_libdir}
+            )
+          mark_as_advanced(FORTRAN_ifcore_LIBRARY)
+          if (FORTRAN_ifcore_LIBRARY)
+            set(LGFORTRAN "{FORTRAN_ifcore_LIBRARY}")
+          endif()
+        endif()
+        set(BLAS_COMPILER_FLAGS "")
+        if (NOT BLA_VENDOR STREQUAL "Intel10_64lp_seq")
+          if(BLAS_FIND_REQUIRED)
+            find_package(OpenMP REQUIRED)
           else()
-            set(BLAS_mkl_DLL_SUFFIX "_dll")
+            find_package(OpenMP)
           endif()
-
-          # Find the main file (32-bit or 64-bit)
-          set(BLAS_SEARCH_LIBS_WIN_MAIN "")
-          if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
-              "mkl_blas95${BLAS_mkl_DLL_SUFFIX} mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
+          if(OPENMP_C_FLAGS)
+            list(APPEND BLAS_COMPILER_FLAGS "${OPENMP_C_FLAGS}")
           endif()
-          if (BLA_VENDOR STREQUAL "Intel10_64lp*" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
-              "mkl_blas95_lp64${BLAS_mkl_DLL_SUFFIX} mkl_intel_lp64${BLAS_mkl_DLL_SUFFIX}")
-          endif ()
-
-          # Add threading/sequential libs
-          set(BLAS_SEARCH_LIBS_WIN_THREAD "")
-          if (BLA_VENDOR STREQUAL "*_seq" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
+        endif()
+        if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
+          if (BLA_VENDOR STREQUAL "Intel10_32")
+            list(APPEND BLAS_COMPILER_FLAGS "-m32")
+          else()
+            list(APPEND BLAS_COMPILER_FLAGS "-m64")
           endif()
-          if (NOT BLA_VENDOR STREQUAL "*_seq" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
-            # mkl >= 10.3
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+          if (NOT BLA_VENDOR STREQUAL "Intel10_64lp_seq")
+            list(APPEND OMP_LIB "-ldl")
           endif()
-
-          # Cartesian product of the above
-          foreach (MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
-            foreach (THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
-              list(APPEND BLAS_SEARCH_LIBS
-                "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
+          if (ENV_MKLROOT)
+            list(APPEND BLAS_COMPILER_FLAGS "-I${ENV_MKLROOT}/include")
+          endif()
+        endif()
+  
+        set(additional_flags "")
+        if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
+          set(additional_flags "-Wl,--no-as-needed")
+        endif()
+      endif ()
+  
+      if (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX)
+        if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED)
+          find_package(Threads)
+        else()
+          find_package(Threads REQUIRED)
+        endif()
+  
+        set(BLAS_SEARCH_LIBS "")
+  
+        if(BLA_F95)
+  
+          set(BLAS_mkl_SEARCH_SYMBOL SGEMM)
+          set(_LIBRARIES BLAS95_LIBRARIES)
+          if (WIN32)
+            if (BLA_STATIC)
+              set(BLAS_mkl_DLL_SUFFIX "")
+            else()
+              set(BLAS_mkl_DLL_SUFFIX "_dll")
+            endif()
+  
+            # Find the main file (32-bit or 64-bit)
+            set(BLAS_SEARCH_LIBS_WIN_MAIN "")
+            if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
+              list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+                "mkl_blas95${BLAS_mkl_DLL_SUFFIX} mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
+            endif()
+            if (BLA_VENDOR STREQUAL "Intel10_64lp*" OR BLA_VENDOR STREQUAL "All")
+              list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+                "mkl_blas95_lp64${BLAS_mkl_DLL_SUFFIX} mkl_intel_lp64${BLAS_mkl_DLL_SUFFIX}")
+            endif ()
+  
+            # Add threading/sequential libs
+            set(BLAS_SEARCH_LIBS_WIN_THREAD "")
+            if (BLA_VENDOR STREQUAL "*_seq" OR BLA_VENDOR STREQUAL "All")
+              list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+                "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
+            endif()
+            if (NOT BLA_VENDOR STREQUAL "*_seq" OR BLA_VENDOR STREQUAL "All")
+              # old version
+              list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+                "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+              # mkl >= 10.3
+              list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+                "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+            endif()
+  
+            # Cartesian product of the above
+            foreach (MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
+              foreach (THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
+                list(APPEND BLAS_SEARCH_LIBS
+                  "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
+              endforeach()
             endforeach()
-          endforeach()
-        else (WIN32)
-          if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_blas95 mkl_intel mkl_intel_thread mkl_core guide")
-          endif ()
-          if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_blas95 mkl_intel_lp64 mkl_intel_thread mkl_core guide")
-            # mkl >= 10.3
-            if (CMAKE_C_COMPILER_ID STREQUAL "Intel")
+          else (WIN32)
+            if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
               list(APPEND BLAS_SEARCH_LIBS
-                "mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core")
-            endif()
-            if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
+                "mkl_blas95 mkl_intel mkl_intel_thread mkl_core guide")
+            endif ()
+            if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All")
+              # old version
+              list(APPEND BLAS_SEARCH_LIBS
+                "mkl_blas95 mkl_intel_lp64 mkl_intel_thread mkl_core guide")
+              # mkl >= 10.3
+              if (CMAKE_C_COMPILER_ID STREQUAL "Intel")
+                list(APPEND BLAS_SEARCH_LIBS
+                  "mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core")
+              endif()
+              if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
+                list(APPEND BLAS_SEARCH_LIBS
+                  "mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core")
+              endif()
+            endif ()
+            if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All")
               list(APPEND BLAS_SEARCH_LIBS
-                "mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core")
+                "mkl_intel_lp64 mkl_sequential mkl_core")
+              if (BLA_VENDOR STREQUAL "Intel10_64lp_seq")
+                set(OMP_LIB "")
+              endif()
+            endif ()
+          endif (WIN32)
+  
+        else (BLA_F95)
+  
+          set(BLAS_mkl_SEARCH_SYMBOL sgemm)
+          set(_LIBRARIES BLAS_LIBRARIES)
+          if (WIN32)
+            if (BLA_STATIC)
+              set(BLAS_mkl_DLL_SUFFIX "")
+            else()
+              set(BLAS_mkl_DLL_SUFFIX "_dll")
             endif()
-          endif ()
-          if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_intel_lp64 mkl_sequential mkl_core")
-            if (BLA_VENDOR STREQUAL "Intel10_64lp_seq")
-              set(OMP_LIB "")
+  
+            # Find the main file (32-bit or 64-bit)
+            set(BLAS_SEARCH_LIBS_WIN_MAIN "")
+            if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
+              list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+                "mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
             endif()
-          endif ()
-        endif (WIN32)
-
-      else (BLA_F95)
-
-        set(BLAS_mkl_SEARCH_SYMBOL sgemm)
-        set(_LIBRARIES BLAS_LIBRARIES)
-        if (WIN32)
-          if (BLA_STATIC)
-            set(BLAS_mkl_DLL_SUFFIX "")
-          else()
-            set(BLAS_mkl_DLL_SUFFIX "_dll")
-          endif()
-
-          # Find the main file (32-bit or 64-bit)
-          set(BLAS_SEARCH_LIBS_WIN_MAIN "")
-          if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
-              "mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-          if (BLA_VENDOR STREQUAL "Intel10_64lp*" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
-              "mkl_intel_lp64${BLAS_mkl_DLL_SUFFIX}")
-          endif ()
-
-          # Add threading/sequential libs
-          set(BLAS_SEARCH_LIBS_WIN_THREAD "")
-          if (NOT BLA_VENDOR STREQUAL "*_seq" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
-            # mkl >= 10.3
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-          if (BLA_VENDOR STREQUAL "*_seq" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-
-          # Cartesian product of the above
-          foreach (MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
-            foreach (THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
-              list(APPEND BLAS_SEARCH_LIBS
-                "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
+            if (BLA_VENDOR STREQUAL "Intel10_64lp*" OR BLA_VENDOR STREQUAL "All")
+              list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+                "mkl_intel_lp64${BLAS_mkl_DLL_SUFFIX}")
+            endif ()
+  
+            # Add threading/sequential libs
+            set(BLAS_SEARCH_LIBS_WIN_THREAD "")
+            if (NOT BLA_VENDOR STREQUAL "*_seq" OR BLA_VENDOR STREQUAL "All")
+              # old version
+              list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+                "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+              # mkl >= 10.3
+              list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+                "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+            endif()
+            if (BLA_VENDOR STREQUAL "*_seq" OR BLA_VENDOR STREQUAL "All")
+              list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+                "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
+            endif()
+  
+            # Cartesian product of the above
+            foreach (MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
+              foreach (THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
+                list(APPEND BLAS_SEARCH_LIBS
+                  "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
+              endforeach()
             endforeach()
-          endforeach()
-        else (WIN32)
-          if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_intel mkl_intel_thread mkl_core guide")
-          endif ()
-          if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_intel_lp64 mkl_intel_thread mkl_core guide")
-            # mkl >= 10.3
-            if (CMAKE_C_COMPILER_ID STREQUAL "Intel")
+          else (WIN32)
+            if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
               list(APPEND BLAS_SEARCH_LIBS
-                "mkl_intel_lp64 mkl_intel_thread mkl_core")
-            endif()
-            if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
+                "mkl_intel mkl_intel_thread mkl_core guide")
+            endif ()
+            if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All")
+              # old version
               list(APPEND BLAS_SEARCH_LIBS
-                "mkl_intel_lp64 mkl_gnu_thread mkl_core")
-            endif()
-          endif ()
-          if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_intel_lp64 mkl_sequential mkl_core")
-            if (BLA_VENDOR STREQUAL "Intel10_64lp_seq")
-              set(OMP_LIB "")
+                "mkl_intel_lp64 mkl_intel_thread mkl_core guide")
+              # mkl >= 10.3
+              if (CMAKE_C_COMPILER_ID STREQUAL "Intel")
+                list(APPEND BLAS_SEARCH_LIBS
+                  "mkl_intel_lp64 mkl_intel_thread mkl_core")
+              endif()
+              if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
+                list(APPEND BLAS_SEARCH_LIBS
+                  "mkl_intel_lp64 mkl_gnu_thread mkl_core")
+              endif()
+            endif ()
+            if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All")
+              list(APPEND BLAS_SEARCH_LIBS
+                "mkl_intel_lp64 mkl_sequential mkl_core")
+              if (BLA_VENDOR STREQUAL "Intel10_64lp_seq")
+                set(OMP_LIB "")
+              endif()
+            endif ()
+            #older vesions of intel mkl libs
+            if (BLA_VENDOR STREQUAL "Intel" OR BLA_VENDOR STREQUAL "All")
+              list(APPEND BLAS_SEARCH_LIBS
+                "mkl")
+              list(APPEND BLAS_SEARCH_LIBS
+                "mkl_ia32")
+              list(APPEND BLAS_SEARCH_LIBS
+                "mkl_em64t")
+            endif ()
+          endif (WIN32)
+  
+        endif (BLA_F95)
+  
+        foreach (IT ${BLAS_SEARCH_LIBS})
+          string(REPLACE " " ";" SEARCH_LIBS ${IT})
+          if (${_LIBRARIES})
+          else ()
+            check_fortran_libraries(
+              ${_LIBRARIES}
+              BLAS
+              ${BLAS_mkl_SEARCH_SYMBOL}
+              "${additional_flags}"
+              "${SEARCH_LIBS}"
+              "${OMP_LIB};${CMAKE_THREAD_LIBS_INIT};${LM}"
+              )
+            if(_LIBRARIES)
+              set(BLAS_LINKER_FLAGS "${additional_flags}")
             endif()
-          endif ()
-          #older vesions of intel mkl libs
-          if (BLA_VENDOR STREQUAL "Intel" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_ia32")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_em64t")
-          endif ()
-        endif (WIN32)
-
-      endif (BLA_F95)
-
-      foreach (IT ${BLAS_SEARCH_LIBS})
-        string(REPLACE " " ";" SEARCH_LIBS ${IT})
-        if (${_LIBRARIES})
-        else ()
-          check_fortran_libraries(
-            ${_LIBRARIES}
-            BLAS
-            ${BLAS_mkl_SEARCH_SYMBOL}
-            "${additional_flags}"
-            "${SEARCH_LIBS}"
-            "${OMP_LIB};${CMAKE_THREAD_LIBS_INIT};${LM}"
-            )
-          if(_LIBRARIES)
-            set(BLAS_LINKER_FLAGS "${additional_flags}")
+          endif()
+        endforeach ()
+        if(NOT BLAS_FIND_QUIETLY)
+          if(${_LIBRARIES})
+            message(STATUS "Looking for MKL BLAS: found")
+          else()
+            message(STATUS "Looking for MKL BLAS: not found")
           endif()
         endif()
-      endforeach ()
+        if (${_LIBRARIES} AND NOT BLAS_VENDOR_FOUND)
+            set (BLAS_VENDOR_FOUND "Intel MKL")
+        endif()
+      endif (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX)
+    endif(NOT BLAS_LIBRARIES OR BLA_VENDOR MATCHES "Intel*")
+  endif (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      # gotoblas (http://www.tacc.utexas.edu/tacc-projects/gotoblas2)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "goto2"
+        ""
+        )
       if(NOT BLAS_FIND_QUIETLY)
-        if(${_LIBRARIES})
-          message(STATUS "Looking for MKL BLAS: found")
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for Goto BLAS: found")
         else()
-          message(STATUS "Looking for MKL BLAS: not found")
+          message(STATUS "Looking for Goto BLAS: not found")
         endif()
       endif()
-      if (${_LIBRARIES} AND NOT BLAS_VENDOR_FOUND)
-          set (BLAS_VENDOR_FOUND "Intel MKL")
-      endif()
-    endif (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX)
-  endif(NOT BLAS_LIBRARIES OR BLA_VENDOR MATCHES "Intel*")
-endif (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All")
-
-
-if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    # gotoblas (http://www.tacc.utexas.edu/tacc-projects/gotoblas2)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "goto2"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for Goto BLAS: found")
-      else()
-        message(STATUS "Looking for Goto BLAS: not found")
-      endif()
     endif()
-  endif()
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "Goto")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
-
-
-# OpenBlas
-if (BLA_VENDOR STREQUAL "Open" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    # openblas (http://www.openblas.net/)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "openblas"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for Open BLAS: found")
-      else()
-        message(STATUS "Looking for Open BLAS: not found")
-      endif()
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "Goto")
     endif()
-  endif()
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "Openblas")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "Open" OR BLA_VENDOR STREQUAL "All")
-
-
-# EigenBlas
-if (BLA_VENDOR STREQUAL "Eigen" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    # eigenblas (http://eigen.tuxfamily.org/index.php?title=Main_Page)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "eigen_blas"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-        message(STATUS "Looking for Eigen BLAS: found")
-      else()
-        message(STATUS "Looking for Eigen BLAS: not found")
+  
+  endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  # OpenBlas
+  if (BLA_VENDOR STREQUAL "Open" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      # openblas (http://www.openblas.net/)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "openblas"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for Open BLAS: found")
+        else()
+          message(STATUS "Looking for Open BLAS: not found")
+        endif()
       endif()
     endif()
-  endif()
-
-  if(NOT BLAS_LIBRARIES)
-    # eigenblas (http://eigen.tuxfamily.org/index.php?title=Main_Page)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "eigen_blas_static"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for Eigen BLAS: found")
-      else()
-        message(STATUS "Looking for Eigen BLAS: not found")
-      endif()
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "Openblas")
     endif()
-  endif()
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "Eigen")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "Eigen" OR BLA_VENDOR STREQUAL "All")
-
-
-if (BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      dgemm
-      ""
-      "f77blas;atlas"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for Atlas BLAS: found")
-      else()
-        message(STATUS "Looking for Atlas BLAS: not found")
+  
+  endif (BLA_VENDOR STREQUAL "Open" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  # EigenBlas
+  if (BLA_VENDOR STREQUAL "Eigen" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      # eigenblas (http://eigen.tuxfamily.org/index.php?title=Main_Page)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "eigen_blas"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+          message(STATUS "Looking for Eigen BLAS: found")
+        else()
+          message(STATUS "Looking for Eigen BLAS: not found")
+        endif()
       endif()
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "Atlas")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
-
-
-# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
-if (BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "sgemm;dgemm;blas"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for PhiPACK BLAS: found")
-      else()
-        message(STATUS "Looking for PhiPACK BLAS: not found")
+  
+    if(NOT BLAS_LIBRARIES)
+      # eigenblas (http://eigen.tuxfamily.org/index.php?title=Main_Page)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "eigen_blas_static"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for Eigen BLAS: found")
+        else()
+          message(STATUS "Looking for Eigen BLAS: not found")
+        endif()
       endif()
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "PhiPACK")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All")
-
-
-# BLAS in Alpha CXML library?
-if (BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "cxml"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for CXML BLAS: found")
-      else()
-        message(STATUS "Looking for CXML BLAS: not found")
-      endif()
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "Eigen")
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "CXML")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All")
-
-
-# BLAS in Alpha DXML library? (now called CXML, see above)
-if (BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "dxml"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for DXML BLAS: found")
-      else()
-        message(STATUS "Looking for DXML BLAS: not found")
+  
+  endif (BLA_VENDOR STREQUAL "Eigen" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  if (BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        dgemm
+        ""
+        "f77blas;atlas"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for Atlas BLAS: found")
+        else()
+          message(STATUS "Looking for Atlas BLAS: not found")
+        endif()
       endif()
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "DXML")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All")
-
-
-# BLAS in Sun Performance library?
-if (BLA_VENDOR STREQUAL "SunPerf" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      "-xlic_lib=sunperf"
-      "sunperf;sunmath"
-      ""
-      )
-    if(BLAS_LIBRARIES)
-      set(BLAS_LINKER_FLAGS "-xlic_lib=sunperf")
-    endif()
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for SunPerf BLAS: found")
-      else()
-        message(STATUS "Looking for SunPerf BLAS: not found")
-      endif()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "Atlas")
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "SunPerf")
-  endif()
-
-endif ()
-
-
-# BLAS in SCSL library?  (SGI/Cray Scientific Library)
-if (BLA_VENDOR STREQUAL "SCSL" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "scsl"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for SCSL BLAS: found")
-      else()
-        message(STATUS "Looking for SCSL BLAS: not found")
+  
+  endif (BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  # BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
+  if (BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "sgemm;dgemm;blas"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for PhiPACK BLAS: found")
+        else()
+          message(STATUS "Looking for PhiPACK BLAS: not found")
+        endif()
       endif()
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "SunPerf")
-  endif()
-
-endif ()
-
-
-# BLAS in SGIMATH library?
-if (BLA_VENDOR STREQUAL "SGIMATH" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "complib.sgimath"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for SGIMATH BLAS: found")
-      else()
-        message(STATUS "Looking for SGIMATH BLAS: not found")
-      endif()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "PhiPACK")
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "SGIMATH")
-  endif()
-
-endif ()
-
-
-# BLAS in IBM ESSL library (requires generic BLAS lib, too)
-if (BLA_VENDOR STREQUAL "IBMESSL" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "essl"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for IBM ESSL BLAS: found")
-      else()
-        message(STATUS "Looking for IBM ESSL BLAS: not found")
+  
+  endif (BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  # BLAS in Alpha CXML library?
+  if (BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "cxml"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for CXML BLAS: found")
+        else()
+          message(STATUS "Looking for CXML BLAS: not found")
+        endif()
       endif()
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "IBM ESSL")
-  endif()
-
-endif ()
-
-# BLAS in IBM ESSL_MT library (requires generic BLAS lib, too)
-if (BLA_VENDOR STREQUAL "IBMESSLMT" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "esslsmp"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for IBM ESSL MT BLAS: found")
-      else()
-        message(STATUS "Looking for IBM ESSL MT BLAS: not found")
-      endif()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "CXML")
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "IBM ESSL MT")
-  endif()
-
-endif ()
-
-
-#BLAS in acml library?
-if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All")
-
-  if( ((BLA_VENDOR STREQUAL "ACML") AND (NOT BLAS_ACML_LIB_DIRS)) OR
-      ((BLA_VENDOR STREQUAL "ACML_MP") AND (NOT BLAS_ACML_MP_LIB_DIRS)) OR
-      ((BLA_VENDOR STREQUAL "ACML_GPU") AND (NOT BLAS_ACML_GPU_LIB_DIRS)))
-
-    # try to find acml in "standard" paths
-    if( WIN32 )
-      file( GLOB _ACML_ROOT "C:/AMD/acml*/ACML-EULA.txt" )
-    else()
-      file( GLOB _ACML_ROOT "/opt/acml*/ACML-EULA.txt" )
+  
+  endif (BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  # BLAS in Alpha DXML library? (now called CXML, see above)
+  if (BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "dxml"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for DXML BLAS: found")
+        else()
+          message(STATUS "Looking for DXML BLAS: not found")
+        endif()
+      endif()
     endif()
-    if( WIN32 )
-      file( GLOB _ACML_GPU_ROOT "C:/AMD/acml*/GPGPUexamples" )
-    else()
-      file( GLOB _ACML_GPU_ROOT "/opt/acml*/GPGPUexamples" )
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "DXML")
     endif()
-    list(GET _ACML_ROOT 0 _ACML_ROOT)
-    list(GET _ACML_GPU_ROOT 0 _ACML_GPU_ROOT)
-
-    if( _ACML_ROOT )
-
-      get_filename_component( _ACML_ROOT ${_ACML_ROOT} PATH )
-      if( SIZEOF_INTEGER EQUAL 8 )
-        set( _ACML_PATH_SUFFIX "_int64" )
-      else()
-        set( _ACML_PATH_SUFFIX "" )
+  
+  endif (BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  # BLAS in Sun Performance library?
+  if (BLA_VENDOR STREQUAL "SunPerf" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        "-xlic_lib=sunperf"
+        "sunperf;sunmath"
+        ""
+        )
+      if(BLAS_LIBRARIES)
+        set(BLAS_LINKER_FLAGS "-xlic_lib=sunperf")
       endif()
-      if( CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" )
-        set( _ACML_COMPILER32 "ifort32" )
-        set( _ACML_COMPILER64 "ifort64" )
-      elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "SunPro" )
-        set( _ACML_COMPILER32 "sun32" )
-        set( _ACML_COMPILER64 "sun64" )
-      elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "PGI" )
-        set( _ACML_COMPILER32 "pgi32" )
-        if( WIN32 )
-          set( _ACML_COMPILER64 "win64" )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for SunPerf BLAS: found")
         else()
-          set( _ACML_COMPILER64 "pgi64" )
+          message(STATUS "Looking for SunPerf BLAS: not found")
         endif()
-      elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "Open64" )
-        # 32 bit builds not supported on Open64 but for code simplicity
-        # We'll just use the same directory twice
-        set( _ACML_COMPILER32 "open64_64" )
-        set( _ACML_COMPILER64 "open64_64" )
-      elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" )
-        set( _ACML_COMPILER32 "nag32" )
-        set( _ACML_COMPILER64 "nag64" )
-      else()
-        set( _ACML_COMPILER32 "gfortran32" )
-        set( _ACML_COMPILER64 "gfortran64" )
       endif()
-
-      if( BLA_VENDOR STREQUAL "ACML_MP" )
-        set(_ACML_MP_LIB_DIRS
-          "${_ACML_ROOT}/${_ACML_COMPILER32}_mp${_ACML_PATH_SUFFIX}/lib"
-          "${_ACML_ROOT}/${_ACML_COMPILER64}_mp${_ACML_PATH_SUFFIX}/lib" )
-      else()
-        set(_ACML_LIB_DIRS
-          "${_ACML_ROOT}/${_ACML_COMPILER32}${_ACML_PATH_SUFFIX}/lib"
-          "${_ACML_ROOT}/${_ACML_COMPILER64}${_ACML_PATH_SUFFIX}/lib" )
-      endif()
-
-    endif(_ACML_ROOT)
-
-  elseif(BLAS_${BLA_VENDOR}_LIB_DIRS)
-
-    set(_${BLA_VENDOR}_LIB_DIRS ${BLAS_${BLA_VENDOR}_LIB_DIRS})
-
-  endif()
-
-  if( BLA_VENDOR STREQUAL "ACML_MP" )
-    foreach( BLAS_ACML_MP_LIB_DIRS ${_ACML_MP_LIB_DIRS})
-      check_fortran_libraries (
+    endif()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "SunPerf")
+    endif()
+  
+  endif ()
+  
+  
+  # BLAS in SCSL library?  (SGI/Cray Scientific Library)
+  if (BLA_VENDOR STREQUAL "SCSL" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
         BLAS_LIBRARIES
         BLAS
         sgemm
-        "" "acml_mp;acml_mv" "" ${BLAS_ACML_MP_LIB_DIRS}
+        ""
+        "scsl"
+        ""
         )
-      if( BLAS_LIBRARIES )
-        break()
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for SCSL BLAS: found")
+        else()
+          message(STATUS "Looking for SCSL BLAS: not found")
+        endif()
       endif()
-    endforeach()
-  elseif( BLA_VENDOR STREQUAL "ACML_GPU" )
-    foreach( BLAS_ACML_GPU_LIB_DIRS ${_ACML_GPU_LIB_DIRS})
-      check_fortran_libraries (
+    endif()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "SunPerf")
+    endif()
+  
+  endif ()
+  
+  
+  # BLAS in SGIMATH library?
+  if (BLA_VENDOR STREQUAL "SGIMATH" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
         BLAS_LIBRARIES
         BLAS
         sgemm
-        "" "acml;acml_mv;CALBLAS" "" ${BLAS_ACML_GPU_LIB_DIRS}
+        ""
+        "complib.sgimath"
+        ""
         )
-      if( BLAS_LIBRARIES )
-        break()
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for SGIMATH BLAS: found")
+        else()
+          message(STATUS "Looking for SGIMATH BLAS: not found")
+        endif()
       endif()
-    endforeach()
-  else()
-    foreach( BLAS_ACML_LIB_DIRS ${_ACML_LIB_DIRS} )
-      check_fortran_libraries (
+    endif()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "SGIMATH")
+    endif()
+  
+  endif ()
+  
+  
+  # BLAS in IBM ESSL library (requires generic BLAS lib, too)
+  if (BLA_VENDOR STREQUAL "IBMESSL" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
         BLAS_LIBRARIES
         BLAS
         sgemm
-        "" "acml;acml_mv" "" ${BLAS_ACML_LIB_DIRS}
+        ""
+        "essl"
+        ""
         )
-      if( BLAS_LIBRARIES )
-        break()
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for IBM ESSL BLAS: found")
+        else()
+          message(STATUS "Looking for IBM ESSL BLAS: not found")
+        endif()
       endif()
-    endforeach()
-  endif()
-
-  # Either acml or acml_mp should be in LD_LIBRARY_PATH but not both
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "acml;acml_mv"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for ACML BLAS: found")
-      else()
-        message(STATUS "Looking for ACML BLAS: not found")
+    endif()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "IBM ESSL")
+    endif()
+  
+  endif ()
+  
+  # BLAS in IBM ESSL_MT library (requires generic BLAS lib, too)
+  if (BLA_VENDOR STREQUAL "IBMESSLMT" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "esslsmp"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for IBM ESSL MT BLAS: found")
+        else()
+          message(STATUS "Looking for IBM ESSL MT BLAS: not found")
+        endif()
       endif()
     endif()
-  endif()
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "acml_mp;acml_mv"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for ACML BLAS: found")
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "IBM ESSL MT")
+    endif()
+  
+  endif ()
+  
+  
+  #BLAS in acml library?
+  if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All")
+  
+    if( ((BLA_VENDOR STREQUAL "ACML") AND (NOT BLAS_ACML_LIB_DIRS)) OR
+        ((BLA_VENDOR STREQUAL "ACML_MP") AND (NOT BLAS_ACML_MP_LIB_DIRS)) OR
+        ((BLA_VENDOR STREQUAL "ACML_GPU") AND (NOT BLAS_ACML_GPU_LIB_DIRS)))
+  
+      # try to find acml in "standard" paths
+      if( WIN32 )
+        file( GLOB _ACML_ROOT "C:/AMD/acml*/ACML-EULA.txt" )
       else()
-        message(STATUS "Looking for ACML BLAS: not found")
+        file( GLOB _ACML_ROOT "/opt/acml*/ACML-EULA.txt" )
       endif()
-    endif()
-  endif()
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "acml;acml_mv;CALBLAS"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for ACML BLAS: found")
+      if( WIN32 )
+        file( GLOB _ACML_GPU_ROOT "C:/AMD/acml*/GPGPUexamples" )
       else()
-        message(STATUS "Looking for ACML BLAS: not found")
+        file( GLOB _ACML_GPU_ROOT "/opt/acml*/GPGPUexamples" )
       endif()
+      list(GET _ACML_ROOT 0 _ACML_ROOT)
+      list(GET _ACML_GPU_ROOT 0 _ACML_GPU_ROOT)
+  
+      if( _ACML_ROOT )
+  
+        get_filename_component( _ACML_ROOT ${_ACML_ROOT} PATH )
+        if( SIZEOF_INTEGER EQUAL 8 )
+          set( _ACML_PATH_SUFFIX "_int64" )
+        else()
+          set( _ACML_PATH_SUFFIX "" )
+        endif()
+        if( CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" )
+          set( _ACML_COMPILER32 "ifort32" )
+          set( _ACML_COMPILER64 "ifort64" )
+        elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "SunPro" )
+          set( _ACML_COMPILER32 "sun32" )
+          set( _ACML_COMPILER64 "sun64" )
+        elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "PGI" )
+          set( _ACML_COMPILER32 "pgi32" )
+          if( WIN32 )
+            set( _ACML_COMPILER64 "win64" )
+          else()
+            set( _ACML_COMPILER64 "pgi64" )
+          endif()
+        elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "Open64" )
+          # 32 bit builds not supported on Open64 but for code simplicity
+          # We'll just use the same directory twice
+          set( _ACML_COMPILER32 "open64_64" )
+          set( _ACML_COMPILER64 "open64_64" )
+        elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" )
+          set( _ACML_COMPILER32 "nag32" )
+          set( _ACML_COMPILER64 "nag64" )
+        else()
+          set( _ACML_COMPILER32 "gfortran32" )
+          set( _ACML_COMPILER64 "gfortran64" )
+        endif()
+  
+        if( BLA_VENDOR STREQUAL "ACML_MP" )
+          set(_ACML_MP_LIB_DIRS
+            "${_ACML_ROOT}/${_ACML_COMPILER32}_mp${_ACML_PATH_SUFFIX}/lib"
+            "${_ACML_ROOT}/${_ACML_COMPILER64}_mp${_ACML_PATH_SUFFIX}/lib" )
+        else()
+          set(_ACML_LIB_DIRS
+            "${_ACML_ROOT}/${_ACML_COMPILER32}${_ACML_PATH_SUFFIX}/lib"
+            "${_ACML_ROOT}/${_ACML_COMPILER64}${_ACML_PATH_SUFFIX}/lib" )
+        endif()
+  
+      endif(_ACML_ROOT)
+  
+    elseif(BLAS_${BLA_VENDOR}_LIB_DIRS)
+  
+      set(_${BLA_VENDOR}_LIB_DIRS ${BLAS_${BLA_VENDOR}_LIB_DIRS})
+  
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "ACML")
-  endif()
-
-endif (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All") # ACML
-
-
-# Apple BLAS library?
-if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
-
-  if(NOT BLAS_LIBRARIES)
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      dgemm
-      ""
-      "Accelerate"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for Apple BLAS: found")
-      else()
-        message(STATUS "Looking for Apple BLAS: not found")
+  
+    if( BLA_VENDOR STREQUAL "ACML_MP" )
+      foreach( BLAS_ACML_MP_LIB_DIRS ${_ACML_MP_LIB_DIRS})
+        check_fortran_libraries (
+          BLAS_LIBRARIES
+          BLAS
+          sgemm
+          "" "acml_mp;acml_mv" "" ${BLAS_ACML_MP_LIB_DIRS}
+          )
+        if( BLAS_LIBRARIES )
+          break()
+        endif()
+      endforeach()
+    elseif( BLA_VENDOR STREQUAL "ACML_GPU" )
+      foreach( BLAS_ACML_GPU_LIB_DIRS ${_ACML_GPU_LIB_DIRS})
+        check_fortran_libraries (
+          BLAS_LIBRARIES
+          BLAS
+          sgemm
+          "" "acml;acml_mv;CALBLAS" "" ${BLAS_ACML_GPU_LIB_DIRS}
+          )
+        if( BLAS_LIBRARIES )
+          break()
+        endif()
+      endforeach()
+    else()
+      foreach( BLAS_ACML_LIB_DIRS ${_ACML_LIB_DIRS} )
+        check_fortran_libraries (
+          BLAS_LIBRARIES
+          BLAS
+          sgemm
+          "" "acml;acml_mv" "" ${BLAS_ACML_LIB_DIRS}
+          )
+        if( BLAS_LIBRARIES )
+          break()
+        endif()
+      endforeach()
+    endif()
+  
+    # Either acml or acml_mp should be in LD_LIBRARY_PATH but not both
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "acml;acml_mv"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for ACML BLAS: found")
+        else()
+          message(STATUS "Looking for ACML BLAS: not found")
+        endif()
       endif()
     endif()
-  endif()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "Apple Accelerate")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
-
-
-if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
-
-  if ( NOT BLAS_LIBRARIES )
-    check_fortran_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      dgemm
-      ""
-      "vecLib"
-      ""
-      )
-    if(NOT BLAS_FIND_QUIETLY)
-      if(BLAS_LIBRARIES)
-        message(STATUS "Looking for NAS BLAS: found")
-      else()
-        message(STATUS "Looking for NAS BLAS: not found")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "acml_mp;acml_mv"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for ACML BLAS: found")
+        else()
+          message(STATUS "Looking for ACML BLAS: not found")
+        endif()
       endif()
     endif()
-  endif ()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "NAS")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
-
-
-# Generic BLAS library?
-if (BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All")
-
-  set(BLAS_SEARCH_LIBS "blas;blas_LINUX;blas_MAC;blas_WINDOWS;refblas")
-  foreach (SEARCH_LIB ${BLAS_SEARCH_LIBS})
-    if (BLAS_LIBRARIES)
-    else ()
+  
+    if(NOT BLAS_LIBRARIES)
       check_fortran_libraries(
         BLAS_LIBRARIES
         BLAS
         sgemm
         ""
-        "${SEARCH_LIB}"
-        "${LGFORTRAN}"
+        "acml;acml_mv;CALBLAS"
+        ""
         )
       if(NOT BLAS_FIND_QUIETLY)
         if(BLAS_LIBRARIES)
-          message(STATUS "Looking for Generic BLAS: found")
+          message(STATUS "Looking for ACML BLAS: found")
         else()
-          message(STATUS "Looking for Generic BLAS: not found")
+          message(STATUS "Looking for ACML BLAS: not found")
         endif()
       endif()
     endif()
-  endforeach ()
-
-  if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
-      set (BLAS_VENDOR_FOUND "Netlib or other Generic libblas")
-  endif()
-
-endif (BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All")
-
-
-if(BLA_F95)
-
-  if(BLAS95_LIBRARIES)
-    set(BLAS95_FOUND TRUE)
-  else()
-    set(BLAS95_FOUND FALSE)
-  endif()
-
-  if(NOT BLAS_FIND_QUIETLY)
-    if(BLAS95_FOUND)
-      message(STATUS "A library with BLAS95 API found.")
-      message(STATUS "BLAS_LIBRARIES ${BLAS_LIBRARIES}")
-    else(BLAS95_FOUND)
-      message(WARNING "BLA_VENDOR has been set to ${BLA_VENDOR} but blas 95 libraries could not be found or check of symbols failed."
-        "\nPlease indicate where to find blas libraries. You have three options:\n"
-        "- Option 1: Provide the installation directory of BLAS library with cmake option: -DBLAS_DIR=your/path/to/blas\n"
-        "- Option 2: Provide the directory where to find BLAS libraries with cmake option: -DBLAS_LIBDIR=your/path/to/blas/libs\n"
-        "- Option 3: Update your environment variable (Linux: LD_LIBRARY_PATH, Windows: LIB, Mac: DYLD_LIBRARY_PATH)\n"
-        "\nTo follow libraries detection more precisely you can activate a verbose mode with -DBLAS_VERBOSE=ON at cmake configure."
-        "\nYou could also specify a BLAS vendor to look for by setting -DBLA_VENDOR=blas_vendor_name."
-        "\nList of possible BLAS vendor: Goto, ATLAS PhiPACK, CXML, DXML, SunPerf, SCSL, SGIMATH, IBMESSL, Intel10_32 (intel mkl v10 32 bit),"
-        "Intel10_64lp (intel mkl v10 64 bit, lp thread model, lp64 model), Intel10_64lp_seq (intel mkl v10 64 bit, sequential code, lp64 model),"
-        "Intel( older versions of mkl 32 and 64 bit), ACML, ACML_MP, ACML_GPU, Apple, NAS, Generic")
-      if(BLAS_FIND_REQUIRED)
-        message(FATAL_ERROR
-          "A required library with BLAS95 API not found. Please specify library location.")
-      else()
-        message(STATUS
-          "A library with BLAS95 API not found. Please specify library location.")
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "ACML")
+    endif()
+  
+  endif (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All") # ACML
+  
+  
+  # Apple BLAS library?
+  if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
+  
+    if(NOT BLAS_LIBRARIES)
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        dgemm
+        ""
+        "Accelerate"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for Apple BLAS: found")
+        else()
+          message(STATUS "Looking for Apple BLAS: not found")
+        endif()
       endif()
-    endif(BLAS95_FOUND)
-  endif(NOT BLAS_FIND_QUIETLY)
-
-  set(BLAS_FOUND TRUE)
-  set(BLAS_LIBRARIES "${BLAS95_LIBRARIES}")
-  if (NOT BLAS_LIBRARIES_DEP)
-    set(BLAS_LIBRARIES_DEP "${BLAS95_LIBRARIES}")
-  endif()
-
-else(BLA_F95)
-
-  if(BLAS_LIBRARIES)
+    endif()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "Apple Accelerate")
+    endif()
+  
+  endif (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
+  
+    if ( NOT BLAS_LIBRARIES )
+      check_fortran_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        dgemm
+        ""
+        "vecLib"
+        ""
+        )
+      if(NOT BLAS_FIND_QUIETLY)
+        if(BLAS_LIBRARIES)
+          message(STATUS "Looking for NAS BLAS: found")
+        else()
+          message(STATUS "Looking for NAS BLAS: not found")
+        endif()
+      endif()
+    endif ()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "NAS")
+    endif()
+  
+  endif (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  # Generic BLAS library?
+  if (BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All")
+  
+    set(BLAS_SEARCH_LIBS "blas;blas_LINUX;blas_MAC;blas_WINDOWS;refblas")
+    foreach (SEARCH_LIB ${BLAS_SEARCH_LIBS})
+      if (BLAS_LIBRARIES)
+      else ()
+        check_fortran_libraries(
+          BLAS_LIBRARIES
+          BLAS
+          sgemm
+          ""
+          "${SEARCH_LIB}"
+          "${LGFORTRAN}"
+          )
+        if(NOT BLAS_FIND_QUIETLY)
+          if(BLAS_LIBRARIES)
+            message(STATUS "Looking for Generic BLAS: found")
+          else()
+            message(STATUS "Looking for Generic BLAS: not found")
+          endif()
+        endif()
+      endif()
+    endforeach ()
+  
+    if (BLAS_LIBRARIES AND NOT BLAS_VENDOR_FOUND)
+        set (BLAS_VENDOR_FOUND "Netlib or other Generic libblas")
+    endif()
+  
+  endif (BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All")
+  
+  
+  if(BLA_F95)
+  
+    if(BLAS95_LIBRARIES)
+      set(BLAS95_FOUND TRUE)
+    else()
+      set(BLAS95_FOUND FALSE)
+    endif()
+  
+    if(NOT BLAS_FIND_QUIETLY)
+      if(BLAS95_FOUND)
+        message(STATUS "A library with BLAS95 API found.")
+        message(STATUS "BLAS_LIBRARIES ${BLAS_LIBRARIES}")
+      else(BLAS95_FOUND)
+        message(WARNING "BLA_VENDOR has been set to ${BLA_VENDOR} but blas 95 libraries could not be found or check of symbols failed."
+          "\nPlease indicate where to find blas libraries. You have three options:\n"
+          "- Option 1: Provide the installation directory of BLAS library with cmake option: -DBLAS_DIR=your/path/to/blas\n"
+          "- Option 2: Provide the directory where to find BLAS libraries with cmake option: -DBLAS_LIBDIR=your/path/to/blas/libs\n"
+          "- Option 3: Update your environment variable (Linux: LD_LIBRARY_PATH, Windows: LIB, Mac: DYLD_LIBRARY_PATH)\n"
+          "\nTo follow libraries detection more precisely you can activate a verbose mode with -DBLAS_VERBOSE=ON at cmake configure."
+          "\nYou could also specify a BLAS vendor to look for by setting -DBLA_VENDOR=blas_vendor_name."
+          "\nList of possible BLAS vendor: Goto, ATLAS PhiPACK, CXML, DXML, SunPerf, SCSL, SGIMATH, IBMESSL, Intel10_32 (intel mkl v10 32 bit),"
+          "Intel10_64lp (intel mkl v10 64 bit, lp thread model, lp64 model), Intel10_64lp_seq (intel mkl v10 64 bit, sequential code, lp64 model),"
+          "Intel( older versions of mkl 32 and 64 bit), ACML, ACML_MP, ACML_GPU, Apple, NAS, Generic")
+        if(BLAS_FIND_REQUIRED)
+          message(FATAL_ERROR
+            "A required library with BLAS95 API not found. Please specify library location.")
+        else()
+          message(STATUS
+            "A library with BLAS95 API not found. Please specify library location.")
+        endif()
+      endif(BLAS95_FOUND)
+    endif(NOT BLAS_FIND_QUIETLY)
+  
     set(BLAS_FOUND TRUE)
+    set(BLAS_LIBRARIES "${BLAS95_LIBRARIES}")
     if (NOT BLAS_LIBRARIES_DEP)
-      set(BLAS_LIBRARIES_DEP "${BLAS_LIBRARIES}")
+      set(BLAS_LIBRARIES_DEP "${BLAS95_LIBRARIES}")
     endif()
-  else()
-    set(BLAS_FOUND FALSE)
-  endif()
-
-  if(NOT BLAS_FIND_QUIETLY)
-    if(BLAS_FOUND)
-      message(STATUS "A library with BLAS API found.")
-      message(STATUS "BLAS_LIBRARIES ${BLAS_LIBRARIES}")
-    else(BLAS_FOUND)
-      message(WARNING "BLA_VENDOR has been set to ${BLA_VENDOR} but blas libraries could not be found or check of symbols failed."
-        "\nPlease indicate where to find blas libraries. You have three options:\n"
-        "- Option 1: Provide the installation directory of BLAS library with cmake option: -DBLAS_DIR=your/path/to/blas\n"
-        "- Option 2: Provide the directory where to find BLAS libraries with cmake option: -DBLAS_LIBDIR=your/path/to/blas/libs\n"
-        "- Option 3: Update your environment variable (Linux: LD_LIBRARY_PATH, Windows: LIB, Mac: DYLD_LIBRARY_PATH)\n"
-        "\nTo follow libraries detection more precisely you can activate a verbose mode with -DBLAS_VERBOSE=ON at cmake configure."
-        "\nYou could also specify a BLAS vendor to look for by setting -DBLA_VENDOR=blas_vendor_name."
-        "\nList of possible BLAS vendor: Goto, ATLAS PhiPACK, CXML, DXML, SunPerf, SCSL, SGIMATH, IBMESSL, Intel10_32 (intel mkl v10 32 bit),"
-        "Intel10_64lp (intel mkl v10 64 bit, lp thread model, lp64 model), Intel10_64lp_seq (intel mkl v10 64 bit, sequential code, lp64 model),"
-        "Intel( older versions of mkl 32 and 64 bit), ACML, ACML_MP, ACML_GPU, Apple, NAS, Generic")
-      if(BLAS_FIND_REQUIRED)
-        message(FATAL_ERROR
-          "A required library with BLAS API not found. Please specify library location.")
-      else()
-        message(STATUS
-          "A library with BLAS API not found. Please specify library location.")
+  
+  else(BLA_F95)
+  
+    if(BLAS_LIBRARIES)
+      set(BLAS_FOUND TRUE)
+      if (NOT BLAS_LIBRARIES_DEP)
+        set(BLAS_LIBRARIES_DEP "${BLAS_LIBRARIES}")
       endif()
-    endif(BLAS_FOUND)
-  endif(NOT BLAS_FIND_QUIETLY)
-
-endif(BLA_F95)
+    else()
+      set(BLAS_FOUND FALSE)
+    endif()
+  
+    if(NOT BLAS_FIND_QUIETLY)
+      if(BLAS_FOUND)
+        message(STATUS "A library with BLAS API found.")
+        message(STATUS "BLAS_LIBRARIES ${BLAS_LIBRARIES}")
+      else(BLAS_FOUND)
+        message(WARNING "BLA_VENDOR has been set to ${BLA_VENDOR} but blas libraries could not be found or check of symbols failed."
+          "\nPlease indicate where to find blas libraries. You have three options:\n"
+          "- Option 1: Provide the installation directory of BLAS library with cmake option: -DBLAS_DIR=your/path/to/blas\n"
+          "- Option 2: Provide the directory where to find BLAS libraries with cmake option: -DBLAS_LIBDIR=your/path/to/blas/libs\n"
+          "- Option 3: Update your environment variable (Linux: LD_LIBRARY_PATH, Windows: LIB, Mac: DYLD_LIBRARY_PATH)\n"
+          "\nTo follow libraries detection more precisely you can activate a verbose mode with -DBLAS_VERBOSE=ON at cmake configure."
+          "\nYou could also specify a BLAS vendor to look for by setting -DBLA_VENDOR=blas_vendor_name."
+          "\nList of possible BLAS vendor: Goto, ATLAS PhiPACK, CXML, DXML, SunPerf, SCSL, SGIMATH, IBMESSL, Intel10_32 (intel mkl v10 32 bit),"
+          "Intel10_64lp (intel mkl v10 64 bit, lp thread model, lp64 model), Intel10_64lp_seq (intel mkl v10 64 bit, sequential code, lp64 model),"
+          "Intel( older versions of mkl 32 and 64 bit), ACML, ACML_MP, ACML_GPU, Apple, NAS, Generic")
+        if(BLAS_FIND_REQUIRED)
+          message(FATAL_ERROR
+            "A required library with BLAS API not found. Please specify library location.")
+        else()
+          message(STATUS
+            "A library with BLAS API not found. Please specify library location.")
+        endif()
+      endif(BLAS_FOUND)
+    endif(NOT BLAS_FIND_QUIETLY)
+  
+  endif(BLA_F95)
+endif( (NOT BLAS_FOUND_WITH_PKGCONFIG) OR BLAS_GIVEN_BY_USER )
 
 set(CMAKE_FIND_LIBRARY_SUFFIXES ${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
 
diff --git a/modules/find/FindLAPACK.cmake b/modules/find/FindLAPACK.cmake
index 8ae221e01aa31f3b243e1ff4c9ccb10fab18d719..9a719b929dc8f5b64b3d98943c46d8c1c51526d1 100644
--- a/modules/find/FindLAPACK.cmake
+++ b/modules/find/FindLAPACK.cmake
@@ -356,290 +356,376 @@ if(BLAS_FOUND)
     endif()
   endif(BLAS_LIBRARIES)
 
-  #intel lapack
-  if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
-
-    if(NOT LAPACK_LIBRARIES)
-      if (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX)
+  # if not lapack in blas libs, try to find lapack with pkg-config
+  set(ENV_LAPACK_DIR "$ENV{LAPACK_DIR}")
+  set(ENV_LAPACK_INCDIR "$ENV{LAPACK_INCDIR}")
+  set(ENV_LAPACK_LIBDIR "$ENV{LAPACK_LIBDIR}")
+  set(LAPACK_GIVEN_BY_USER "FALSE")
+  if ( LAPACK_DIR OR ( LAPACK_INCDIR AND LAPACK_LIBDIR) OR ENV_LAPACK_DIR OR (ENV_LAPACK_INCDIR AND ENV_LAPACK_LIBDIR) )
+    set(LAPACK_GIVEN_BY_USER "TRUE")
+  endif()
 
-        if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED)
-              find_PACKAGE(Threads)
+  macro(FIND_PKGCONFIG_LIBRARIES_ABSOLUTE_PATH _prefix)
+    if(WIN32)
+      string(REPLACE ":" ";" _lib_env "$ENV{LIB}")
+    elseif(APPLE)
+      string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}")
+    else()
+      string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}")
+    endif()
+    list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}")
+    list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
+    set(${_prefix}_LIBRARIES_COPY "${${_prefix}_LIBRARIES}")
+    set(${_prefix}_LIBRARIES "")
+    foreach(_library ${${_prefix}_LIBRARIES_COPY})
+        get_filename_component(_library "${_library}" NAME_WE)
+        find_library(_library_path NAMES ${_library}
+            HINTS ${${_prefix}_LIBDIR} ${${_prefix}_LIBRARY_DIRS} ${_lib_env})
+        if (_library_path)
+            list(APPEND ${_prefix}_LIBRARIES ${_library_path})
         else()
-              find_package(Threads REQUIRED)
+            message(FATAL_ERROR "Dependency of ${_prefix} '${_library}' NOT FOUND")
         endif()
-
-        set(LAPACK_SEARCH_LIBS "")
-
-        set(additional_flags "")
-        if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
-              set(additional_flags "-Wl,--no-as-needed")
+        unset(_library_path CACHE)
+    endforeach()
+    set(${_prefix}_STATIC_LIBRARIES_COPY "${${_prefix}_STATIC_LIBRARIES}")
+    set(${_prefix}_STATIC_LIBRARIES "")
+    foreach(_library ${${_prefix}_STATIC_LIBRARIES_COPY})
+        get_filename_component(_library "${_library}" NAME_WE)
+        find_library(_library_path NAMES ${_library}
+            HINTS ${${_prefix}_STATIC_LIBDIR} ${${_prefix}_STATIC_LIBRARY_DIRS} ${_lib_env})
+        if (_library_path)
+            list(APPEND ${_prefix}_STATIC_LIBRARIES ${_library_path})
+        else()
+            message(FATAL_ERROR "Dependency of ${_prefix} '${_library}' NOT FOUND")
         endif()
+        unset(_library_path CACHE)
+    endforeach()
+  endmacro()
+  
+  # Optionally use pkg-config to detect include/library dirs (if pkg-config is available)
+  # -------------------------------------------------------------------------------------
+  include(FindPkgConfig)
+  find_package(PkgConfig QUIET)
+  if( PKG_CONFIG_EXECUTABLE AND NOT LAPACK_GIVEN_BY_USER AND BLA_VENDOR STREQUAL "All")
+  
+    pkg_search_module(LAPACK lapack)
+    find_pkgconfig_libraries_absolute_path(LAPACK)
+    
+    if (NOT LAPACK_FIND_QUIETLY)
+      if (LAPACK_FOUND AND LAPACK_LIBRARIES)
+        message(STATUS "Looking for LAPACK - found using PkgConfig")
+      else()
+        message(STATUS "${Magenta}Looking for LAPACK - not found using PkgConfig."
+          "\n   Perhaps you should add the directory containing lapack.pc to"
+          "\n   the PKG_CONFIG_PATH environment variable.${ColourReset}")
+      endif()
+    endif()
+  
+    if (BLA_STATIC)
+      set(LAPACK_LINKER_FLAGS "${LAPACK_STATIC_LDFLAGS}")
+      set(LAPACK_COMPILER_FLAGS "${LAPACK_STATIC_CFLAGS}")
+      set(LAPACK_LIBRARIES "${LAPACK_STATIC_LIBRARIES}")
+    else()
+      set(LAPACK_LINKER_FLAGS "${LAPACK_LDFLAGS}")
+      set(LAPACK_COMPILER_FLAGS "${LAPACK_CFLAGS}")
+    endif()
+    
+    if (LAPACK_FOUND AND LAPACK_LIBRARIES)
+      set(LAPACK_FOUND_WITH_PKGCONFIG "TRUE")
+    else()
+      set(LAPACK_FOUND_WITH_PKGCONFIG "FALSE")
+    endif()
+  
+  endif()
 
-        if (BLA_F95)
-              set(LAPACK_mkl_SEARCH_SYMBOL "CHEEV")
-              set(_LIBRARIES LAPACK95_LIBRARIES)
-              set(_BLAS_LIBRARIES ${BLAS95_LIBRARIES})
-
-              # old
-              list(APPEND LAPACK_SEARCH_LIBS
-                "mkl_lapack95")
-              # new >= 10.3
-              list(APPEND LAPACK_SEARCH_LIBS
-                "mkl_intel_c")
-              list(APPEND LAPACK_SEARCH_LIBS
-                "mkl_intel_lp64")
-        else(BLA_F95)
-              set(LAPACK_mkl_SEARCH_SYMBOL "cheev")
-              set(_LIBRARIES LAPACK_LIBRARIES)
-              set(_BLAS_LIBRARIES ${BLAS_LIBRARIES})
-
-              # old
-              list(APPEND LAPACK_SEARCH_LIBS
-                "mkl_lapack")
-              # new >= 10.3
-              list(APPEND LAPACK_SEARCH_LIBS
-                "mkl_gf_lp64")
-        endif(BLA_F95)
-
-        # First try empty lapack libs
-        if (NOT ${_LIBRARIES})
-              check_lapack_libraries(
-                ${_LIBRARIES}
-                LAPACK
-                ${LAPACK_mkl_SEARCH_SYMBOL}
-                "${additional_flags}"
-                ""
-                "${_BLAS_LIBRARIES}"
-                "${CMAKE_THREAD_LIBS_INIT};${LM}"
-                )
-              if(_LIBRARIES)
-                set(LAPACK_LINKER_FLAGS "${additional_flags}")
-              endif()
-        endif ()
-        # Then try the search libs
-        foreach (IT ${LAPACK_SEARCH_LIBS})
-              if (NOT ${_LIBRARIES})
+  if( (NOT LAPACK_FOUND_WITH_PKGCONFIG) OR LAPACK_GIVEN_BY_USER )
+    #intel lapack
+    if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
+    
+      if(NOT LAPACK_LIBRARIES)
+        if (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX)
+    
+          if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED)
+                find_PACKAGE(Threads)
+          else()
+                find_package(Threads REQUIRED)
+          endif()
+    
+          set(LAPACK_SEARCH_LIBS "")
+    
+          set(additional_flags "")
+          if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
+                set(additional_flags "-Wl,--no-as-needed")
+          endif()
+    
+          if (BLA_F95)
+                set(LAPACK_mkl_SEARCH_SYMBOL "CHEEV")
+                set(_LIBRARIES LAPACK95_LIBRARIES)
+                set(_BLAS_LIBRARIES ${BLAS95_LIBRARIES})
+    
+                # old
+                list(APPEND LAPACK_SEARCH_LIBS
+                  "mkl_lapack95")
+                # new >= 10.3
+                list(APPEND LAPACK_SEARCH_LIBS
+                  "mkl_intel_c")
+                list(APPEND LAPACK_SEARCH_LIBS
+                  "mkl_intel_lp64")
+          else(BLA_F95)
+                set(LAPACK_mkl_SEARCH_SYMBOL "cheev")
+                set(_LIBRARIES LAPACK_LIBRARIES)
+                set(_BLAS_LIBRARIES ${BLAS_LIBRARIES})
+    
+                # old
+                list(APPEND LAPACK_SEARCH_LIBS
+                  "mkl_lapack")
+                # new >= 10.3
+                list(APPEND LAPACK_SEARCH_LIBS
+                  "mkl_gf_lp64")
+          endif(BLA_F95)
+    
+          # First try empty lapack libs
+          if (NOT ${_LIBRARIES})
                 check_lapack_libraries(
                   ${_LIBRARIES}
                   LAPACK
                   ${LAPACK_mkl_SEARCH_SYMBOL}
                   "${additional_flags}"
-                  "${IT}"
+                  ""
                   "${_BLAS_LIBRARIES}"
                   "${CMAKE_THREAD_LIBS_INIT};${LM}"
                   )
                 if(_LIBRARIES)
                   set(LAPACK_LINKER_FLAGS "${additional_flags}")
                 endif()
-              endif ()
-        endforeach ()
-        if(NOT LAPACK_FIND_QUIETLY)
-              if(${_LIBRARIES})
-                message(STATUS "Looking for MKL LAPACK: found")
-              else()
-                message(STATUS "Looking for MKL LAPACK: not found")
-              endif()
-        endif(NOT LAPACK_FIND_QUIETLY)
-        if (${_LIBRARIES} AND NOT LAPACK_VENDOR_FOUND)
+          endif ()
+          # Then try the search libs
+          foreach (IT ${LAPACK_SEARCH_LIBS})
+                if (NOT ${_LIBRARIES})
+                  check_lapack_libraries(
+                    ${_LIBRARIES}
+                    LAPACK
+                    ${LAPACK_mkl_SEARCH_SYMBOL}
+                    "${additional_flags}"
+                    "${IT}"
+                    "${_BLAS_LIBRARIES}"
+                    "${CMAKE_THREAD_LIBS_INIT};${LM}"
+                    )
+                  if(_LIBRARIES)
+                    set(LAPACK_LINKER_FLAGS "${additional_flags}")
+                  endif()
+                endif ()
+          endforeach ()
+          if(NOT LAPACK_FIND_QUIETLY)
+                if(${_LIBRARIES})
+                  message(STATUS "Looking for MKL LAPACK: found")
+                else()
+                  message(STATUS "Looking for MKL LAPACK: not found")
+                endif()
+          endif(NOT LAPACK_FIND_QUIETLY)
+          if(${_LIBRARIES} AND NOT LAPACK_VENDOR_FOUND)
             set (LAPACK_VENDOR_FOUND "Intel MKL")
+          endif()
+    
+        endif (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX)
+      endif(NOT LAPACK_LIBRARIES)
+    endif(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
+    
+    #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}"
+          ""
+          )
+        if(NOT LAPACK_FIND_QUIETLY)
+          if(LAPACK_LIBRARIES)
+            message(STATUS "Looking for Goto LAPACK: found")
+          else()
+            message(STATUS "Looking for Goto LAPACK: not found")
+          endif()
         endif()
-
-      endif (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX)
-    endif(NOT LAPACK_LIBRARIES)
-  endif(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
-
-  #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}"
-        ""
-        )
-      if(NOT LAPACK_FIND_QUIETLY)
-        if(LAPACK_LIBRARIES)
-          message(STATUS "Looking for Goto LAPACK: found")
-        else()
-          message(STATUS "Looking for Goto LAPACK: not found")
+        if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
+            set (LAPACK_VENDOR_FOUND "Goto")
         endif()
-      endif()
-      if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
-          set (LAPACK_VENDOR_FOUND "Goto")
-      endif()
-    endif(NOT LAPACK_LIBRARIES)
-  endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
-
-  #open lapack
-  if (BLA_VENDOR STREQUAL "Open" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheev
-        ""
-        "openblas"
-        "${BLAS_LIBRARIES}"
-        ""
-        )
-      if(NOT LAPACK_FIND_QUIETLY)
-        if(LAPACK_LIBRARIES)
-          message(STATUS "Looking for Open LAPACK: found")
-        else()
-          message(STATUS "Looking for Open LAPACK: not found")
+      endif(NOT LAPACK_LIBRARIES)
+    endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
+    
+    #open lapack
+    if (BLA_VENDOR STREQUAL "Open" OR BLA_VENDOR STREQUAL "All")
+      if(NOT LAPACK_LIBRARIES)
+        check_lapack_libraries(
+          LAPACK_LIBRARIES
+          LAPACK
+          cheev
+          ""
+          "openblas"
+          "${BLAS_LIBRARIES}"
+          ""
+          )
+        if(NOT LAPACK_FIND_QUIETLY)
+          if(LAPACK_LIBRARIES)
+            message(STATUS "Looking for Open LAPACK: found")
+          else()
+            message(STATUS "Looking for Open LAPACK: not found")
+          endif()
         endif()
-      endif()
-      if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
-          set (LAPACK_VENDOR_FOUND "Openblas")
-      endif()
-    endif(NOT LAPACK_LIBRARIES)
-  endif (BLA_VENDOR STREQUAL "Open" OR BLA_VENDOR STREQUAL "All")
-
-  # LAPACK in IBM ESSL library (requires generic lapack lib, too)
-  if (BLA_VENDOR STREQUAL "IBMESSL" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheevd
-        ""
-        "essl"
-        "${BLAS_LIBRARIES}"
-        ""
-        )
-      if(NOT LAPACK_FIND_QUIETLY)
-        if(LAPACK_LIBRARIES)
-          message(STATUS "Looking for IBM ESSL LAPACK: found")
-        else()
-          message(STATUS "Looking for IBM ESSL LAPACK: not found")
+        if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
+            set (LAPACK_VENDOR_FOUND "Openblas")
         endif()
-      endif()
-      if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
-          set (LAPACK_VENDOR_FOUND "IBM ESSL")
-      endif()
-    endif()
-  endif ()
-
-  # LAPACK in IBM ESSL_MT library (requires generic lapack lib, too)
-  if (BLA_VENDOR STREQUAL "IBMESSLMT" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheevd
-        ""
-        "esslsmp"
-        "${BLAS_PAR_LIBRARIES}"
-        ""
-        )
-      if(NOT LAPACK_FIND_QUIETLY)
-        if(LAPACK_LIBRARIES)
-          message(STATUS "Looking for IBM ESSL MT LAPACK: found")
-        else()
-          message(STATUS "Looking for IBM ESSL MT LAPACK: not found")
+      endif(NOT LAPACK_LIBRARIES)
+    endif (BLA_VENDOR STREQUAL "Open" OR BLA_VENDOR STREQUAL "All")
+    
+    # LAPACK in IBM ESSL library (requires generic lapack lib, too)
+    if (BLA_VENDOR STREQUAL "IBMESSL" OR BLA_VENDOR STREQUAL "All")
+      if(NOT LAPACK_LIBRARIES)
+        check_lapack_libraries(
+          LAPACK_LIBRARIES
+          LAPACK
+          cheevd
+          ""
+          "essl"
+          "${BLAS_LIBRARIES}"
+          ""
+          )
+        if(NOT LAPACK_FIND_QUIETLY)
+          if(LAPACK_LIBRARIES)
+            message(STATUS "Looking for IBM ESSL LAPACK: found")
+          else()
+            message(STATUS "Looking for IBM ESSL LAPACK: not found")
+          endif()
         endif()
-      endif()
-      if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
-          set (LAPACK_VENDOR_FOUND "IBM ESSL MT")
-      endif()
-    endif()
-  endif ()
-
-  #acml lapack
-  if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All")
-    if (BLAS_LIBRARIES MATCHES ".+acml.+")
-      set (LAPACK_LIBRARIES ${BLAS_LIBRARIES})
-      if(NOT LAPACK_FIND_QUIETLY)
-        if(LAPACK_LIBRARIES)
-          message(STATUS "Looking for ACML LAPACK: found")
-        else()
-          message(STATUS "Looking for ACML LAPACK: not found")
+        if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
+            set (LAPACK_VENDOR_FOUND "IBM ESSL")
         endif()
       endif()
-      if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
-          set (LAPACK_VENDOR_FOUND "ACML")
-      endif()
     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}"
-        ""
-        )
-      if(NOT LAPACK_FIND_QUIETLY)
-        if(LAPACK_LIBRARIES)
-          message(STATUS "Looking for Apple Accelerate LAPACK: found")
-        else()
-          message(STATUS "Looking for Apple Accelerate LAPACK: not found")
+    
+    # LAPACK in IBM ESSL_MT library (requires generic lapack lib, too)
+    if (BLA_VENDOR STREQUAL "IBMESSLMT" OR BLA_VENDOR STREQUAL "All")
+      if(NOT LAPACK_LIBRARIES)
+        check_lapack_libraries(
+          LAPACK_LIBRARIES
+          LAPACK
+          cheevd
+          ""
+          "esslsmp"
+          "${BLAS_PAR_LIBRARIES}"
+          ""
+          )
+        if(NOT LAPACK_FIND_QUIETLY)
+          if(LAPACK_LIBRARIES)
+            message(STATUS "Looking for IBM ESSL MT LAPACK: found")
+          else()
+            message(STATUS "Looking for IBM ESSL MT LAPACK: not found")
+          endif()
         endif()
-      endif()
-      if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
-          set (LAPACK_VENDOR_FOUND "Apple Accelerate")
-      endif()
-    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}"
-        ""
-        )
-      if(NOT LAPACK_FIND_QUIETLY)
-        if(LAPACK_LIBRARIES)
-          message(STATUS "Looking for NAS LAPACK: found")
-        else()
-          message(STATUS "Looking for NAS LAPACK: not found")
+        if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
+            set (LAPACK_VENDOR_FOUND "IBM ESSL MT")
         endif()
       endif()
-      if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
-          set (LAPACK_VENDOR_FOUND "NAS")
-      endif()
-    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};${LM}"
-        ""
-        )
-      if(NOT LAPACK_FIND_QUIETLY)
-        if(LAPACK_LIBRARIES)
-          message(STATUS "Looking for Generic LAPACK: found")
-        else()
-          message(STATUS "Looking for Generic LAPACK: not found")
+    endif ()
+    
+    #acml lapack
+    if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All")
+      if (BLAS_LIBRARIES MATCHES ".+acml.+")
+        set (LAPACK_LIBRARIES ${BLAS_LIBRARIES})
+        if(NOT LAPACK_FIND_QUIETLY)
+          if(LAPACK_LIBRARIES)
+            message(STATUS "Looking for ACML LAPACK: found")
+          else()
+            message(STATUS "Looking for ACML LAPACK: not found")
+          endif()
         endif()
-      endif()
-      if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
-          set (LAPACK_VENDOR_FOUND "Netlib or other Generic liblapack")
-      endif()
-    endif ( NOT LAPACK_LIBRARIES )
-  endif ()
+        if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
+            set (LAPACK_VENDOR_FOUND "ACML")
+        endif()
+      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}"
+          ""
+          )
+        if(NOT LAPACK_FIND_QUIETLY)
+          if(LAPACK_LIBRARIES)
+            message(STATUS "Looking for Apple Accelerate LAPACK: found")
+          else()
+            message(STATUS "Looking for Apple Accelerate LAPACK: not found")
+          endif()
+        endif()
+        if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
+            set (LAPACK_VENDOR_FOUND "Apple Accelerate")
+        endif()
+      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}"
+          ""
+          )
+        if(NOT LAPACK_FIND_QUIETLY)
+          if(LAPACK_LIBRARIES)
+            message(STATUS "Looking for NAS LAPACK: found")
+          else()
+            message(STATUS "Looking for NAS LAPACK: not found")
+          endif()
+        endif()
+        if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
+            set (LAPACK_VENDOR_FOUND "NAS")
+        endif()
+      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};${LM}"
+          ""
+          )
+        if(NOT LAPACK_FIND_QUIETLY)
+          if(LAPACK_LIBRARIES)
+            message(STATUS "Looking for Generic LAPACK: found")
+          else()
+            message(STATUS "Looking for Generic LAPACK: not found")
+          endif()
+        endif()
+        if (LAPACK_LIBRARIES AND NOT LAPACK_VENDOR_FOUND)
+            set (LAPACK_VENDOR_FOUND "Netlib or other Generic liblapack")
+        endif()
+      endif ( NOT LAPACK_LIBRARIES )
+    endif ()
+  endif( (NOT LAPACK_FOUND_WITH_PKGCONFIG) OR LAPACK_GIVEN_BY_USER )
+  
 else(BLAS_FOUND)
   message(STATUS "LAPACK requires BLAS")
 endif(BLAS_FOUND)