From 78ce54c73c04e2d5b0ed5d8434be874e100a3ffa Mon Sep 17 00:00:00 2001
From: Christophe Picard <christophe.picard@univ-grenoble-alpes.fr>
Date: Thu, 9 Nov 2017 14:12:09 +0100
Subject: [PATCH] Add automatic detection of dynamic extension

---
 cmake/FindFFTW.cmake | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/cmake/FindFFTW.cmake b/cmake/FindFFTW.cmake
index c6a42e4fb..513498171 100644
--- a/cmake/FindFFTW.cmake
+++ b/cmake/FindFFTW.cmake
@@ -18,11 +18,11 @@
 #  set(FIND_FFTW_DEBUG OFF)  (optional)
 #  set(FIND_FFTW_SHARED_ONLY ON) (optional)
 #  find_package(FFTW 
-#      REQUIRED COMPONENTS Fftw3f Fftw3d 
-#      OPTIONAL_COMPONENTS Fftw3l Fftw3q 
-#      OPTIONAL_COMPONENTS Fftw3f-mpi Fftw3d-mpi Fftw3l-mpi 
-#      OPTIONAL_COMPONENTS Fttw3f-omp Fftw3d-omp Fftw3l-omp Fftw3q-omp
-#      OPTIONAL_COMPONENTS Fttw3f-threads Fftw3d-threads Fftw3l-threads Fftw3q-threads)
+#      REQUIRED COMPONENTS fftw3f fftw3d 
+#      OPTIONAL_COMPONENTS fftw3l fftw3q 
+#      OPTIONAL_COMPONENTS fftw3f-mpi fftw3d-mpi fftw3l-mpi 
+#      OPTIONAL_COMPONENTS fftw3f-omp fftw3d-omp fftw3l-omp fftw3q-omp
+#      OPTIONAL_COMPONENTS fftw3f-threads fftw3d-threads fftw3l-threads fftw3q-threads)
 #
 # == Defined variables ==
 #
@@ -84,6 +84,17 @@ list(APPEND FFTW_LIBRARIES    "")
 list(APPEND FFTW_DEFINES "")
 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} )
+
+    if( ${FFTW_USE_STATIC_LIBS} )
+      set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} )
+    else()
+      set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX} )
+    endif()
+
+    
 foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     string(REPLACE "-" "_" fftw_comp_no_dash "${fftw_comp}")
     string(TOLOWER ${fftw_comp_no_dash} component)
@@ -103,12 +114,7 @@ foreach(fftw_comp ${FFTW_FIND_COMPONENTS})
     # -- find library name given the component name
     string(REPLACE "fftw3d" "fftw3" library "${component}")
 
-    # -- rename library to match shared or static constraints
-    if(FIND_FFTW_SHARED_ONLY)
-	set(library "lib${library}.so")
-    elseif(FIND_FFTW_STATIC_ONLY)
-	set(library "lib${library}.a")
-    endif()
+    set(library "lib${library}${CMAKE_FIND_LIBRARY_SUFFIXES}")
 
     if(FIND_FFTW_DEBUG)
         message("\tFFTW::${fftw_comp}:${COMPONENT}:${component}, LIB=${library} HEADER=${header}")
@@ -257,6 +263,7 @@ 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} )
 
 # -- check required variables, version and set FFTW_FOUND to TRUE if ok
 find_package_handle_standard_args(FFTW FOUND_VAR FFTW_FOUND
-- 
GitLab