Skip to content
Snippets Groups Projects
Commit 9934e899 authored by Jean-Baptiste Keck Jean-Baptiste.Keck@imag.fr's avatar Jean-Baptiste Keck Jean-Baptiste.Keck@imag.fr
Browse files

fixed fftw cmake

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