diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f38049208e1f58cf9a821ac36b1fd5eb657d6c7..dc97140d17d8858eab25d09fe15c4442128f73a7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,7 +39,7 @@ option(WITH_SCALES "compile/create scales lib and link it with HySoP. Default =
 option(WITH_PARALLEL_COMPRESSED_HDF5 "Try to enable parallel compressed hdf5 interface. Default = ON." ON)
 option(WITH_FFTW "Link with fftw library (required for some HySoP solvers), default = ON" ON)
 option(WITH_EXTRAS "Link with some extra fortran libraries (like arnoldi solver), default = OFF" OFF)
-option(WITH_GPU "Use of GPU (required for some HySoP solvers), default = ON" ON)
+option(WITH_OPENCL "Use of GPU (required for some HySoP solvers), default = ON" ON)
 option(WITH_MAIN_FORTRAN "Create an executable (test purpose) from fortran sources in src/main, linked with libhysop, default = OFF" OFF)
 option(WITH_MAIN_CXX "Create an executable (test purpose) from cxx sources in src/hysop++/main, linked with libhysop, default = OFF" OFF)
 option(PROFILE "Enable profiling mode for HySoP. Can also be enabled with HYSOP_PROFILE environment variable. Default = OFF" OFF)
@@ -187,9 +187,8 @@ endif()
 
 # --- FFTW ---
 if(WITH_FFTW)
-    set(FIND_FFTW_VERBOSE OFF)
-    set(FIND_FFTW_DEBUG OFF)
-    set(FIND_FFTW_SHARED_ONLY ON)
+    set(FIND_FFTW_VERBOSE CACHE BOOL OFF)
+    set(FIND_FFTW_DEBUG CACHE BOOL OFF)
     compile_with(FFTW
       REQUIRED COMPONENTS Fftw3f Fftw3d
                           Fftw3f-mpi Fftw3d-mpi
@@ -249,7 +248,7 @@ else()
 endif()
 
 # ========= Check which opencl devices are available on the system =========
-if(WITH_GPU)
+if(WITH_OPENCL)
   execute_process(
     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/opencl_explore.py "EXPLORE")
   execute_process(
@@ -645,15 +644,15 @@ if(VERBOSE_MODE)
   message(STATUS " Project uses MPI : ${USE_MPI}")
   message(STATUS " Project uses Scales : ${WITH_SCALES}")
   message(STATUS " Project uses FFTW : ${WITH_FFTW}")
-  message(STATUS " Project uses GPU : ${WITH_GPU}")
-  message(STATUS " Project uses parallel hdf5 interface : ${H5PY_PARALLEL_COMPRESSION_ENABLED}")
+  message(STATUS " Project uses OpenCL : ${WITH_OPENCL}")
+  message(STATUS " Project uses parallel HDF5 interface : ${H5PY_PARALLEL_COMPRESSION_ENABLED}")
   message(STATUS " ${PROJECT_NAME} profile mode : ${PROFILE}")
   message(STATUS " ${PROJECT_NAME} debug   mode : ${DEBUG}")
   message(STATUS " Enable -OO run? : ${OPTIM}")
   if(DOUBLEPREC)
       message(STATUS " Default real numbers precision : double.")
   else()
-      message(STATUS " Default real numbers precision : simple.")
+      message(STATUS " Default real numbers precision : single.")
   endif()
   message(STATUS "====================== ======= ======================")
   message(STATUS " ")
diff --git a/cmake/FindFFTW.cmake b/cmake/FindFFTW.cmake
index badd224e19a624065bc60607bef28593ef54acd0..b77e3f331202295e8a48ad4e5463e0edba677222 100644
--- a/cmake/FindFFTW.cmake
+++ b/cmake/FindFFTW.cmake
@@ -65,7 +65,7 @@
 # Set ${FIND_FFTW_DEBUG}   to ON before find_package call to enable debug mode
 #
 # Written by F. Pérignon, nov/2009
-# Updated by J-B. Keck, feb/2016
+# Updated by J-B. Keck, feb/2016, march/2020
 # inspired from http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries
 
 find_package(PkgConfig)
@@ -86,14 +86,18 @@ list(APPEND FFTW_COMPILE_FLAGS "")
 
 # -- rename library to match shared or static constraints
 #Check whether to search static or dynamic libs
-set( CMAKE_FIND_LIBRARY_SUFFIXES_SAV ${CMAKE_FIND_LIBRARY_SUFFIXES} )
+set( CMAKE_FIND_LIBRARY_SUFFIXES_SAVE ${CMAKE_FIND_LIBRARY_SUFFIXES} )
 
-if( ${FFTW_USE_STATIC_LIBS} )
-  set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} )
-else()
+if( ${FIND_FFTW_SHARED_ONLY} )
   set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX} )
+elseif( ${FIND_FFTW_STATIC_ONLY} )
+  set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} )
 endif()
 
+# -- always look for base fftw3 library
+#   (it contains common functions for all fftw libraries)
+list(APPEND FFTW_FIND_COMPONENTS "fftw3d")
+
 foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     string(REPLACE "-" "_" fftw_comp_no_dash "${fftw_comp}")
     string(TOLOWER ${fftw_comp_no_dash} component)
@@ -112,8 +116,6 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     # -- find library name given the component name
     string(REPLACE "fftw3d" "fftw3" library "${component}")
 
