diff --git a/CMakeLists.txt b/CMakeLists.txt
index 04b08f506b621747f83bd4f18387f5f516dd1a1f..ac3fd48459c81c43adfa0b07b32f5b6e058aa51f 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -180,10 +180,10 @@ endif()
 # --- FFTW ---
 if(WITH_FFTW)
     set(FIND_FFTW_VERBOSE VERBOSE_MODE)
-    set(FIND_FFTW_DEBUG OFF)
+    set(FIND_FFTW_DEBUG ON)
     compile_with(FFTW 
       REQUIRED COMPONENTS Fftw3d Fftw3f Fftw3d-mpi Fftw3f-mpi
-      OPTIONAL_COMPONENTS Fftw3l)# Fftw3q)
+      OPTIONAL_COMPONENTS Fftw3l Fftw3l-mpi Fftw3q)
     set(dirlist)
 
     foreach(_file ${FFTW_LIBRARIES})
diff --git a/cmake/FindFFTW.cmake b/cmake/FindFFTW.cmake
index 74af7a02e5f76c32147de5f9352264695f53097d..ed244493e5ade01e0f708009fa0dd6a48b18b18b 100644
--- a/cmake/FindFFTW.cmake
+++ b/cmake/FindFFTW.cmake
@@ -89,11 +89,11 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
 
     # -- find library name given the component name
     string(REPLACE "fftw3d" "fftw3" library "${component}")
-   
+
     if(FIND_FFTW_DEBUG)
         message("\tFFTW::${fftw_comp}:${COMPONENT}:${component}, LIB=${library} HEADER=${header}")
     endif()
-    
+
     # -- use pkg-config to get hints about paths
     pkg_check_modules(${COMPONENT}_PKGCONF ${library} ${header} QUIET)
 
@@ -103,7 +103,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
         NAMES ${header}
         PATHS ${FFTW_INCLUDE_DIRS}
         NO_DEFAULT_PATH
-    )
+        )
     find_path(
         ${COMPONENT}_INCLUDE_DIR
         NAMES ${header}
@@ -111,13 +111,13 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
         PATHS ${${COMPONENT}_PKGCONF_INCLUDE_DIRS}
         PATH_SUFFIXES include
         NO_DEFAULT_PATH
-    )
+        )
     # -- search in default locations only if last search failed
     find_path(${COMPONENT}_INCLUDE_DIR NAMES ${header}
-            PATHS ENV INCLUDE 
-                  ENV PATH 
-                  ENV C_INCLUDE_PATH 
-                  ENV CXX_INCLUDE_PATH 
+        PATHS ENV INCLUDE 
+        ENV PATH 
+        ENV C_INCLUDE_PATH 
+        ENV CXX_INCLUDE_PATH 
         )
 
     if(${${COMPONENT}_INCLUDE_DIR} STREQUAL "${COMPONENT}_INCLUDE_DIR-NOTFOUND")
@@ -128,27 +128,27 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
 
     # -- find library
     find_library(
-      ${COMPONENT}_LIBRARY
-      NAMES ${library}
-      PATHS ${FFTW_LIBRARY_DIRS}
-      NO_DEFAULT_PATH
-    )
+        ${COMPONENT}_LIBRARY
+        NAMES ${library}
+        PATHS ${FFTW_LIBRARY_DIRS}
+        NO_DEFAULT_PATH
+        )
     find_library(
-      ${COMPONENT}_LIBRARY
-      NAMES ${library}
-      PATHS ${fftw_DIR} 
-      PATHS ${${COMPONENT}_INCLUDE_DIR}/.. 
-      PATHS ${${COMPONENT}_PKGCONF_LIBRARY_DIRS}}
-      PATH_SUFFIXES lib
-      NO_DEFAULT_PATH
-    )
+        ${COMPONENT}_LIBRARY
+        NAMES ${library}
+        PATHS ${fftw_DIR} 
+        PATHS ${${COMPONENT}_INCLUDE_DIR}/.. 
+        PATHS ${${COMPONENT}_PKGCONF_LIBRARY_DIRS}}
+        PATH_SUFFIXES lib
+        NO_DEFAULT_PATH
+        )
     # -- default locations
     find_library(${COMPONENT}_LIBRARY 
         NAMES ${library}
         PATHS ENV LIBRARY_PATH 
-              ENV LD_LIBRARY_PATH  
-              ENV DYLD_LIBRARY_PATH)
-    
+        ENV LD_LIBRARY_PATH  
+        ENV DYLD_LIBRARY_PATH)
+
     # -- if component is required append it to required vars
     if(FFTW_FIND_REQUIRED_${fftw_comp})
         list(APPEND FFTW_REQUIRED_INCLUDE_DIRS ${COMPONENT}_INCLUDE_DIR)
