From 299f9f51c580638504e043ae6c4331eeba6db609 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Keck <Jean-Baptiste.Keck@imag.fr>
Date: Wed, 26 Oct 2016 15:10:50 +0200
Subject: [PATCH] fixed build on froggy

---
 CMakeLists.txt       | 35 +++++++++++++++++++----------------
 cmake/FindFFTW.cmake | 22 +++++++++++++++++-----
 setup.py.in          |  7 +++----
 3 files changed, 39 insertions(+), 25 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9deb3e71e..6c586cab4 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -179,11 +179,15 @@ endif()
 
 # --- FFTW ---
 if(WITH_FFTW)
-    set(FIND_FFTW_VERBOSE VERBOSE_MODE)
+    #set(FIND_FFTW_VERBOSE VERBOSE_MODE)
+    set(FIND_FFTW_VERBOSE OFF)
     set(FIND_FFTW_DEBUG OFF)
     compile_with(FFTW 
-      REQUIRED COMPONENTS Fftw3d Fftw3f Fftw3d-mpi Fftw3f-mpi
-      OPTIONAL_COMPONENTS Fftw3l Fftw3q)
+      REQUIRED COMPONENTS Fftw3f Fftw3d
+                          Fftw3f-threads Fftw3d-threads 
+                          Fftw3f-mpi Fftw3d-mpi
+      OPTIONAL_COMPONENTS Fftw3l Fftw3q 
+                          Fftw3l-threads Fftw3q-threads)
     set(dirlist)
 
     foreach(_file ${FFTW_LIBRARIES})
@@ -324,25 +328,24 @@ if(WITH_LIB_CXX)
   if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
       set(CXX_WARNING_FLAGS "-W -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-unused-local-typedefs -Wno-missing-braces")
   elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-      set(CXX_WARNING_FLAGS "-W -Wall -Wextra -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-parameter -Wno-unused-local-typedefs ")
+      set(CXX_WARNING_FLAGS "-W -Wall -Wextra -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-parameter -Wno-unused-local-typedefs -Wno-deprecated-declarations")
       #elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
       #elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
   else()
       set(CXX_WARNING_FLAGS "")
   endif()
-  set(CMAKE_CXX_FLAGS              "${CMAKE_CXX_FLAGS} ${CXX_WARNING_FLAGS} ${FFTW_COMPILE_FLAGS} -fPIC -std=c++11")
-  set(CMAKE_CXX_FLAGS_DEBUG          "${CMAKE_CXX_FLAGS_DEBUG}")
-  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
-  set(CMAKE_CXX_FLAGS_RELEASE        "${CMAKE_CXX_FLAGS_RELEASE}")
-  set(CMAKE_EXE_LINKER_FLAGS         "${CMAKE_EXE_LINKER_FLAGS}")
-
-  set(CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-  set(CXX_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
-  set(CXX_EXT_INCLUDES  ${Boost_INCLUDE_DIR} ${PYTHON_INCLUDE_DIR} ${FFTW_INCLUDE_DIRS})
-  set(CXX_EXT_LIBS ${PYTHON_LIBRARIES} ${FFTW_LIBRARIES} ${Boost_LIBRARIES})
-  set(CXX_EXT_LIB_DIRS ${FFTW_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
-  set(CXX_EXTRA_DEFINES ${FFTW_DEFINES} -DHAS_EXTERN_TEMPLATES)
 
+  list(APPEND CMAKE_CXX_FLAGS "${CXX_WARNING_FLAGS} ${FFTW_COMPILE_FLAGS} -fPIC -std=c++11")
+  list(APPEND CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed -ldl -lutil")
+
+  set(CXX_FLAGS ${CMAKE_CXX_FLAGS})
+  set(CXX_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
+  set(CXX_EXTRA_DEFINES ${FFTW_DEFINES} "-DHAS_EXTERN_TEMPLATES")
+
+  set(CXX_EXT_INCLUDES ${Boost_INCLUDE_DIR} ${PYTHON_INCLUDE_DIR} ${FFTW_INCLUDE_DIRS})
+  set(CXX_EXT_LIBS ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${FFTW_LIBRARIES})
+  set(CXX_EXT_LIB_DIR ${Boost_LIBRARY_DIRS} ${PYTHON_LIBRARY_DIRS} ${FFTW_LIBRARY_DIRS})
+  
   set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
   set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
 
diff --git a/cmake/FindFFTW.cmake b/cmake/FindFFTW.cmake
index 723b180da..544a35159 100644
--- a/cmake/FindFFTW.cmake
+++ b/cmake/FindFFTW.cmake
@@ -71,6 +71,13 @@ set(FFTW_VERSION_STRING ${FFTW_FIND_VERSION})
 if(FIND_FFTW_VERBOSE)
     message(STATUS "Entering FindFFTW.cmake in verbose mode:")
 endif()
+    
+# -- initialize empty lists
+list(APPEND FFTW_INCLUDE_DIRS "")
+list(APPEND FFTW_LIBRARY_DIRS "")
+list(APPEND FFTW_LIBRARIES    "")
+list(APPEND FFTW_DEFINES "")
+list(APPEND FFTW_COMPILE_FLAGS "")
 
 foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     string(REPLACE "-" "_" fftw_comp_no_dash "${fftw_comp}")
@@ -81,6 +88,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     if(${COMPONENT}_FOUND)
         continue()
     endif()
+       
 
     # -- find header name given the component name
     string(REGEX REPLACE "_(omp|threads)" "" component_without_ext "${component}")
@@ -183,7 +191,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
             else()
                 list(APPEND ${COMPONENT}_LIBRARIES "${QUADMATH_LIBRARY}")
                 list(APPEND ${COMPONENT}_DEFINES "-DHAS_QUADMATHS")
-                list(APPEND FFTW_COMPILE_FLAGS "-fext-numeric-literals")
+                list(APPEND ${COMPONENT}_COMPILE_FLAGS "-fext-numeric-literals")
                 set(DEPENDENCIES_FOUND TRUE)
             endif()
         else()
@@ -200,10 +208,11 @@ 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_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(FIND_FFTW_VERBOSE)
             message("\tFound FFTW::${fftw_comp} with parameters '-I${${COMPONENT}_INCLUDE_DIR} -L${${COMPONENT}_LIBRARY_DIR}  -l${${COMPONENT}_LIBRARY}'.")
@@ -231,9 +240,12 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     unset(component)
     unset(COMPONENT)
 endforeach()
+
 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)
 
 # -- 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 4f3336ba8..e2df2a4fb 100644
--- a/setup.py.in
+++ b/setup.py.in
@@ -226,10 +226,9 @@ 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@')
+        for dir in fftwdirs:
+            hysop_libdir.append(dir)
     else:
         packages.append('hysop.fakef2py')
         packages.append('hysop.fakef2py.fftw2py')
-- 
GitLab