-    set(library "lib${library}${CMAKE_FIND_LIBRARY_SUFFIXES}")
-
     if(FIND_FFTW_DEBUG)
         message("\tFFTW::${fftw_comp}:${COMPONENT}:${component}, LIB=${library} HEADER=${header}")
     endif()
@@ -131,7 +133,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     find_path(
         ${COMPONENT}_INCLUDE_DIR
         NAMES ${header}
-        PATHS ${fftw_DIR} 
+        PATHS ${FFTW_DIR} 
         PATHS ${${COMPONENT}_PKGCONF_INCLUDE_DIRS}
         PATH_SUFFIXES include
         NO_DEFAULT_PATH
@@ -160,7 +162,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     find_library(
         ${COMPONENT}_LIBRARY
         NAMES ${library}
-        PATHS ${fftw_DIR} 
+        PATHS ${FFTW_DIR} 
         PATHS ${${COMPONENT}_INCLUDE_DIR}/.. 
         PATHS ${${COMPONENT}_PKGCONF_LIBRARY_DIRS}}
         PATH_SUFFIXES lib
@@ -184,7 +186,6 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
         set(LIBRARY_DIR_FOUND FALSE)
     else()
         get_filename_component(${COMPONENT}_LIBRARY_DIR "${${COMPONENT}_LIBRARY}" DIRECTORY)
-        #set(${COMPONENT}_LIBRARY "${library}")
         set(LIBRARY_DIR_FOUND TRUE)
     endif()
 
@@ -223,11 +224,15 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
         list(APPEND ${COMPONENT}_LIBRARIES    ${${COMPONENT}_LIBRARY})
         list(APPEND ${COMPONENT}_DEFINES "-DFFTW_HAS_${COMPONENT}")
         
-        list(APPEND FFTW_INCLUDE_DIRS   ${${COMPONENT}_INCLUDE_DIRS})
-        list(APPEND FFTW_LIBRARY_DIRS   ${${COMPONENT}_LIBRARY_DIRS})
-        list(APPEND FFTW_LIBRARIES      ${${COMPONENT}_LIBRARIES})
-        list(APPEND FFTW_DEFINES        ${${COMPONENT}_DEFINES})
-        list(APPEND FFTW_COMPILE_FLAGS  ${${COMPONENT}_COMPILE_FLAGS})
+        if ( "${COMPONENT}" STREQUAL "FFTW3D" )
+            # will be added last (link order)
+        else()
+            list(APPEND FFTW_INCLUDE_DIRS   ${${COMPONENT}_INCLUDE_DIRS})
+            list(APPEND FFTW_LIBRARY_DIRS   ${${COMPONENT}_LIBRARY_DIRS})
+            list(APPEND FFTW_LIBRARIES      ${${COMPONENT}_LIBRARIES})
+            list(APPEND FFTW_DEFINES        ${${COMPONENT}_DEFINES})
+            list(APPEND FFTW_COMPILE_FLAGS  ${${COMPONENT}_COMPILE_FLAGS})
+        endif()
         
         if(FIND_FFTW_VERBOSE)
             message("\tFound FFTW::${fftw_comp} with parameters '-I${${COMPONENT}_INCLUDE_DIR} -L${${COMPONENT}_LIBRARY_DIR}  -l${${COMPONENT}_LIBRARY}'.")
@@ -256,12 +261,21 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     unset(COMPONENT)
 endforeach()
 
+# Here base FFTW3 library should have been found
+# and it is added last for good link order.
+list(APPEND FFTW_INCLUDE_DIRS   ${FFTW3D_INCLUDE_DIRS})
+list(APPEND FFTW_LIBRARY_DIRS   ${FFTW3D_LIBRARY_DIRS})
+list(APPEND FFTW_LIBRARIES      ${FFTW3D_LIBRARIES})
+list(APPEND FFTW_DEFINES        ${FFTW3D_DEFINES})
+list(APPEND FFTW_COMPILE_FLAGS  ${FFTW3D_COMPILE_FLAGS})
+
 list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS)
 list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS)
 list(REMOVE_DUPLICATES FFTW_LIBRARIES)
 list(REMOVE_DUPLICATES FFTW_DEFINES)
 list(REMOVE_DUPLICATES FFTW_COMPILE_FLAGS)
-set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV} )
+
+set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAVE} )
 
 # -- check required variables, version and set FFTW_FOUND to TRUE if ok
 find_package_handle_standard_args(FFTW FOUND_VAR FFTW_FOUND
diff --git a/setup.py.in b/setup.py.in
index 1b5557ca5d7cd83483901459c3dd08a5f175aeca..0c61ea8347546f7c1e8e65ff5c3cf2e43354aa3b 100644
--- a/setup.py.in
+++ b/setup.py.in
@@ -238,11 +238,11 @@ def create_swig_extension(name, inc_dirs, src_dirs=None, sources=None):
 # ------------ Set list of packages required to build the module -------------
 # List of modules (directories) to be included
 with_test = "@WITH_TESTS@" is "ON"
-with_gpu = "@WITH_GPU@" is "ON"
+with_opencl = "@WITH_OPENCL@" is "ON"
 exclude=[]
 if not with_test:
    exclude.append('*tests*')
-if not with_gpu:
+if not with_opencl:
    exclude.append('*opencl*')
 packages = find_packages(exclude=exclude, where="@CMAKE_SOURCE_DIR@")