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