@@ -163,28 +163,31 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
         #set(${COMPONENT}_LIBRARY "${library}")
         set(LIBRARY_DIR_FOUND TRUE)
     endif()
-    
+
     # -- find quadmath library if required
     string(FIND ${component} "fftw3q" FFTWQ_POS)
     if(FFTWQ_POS EQUAL 0)
         if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
             set(DEPENDENCIES_FOUND FALSE) # -- only gcc supports quadmaths
+        else()
+            find_library(QUADMATHLIB
+                NAMES quadmath
+                PATHS ENV LIBRARY_PATH 
+                      ENV LD_LIBRARY_PATH  
+                      ENV DYLD_LIBRARY_PATH)
+          if(${QUADMATHLIB} STREQUAL "QUADMATHLIB-NOTFOUND")
+              set(DEPENDENCIES_FOUND FALSE)
           else()
-			find_library(QUADMATHLIB
-			  NAMES quadmath
-			  )
-			if(QUADMATHLIB_FOUND)
-			  list(APPEND ${COMPONENT}_LIBRARIES ${QUADMATHLIB})
-			  #list(APPEND ${COMPONENT}_LIBRARIES "quadmath")
-			  list(APPEND ${COMPONENT}_DEFINES "-DHAS_QUADMATHS")
-			  list(APPEND FFTW_COMPILE_FLAGS "-fext-numeric-literals")
-			  set(DEPENDENCIES_FOUND TRUE)
-			endif()
-		  endif()
-    else()
+              list(APPEND ${COMPONENT}_LIBRARIES ${QUADMATHLIB})
+              list(APPEND ${COMPONENT}_DEFINES "-DHAS_QUADMATHS")
+              list(APPEND FFTW_COMPILE_FLAGS "-fext-numeric-literals")
+              set(DEPENDENCIES_FOUND TRUE)
+          endif()
+      endif()
+  else()
         set(DEPENDENCIES_FOUND TRUE)
     endif()
-    
+
     if(LIBRARY_DIR_FOUND AND INCLUDE_DIR_FOUND AND DEPENDENCIES_FOUND)
         set(${COMPONENT}_FOUND TRUE)
         list(APPEND ${COMPONENT}_INCLUDE_DIRS ${${COMPONENT}_INCLUDE_DIR})
@@ -196,7 +199,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
         list(APPEND FFTW_LIBRARY_DIRS ${${COMPONENT}_LIBRARY_DIRS})
         list(APPEND FFTW_LIBRARIES    ${${COMPONENT}_LIBRARIES})
         list(APPEND FFTW_DEFINES      ${${COMPONENT}_DEFINES})
-        
+
         if(FIND_FFTW_VERBOSE)
             message("\tFound FFTW::${fftw_comp} with parameters '-I${${COMPONENT}_INCLUDE_DIR} -L${${COMPONENT}_LIBRARY_DIR}  -l${${COMPONENT}_LIBRARY}'.")
         endif()
@@ -204,7 +207,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
         set(${COMPONENT}_FOUND FALSE)
         if(FFTW_FIND_REQUIRED_${fftw_comp})
             if(NOT FFTW_FIND_QUIETLY)
-                message(FATAL_ERROR "Error: Could not find required component FFTW::${fftw_comp} (${COMPONENT}_INCLUDE_DIR='${${COMPONENT}_INCLUDE_DIR}' and ${COMPONENT}_LIBRARY='${${COMPONENT}_LIBRARY}'.)")
+                message(FATAL_ERROR "Error: Could not find required component FFTW::${fftw_comp} (${COMPONENT}_INCLUDE_DIR='${${COMPONENT}_INCLUDE_DIR}' and ${COMPONENT}_LIBRARY='${${COMPONENT}_LIBRARIES}'.)")
             endif()
         else()
             if(FIND_FFTW_VERBOSE)
@@ -215,7 +218,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
             endif()
         endif()
     endif()
-        
+
     unset(FFTWQ_POS)
     unset(library)
     unset(header)
@@ -229,9 +232,9 @@ list(REMOVE_DUPLICATES FFTW_LIBRARIES)
 
 # -- check required variables, version and set FFTW_FOUND to TRUE if ok
 find_package_handle_standard_args(FFTW FOUND_VAR FFTW_FOUND
-                                  REQUIRED_VARS ${FFTW_REQUIRED_LIBRARIES} ${FFTW_REQUIRED_INCLUDE_DIRS} 
-                                  VERSION_VAR FFTW_VERSION_STRING)
-    
+    REQUIRED_VARS ${FFTW_REQUIRED_LIBRARIES} ${FFTW_REQUIRED_INCLUDE_DIRS} 
+    VERSION_VAR FFTW_VERSION_STRING)
+
 if(FIND_FFTW_DEBUG)
     message(STATUS "FFTW_FOUND='${FFTW_FOUND}'")
     message(STATUS "FFTW_INCLUDE_DIRS='${FFTW_INCLUDE_DIRS}'")
diff --git a/setup.py.in b/setup.py.in
index 4f3336ba882f6b1dcad97bd7257a4cce51e80967..fc07171d8e85d9ceec8f272f9b36bd5c306ea6a3 100644
--- a/setup.py.in
+++ b/setup.py.in
@@ -226,10 +226,8 @@ if enable_fortran is "ON":
     withfftw = "@WITH_FFTW@"
     if withfftw is "ON":
         fortran_src.add('f2py/fftw2py.f90')
-        fftwdir = '@FFTWLIB@'
-        #hysoplib.append('fftw3')
-        #hysoplib.append('fftw3_mpi')
-        hysop_libdir.append(fftwdir)
+        fftwdirs = parseCMakeVar('@FFTWLIB@')
+        hysop_libdir.extend(fftwdirs)
     else:
         packages.append('hysop.fakef2py')
         packages.append('hysop.fakef2py.fftw2py')
diff --git a/swig/cpp2hysop.i b/swig/cpp2hysop.i
index 4a2ead8af85d718b21d5e6887b9fc72d7953fd8a..7b1e2deb2418189642c7011528076310973abe8a 100644
--- a/swig/cpp2hysop.i
+++ b/swig/cpp2hysop.i
@@ -3,6 +3,5 @@
 
 %include start.i
 
-%include fftw/fftw.i
 %include hysop++/hysop++.i
 
diff --git a/swig/fftw/fftw.i b/swig/fftw/fftw.i
deleted file mode 100644
index 28ab6fe64ff9d53d0de79c6a0105cb432612354d..0000000000000000000000000000000000000000
--- a/swig/fftw/fftw.i
+++ /dev/null
@@ -1,7 +0,0 @@
-
-// -*- C++ -*-
-%{
-    #include "fftw.hpp"
-%}
-
-%include "fftw.hpp"
diff --git a/swig/hysop++/fft.i b/swig/hysop++/fft.i
index accd97cd996f22ff7ade1b15bd695706b91d4ee7..db23284037b7c4a8d636891d75dbaf95c7295b2a 100644
--- a/swig/hysop++/fft.i
+++ b/swig/hysop++/fft.i
@@ -14,33 +14,35 @@
 #if !defined(FFTW_HAS_FFTW3F_THREADS) || !defined(FFTW_HAS_FFTW3F_OMP)
     %ignore fftwf_init_threads();
     %ignore fftwf_plan_with_nthreads(int);
+    %ignore fftwf_make_planner_thread_safe();
     %ignore fftwf_cleanup_threads();
 #endif
 
 #if !defined(FFTW_HAS_FFTW3D_THREADS) || !defined(FFTW_HAS_FFTW3D_OMP)
     %ignore fftw_init_threads();
     %ignore fftw_plan_with_nthreads(int);
+    %ignore fftw_make_planner_thread_safe();
     %ignore fftw_cleanup_threads();
 #endif
 
 #if !defined(FFTW_HAS_FFTW3L_THREADS) || !defined(FFTW_HAS_FFTW3L_OMP)
     %ignore fftwl_init_threads();
     %ignore fftwl_plan_with_nthreads(int);
+    %ignore fftwl_make_planner_thread_safe();
     %ignore fftwl_cleanup_threads();
 #endif
 
-#ifdef HAS_QUADMATHS
-    #if !defined(FFTW_HAS_FFTW3Q_THREADS) || !defined(FFTW_HAS_FFTW3Q_OMP)
-        %ignore fftwq_init_threads();
-        %ignore fftwq_plan_with_nthreads(int);
-        %ignore fftwq_cleanup_threads();
-    #endif
+#if !defined(FFTW_HAS_FFTW3Q_THREADS) || !defined(FFTW_HAS_FFTW3Q_OMP)
+    %ignore fftwq_init_threads();
+    %ignore fftwq_plan_with_nthreads(int);
+    %ignore fftwq_make_planner_thread_safe();
+    %ignore fftwq_cleanup_threads();
 #endif
+
 %rename(is_) fftw_iodim_do_not_use_me::is;
 %rename(is_) fftw_iodim64_do_not_use_me::is;
 %include "fftw3.h"
 
-
 /* fftw3 c++ wrappers */
 %include "fft/fftw3.h"
 %template(Fftw3f) hysop::fft::Fftw3<float>;
@@ -48,7 +50,6 @@
 %template(Fftw3l) hysop::fft::Fftw3<long double>;
 %template(Fftw3q) hysop::fft::Fftw3<__float128>;
 
-
 /* fft transforms */
 %ignore hysop::fft::operator<<;
 %include "fft/transform.h"