diff --git a/CMake/FindTBB.cmake b/CMake/FindTBB.cmake index 71565cc7a05e3165877c0234a4d4cd2e038693a2..4ad009035a8d08e1e6de49632b347e727ba3fa17 100644 --- a/CMake/FindTBB.cmake +++ b/CMake/FindTBB.cmake @@ -245,37 +245,36 @@ unset(_TBB_INCLUDE_DIRS CACHE) # Versions # ---------------------------------------------------------------------------- -SET(_TBB_VERSION_INTERFACE ${TBB_VERSION_INTERFACE}) -IF( (NOT TBB_VERSION_INTERFACE) AND TBB_INCLUDE_DIRS AND NOT DEFINED ENV{ONEAPI_ROOT}) - FILE(READ "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h" _FILE) - set(_TBB_VERSION_MAJOR 0) - set(_TBB_VERSION_MINOR 0) +# Find file containing version info +IF(EXISTS "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h") + FILE(READ "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h" _FILE) # older TBB +ELSEIF(EXISTS "${TBB_INCLUDE_DIRS}/oneapi/tbb/version.h") + FILE(READ "${TBB_INCLUDE_DIRS}/oneapi/tbb/version.h" _FILE) # newer oneTBB +ELSE() + MESSAGE(STATUS "TBB_LIBRARIES: ${TBB_LIBRARIES}") + MESSAGE(STATUS "TBB_INCLUDE_DIRS: ${TBB_INCLUDE_DIRS}") + MESSAGE(FATAL_ERROR "Cannot find version file in ${TBB_INCLUDE_DIRS}/tbb.") +ENDIF() +# If file has been found, read the version +IF (DEFINED _FILE) STRING(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" _TBB_VERSION_INTERFACE "${_FILE}") STRING(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" _TBB_VERSION_MAJOR "${_FILE}") STRING(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" _TBB_VERSION_MINOR "${_FILE}") - set(_TBB_VERSION_STRING "${_TBB_VERSION_MAJOR}.${_TBB_VERSION_MINOR}") - unset(_FILE) -ENDIF() -IF(NOT TBB_VERSION_INTERFACE) - SET(TBB_VERSION_INTERFACE ${_TBB_VERSION_INTERFACE} CACHE STRING "" FORCE) - SET(TBB_VERSION_MAJOR ${_TBB_VERSION_MAJOR} CACHE INTERNAL "" FORCE) - SET(TBB_VERSION_MINOR ${_TBB_VERSION_MINOR} CACHE INTERNAL "" FORCE) - SET(TBB_VERSION_STRING ${_TBB_VERSION_STRING} CACHE STRING "" FORCE) - mark_as_advanced(TBB_VERSION_INTERFACE) - mark_as_advanced(TBB_VERSION_MAJOR) - mark_as_advanced(TBB_VERSION_MINOR) - mark_as_advanced(TBB_VERSION_STRING) + STRING(REGEX REPLACE ".*#define TBB_VERSION_PATCH ([0-9]+).*" "\\1" _TBB_VERSION_PATCH "${_FILE}") + SET(TBB_INTERFACE_VERSION ${_TBB_INTERFACE_VERSION}) + SET(TBB_VERSION ${_TBB_VERSION_MAJOR}.${_TBB_VERSION_MINOR}.${_TBB_VERSION_PATCH}) + IF (_VERB) + MESSAGE(STATUS "TBB version: ${TBB_VERSION} (${TBB_INTERFACE_VERSION})") + ENDIF() ENDIF() # ---------------------------------------------------------------------------- include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set TBB_FOUND to TRUE # if all listed variables are TRUE -find_package_handle_standard_args(TBB DEFAULT_MSG - TBB_LIBRARIES TBB_INCLUDE_DIRS - TBB_LIB_PATH TBB_LIB_PATH_DEBUG) - -#MESSAGE(STATUS "TBB_FOUND = ${TBB_FOUND}") +find_package_handle_standard_args(TBB + REQUIRED_VARS TBB_LIBRARIES TBB_INCLUDE_DIRS TBB_LIB_PATH TBB_LIB_PATH_DEBUG + VERSION_VAR TBB_VERSION) # ---------------------------------------------------------------------------- unset(_VERB) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b5da42d071ae94d6989d1bb93a7538f3467114a..8bb8eca85ec84335a03f532aede76d2d355420f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,11 +15,7 @@ # ---------------------------------------------------------------------------- PROJECT(amfe) # ---------------------------------------------------------------------------- -CMAKE_MINIMUM_REQUIRED(VERSION 3.1) -IF(${CMAKE_VERSION} VERSION_GREATER "3.14.0") # we might want to update the project and use the NEW behavior here - cmake_policy(SET CMP0078 OLD) - cmake_policy(SET CMP0086 OLD) -ENDIF() +CMAKE_MINIMUM_REQUIRED(VERSION 3.14) # -- I/O # Lib/Exe dir @@ -66,17 +62,12 @@ OPTION(USE_MUMPS "Compile with MUMPS" ON) # -- DEPENDENCIES # Python -IF (CMAKE_VERSION VERSION_LESS 3.12.0) - FIND_PACKAGE(PythonInterp 3.6 REQUIRED) - FIND_PACKAGE(PythonLibs 3.6 REQUIRED) -ELSE() - FIND_PACKAGE(Python3 COMPONENTS Interpreter Development) - # use Python3_ROOT_DIR if wrong python found (e.g. anaconda) - SET(PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) - SET(PYTHON_LIBRARIES ${Python3_LIBRARIES}) - SET(PYTHON_INCLUDE_PATH ${Python3_INCLUDE_DIRS}) - SET(PYTHONLIBS_VERSION_STRING ${Python3_VERSION}) -ENDIF() +# use Python3_ROOT_DIR if wrong python found (e.g. anaconda) +FIND_PACKAGE(Python3 COMPONENTS Interpreter Development) +SET(PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) +SET(PYTHON_LIBRARIES ${Python3_LIBRARIES}) +SET(PYTHON_INCLUDE_PATH ${Python3_INCLUDE_DIRS}) +SET(PYTHONLIBS_VERSION_STRING ${Python3_VERSION}) MESSAGE(STATUS "PYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}") MESSAGE(STATUS "PYTHON_LIBRARIES:FILEPATH=${PYTHON_LIBRARIES}") MESSAGE(STATUS "PYTHON_INCLUDE_PATH:FILEPATH=${PYTHON_INCLUDE_PATH}") diff --git a/fwk/_src/CMakeLists.txt b/fwk/_src/CMakeLists.txt index 78c8658478fbd983c3d1625165f0e6957d27a216..a1e220fd29675d98f3d7a279044ef7bc3b6d74a3 100644 --- a/fwk/_src/CMakeLists.txt +++ b/fwk/_src/CMakeLists.txt @@ -19,29 +19,16 @@ INCLUDE(${SWIG_USE_FILE}) FILE(GLOB SRCS *.h *.cpp *.inl *.swg) FILE(GLOB ISRCS *.i) -SET(CMAKE_SWIG_FLAGS "") SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES CPLUSPLUS ON) +SET(CMAKE_SWIG_FLAGS "-interface" "_fwkw") # avoids "import _module_d" with MSVC/Debug +SWIG_ADD_LIBRARY(fwkw LANGUAGE python SOURCES ${ISRCS} ${SRCS}) +SET_PROPERTY(TARGET fwkw PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON) +MACRO_DebugPostfix(fwkw) -SET(SWINCFLAGS --I${PROJECT_SOURCE_DIR}/fwk/src -) -SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES SWIG_FLAGS "${SWINCFLAGS}") - -if (${CMAKE_VERSION} VERSION_LESS "3.8.0") - SWIG_ADD_MODULE(fwkw python ${ISRCS} ${SRCS}) -else() - SWIG_ADD_LIBRARY(fwkw LANGUAGE python SOURCES ${ISRCS} ${SRCS}) -endif() -MACRO_DebugPostfix(_fwkw) - -TARGET_INCLUDE_DIRECTORIES(_fwkw PRIVATE ${PROJECT_SOURCE_DIR}/fwk/_src - ${PYTHON_INCLUDE_PATH} -) - -SWIG_LINK_LIBRARIES(fwkw - fwk ${PYTHON_LIBRARIES} -) +TARGET_INCLUDE_DIRECTORIES(fwkw PRIVATE ${PROJECT_SOURCE_DIR}/fwk/_src + ${PYTHON_INCLUDE_PATH}) +TARGET_LINK_LIBRARIES(fwkw PRIVATE fwk ${PYTHON_LIBRARIES}) INSTALL(FILES "${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE}/fwkw.py" DESTINATION ${CMAKE_INSTALL_PREFIX}) -INSTALL(TARGETS _fwkw DESTINATION ${CMAKE_INSTALL_PREFIX}) +INSTALL(TARGETS fwkw DESTINATION ${CMAKE_INSTALL_PREFIX}) diff --git a/tbox/_src/CMakeLists.txt b/tbox/_src/CMakeLists.txt index 1dea57d843faf64c93ee41ba2a9ce4ceee12ea56..02151e8e9b65f760ffb6ce57b29fea66cb388862 100644 --- a/tbox/_src/CMakeLists.txt +++ b/tbox/_src/CMakeLists.txt @@ -19,33 +19,17 @@ INCLUDE(${SWIG_USE_FILE}) FILE(GLOB SRCS *.h *.cpp *.inl *.swg) FILE(GLOB ISRCS *.i) -SET(CMAKE_SWIG_FLAGS "") SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES CPLUSPLUS ON) +SET(CMAKE_SWIG_FLAGS "-interface" "_tboxw") # avoids "import _module_d" with MSVC/Debug +SWIG_ADD_LIBRARY(tboxw LANGUAGE python SOURCES ${ISRCS} ${SRCS}) +SET_PROPERTY(TARGET tboxw PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON) +MACRO_DebugPostfix(tboxw) -SET(SWINCFLAGS --I${PROJECT_SOURCE_DIR}/tbox/src --I${PROJECT_SOURCE_DIR}/tbox/_src --I${PROJECT_SOURCE_DIR}/fwk/src --I${PROJECT_SOURCE_DIR}/fwk/_src -) -SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES SWIG_FLAGS "${SWINCFLAGS}") - -if (${CMAKE_VERSION} VERSION_LESS "3.8.0") - SWIG_ADD_MODULE(tboxw python ${ISRCS} ${SRCS}) -else() - SWIG_ADD_LIBRARY(tboxw LANGUAGE python SOURCES ${ISRCS} ${SRCS}) -endif() -MACRO_DebugPostfix(_tboxw) - -TARGET_INCLUDE_DIRECTORIES(_tboxw PRIVATE ${PROJECT_SOURCE_DIR}/fwk/_src - ${PROJECT_SOURCE_DIR}/tbox/_src - ${PYTHON_INCLUDE_PATH} -) - -SWIG_LINK_LIBRARIES(tboxw - tbox fwk ${PYTHON_LIBRARIES} -) +TARGET_INCLUDE_DIRECTORIES(tboxw PRIVATE ${PROJECT_SOURCE_DIR}/tbox/_src + ${PROJECT_SOURCE_DIR}/fwk/_src + ${PYTHON_INCLUDE_PATH}) +TARGET_LINK_LIBRARIES(tboxw PRIVATE tbox fwk ${PYTHON_LIBRARIES}) INSTALL(FILES "${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE}/tboxw.py" DESTINATION ${CMAKE_INSTALL_PREFIX}) -INSTALL(TARGETS _tboxw DESTINATION ${CMAKE_INSTALL_PREFIX}) +INSTALL(TARGETS tboxw DESTINATION ${CMAKE_INSTALL_PREFIX}) diff --git a/tbox/src/wMshConvert.cpp b/tbox/src/wMshConvert.cpp index 013fff0c07c8539820a1d14ae2fd54138aafa852..dd48f05554736b46383083f81a0a29fa934adb95 100644 --- a/tbox/src/wMshConvert.cpp +++ b/tbox/src/wMshConvert.cpp @@ -22,6 +22,7 @@ #include <fstream> #include <set> #include <algorithm> +#include <limits> using namespace tbox; diff --git a/tboxVtk/_src/CMakeLists.txt b/tboxVtk/_src/CMakeLists.txt index f1ad6f73a27613af52c9e94bbd1f84d55285a4f0..c0f894bba572447026d8d4788e018a614ceb105c 100644 --- a/tboxVtk/_src/CMakeLists.txt +++ b/tboxVtk/_src/CMakeLists.txt @@ -19,35 +19,18 @@ INCLUDE(${SWIG_USE_FILE}) FILE(GLOB SRCS *.h *.cpp *.inl *.swg) FILE(GLOB ISRCS *.i) -SET(CMAKE_SWIG_FLAGS "") SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES CPLUSPLUS ON) +SET(CMAKE_SWIG_FLAGS "-interface" "_tboxVtkw") # avoids "import _module_d" with MSVC/Debug +SWIG_ADD_LIBRARY(tboxVtkw LANGUAGE python SOURCES ${ISRCS} ${SRCS}) +SET_PROPERTY(TARGET tboxVtkw PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON) +MACRO_DebugPostfix(tboxVtkw) -SET(SWINCFLAGS --I${PROJECT_SOURCE_DIR}/tboxVtk/src --I${PROJECT_SOURCE_DIR}/tbox/src --I${PROJECT_SOURCE_DIR}/tbox/_src --I${PROJECT_SOURCE_DIR}/fwk/src --I${PROJECT_SOURCE_DIR}/fwk/_src -) -SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES SWIG_FLAGS "${SWINCFLAGS}") - -if (${CMAKE_VERSION} VERSION_LESS "3.8.0") - SWIG_ADD_MODULE(tboxVtkw python ${ISRCS} ${SRCS}) -else() - SWIG_ADD_LIBRARY(tboxVtkw LANGUAGE python SOURCES ${ISRCS} ${SRCS}) -endif() -MACRO_DebugPostfix(_tboxVtkw) - -TARGET_INCLUDE_DIRECTORIES(_tboxVtkw PRIVATE ${PROJECT_SOURCE_DIR}/tboxVtk/_src - ${PROJECT_SOURCE_DIR}/fwk/_src - ${PROJECT_SOURCE_DIR}/tbox/_src - ${PYTHON_INCLUDE_PATH} -) - -SWIG_LINK_LIBRARIES(tboxVtkw - tboxVtk tbox fwk ${PYTHON_LIBRARIES} -) +TARGET_INCLUDE_DIRECTORIES(tboxVtkw PRIVATE ${PROJECT_SOURCE_DIR}/tboxVtk/_src + ${PROJECT_SOURCE_DIR}/tbox/_src + ${PROJECT_SOURCE_DIR}/fwk/_src + ${PYTHON_INCLUDE_PATH}) +TARGET_LINK_LIBRARIES(tboxVtkw PRIVATE tboxVtk tbox fwk ${PYTHON_LIBRARIES}) INSTALL(FILES "${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE}/tboxVtkw.py" DESTINATION ${CMAKE_INSTALL_PREFIX}) -INSTALL(TARGETS _tboxVtkw DESTINATION ${CMAKE_INSTALL_PREFIX}) +INSTALL(TARGETS tboxVtkw DESTINATION ${CMAKE_INSTALL_PREFIX}) diff --git a/tboxVtk/src/CMakeLists.txt b/tboxVtk/src/CMakeLists.txt index 2d38e5c6013bd1b04b3e5e32b1f2cdbb03524005..288a3a4a674d94056a5c2ae8924bbbe1047596d7 100644 --- a/tboxVtk/src/CMakeLists.txt +++ b/tboxVtk/src/CMakeLists.txt @@ -27,14 +27,18 @@ TARGET_INCLUDE_DIRECTORIES(tboxVtk PUBLIC ${PROJECT_SOURCE_DIR}/tboxVtk/src) # 1. first, look for all available VTK libraries -FIND_PACKAGE(VTK REQUIRED NO_MODULE) +FIND_PACKAGE(VTK REQUIRED NO_MODULE QUIET) IF(${VTK_VERSION} VERSION_LESS 6.0) MESSAGE(FATAL_ERROR "VTK>=6 required!") ENDIF() -MESSAGE(STATUS "VTK_LIBRARIES1 = ${VTK_LIBRARIES}") # display all VTK libs +#MESSAGE(STATUS "VTK_LIBRARIES1 = ${VTK_LIBRARIES}") # display all VTK libs # list of required components -SET(REQVTKCMP vtkIOXML) +IF(${VTK_VERSION} VERSION_LESS 9.0) + SET(REQVTKCMP vtkIOXML) +ELSE() + SET(REQVTKCMP IOXML) +ENDIF() # check whether MPI has been compiled IF(TARGET vtkParallelMPI) # NOTE: this test also works with a previous single-COMPONENT search @@ -47,16 +51,19 @@ ENDIF() # 2. second, perform a new search with a limited number of components # NOTE: you may just disable the following line to link against ALL vtk libraries! -FIND_PACKAGE(VTK REQUIRED COMPONENTS ${REQVTKCMP} NO_MODULE) +FIND_PACKAGE(VTK REQUIRED COMPONENTS ${REQVTKCMP} NO_MODULE QUIET) +IF(${VTK_FOUND}) + MESSAGE(STATUS "Found VTK ${VTK_VERSION} at \"${VTK_PREFIX_PATH}\" (components: ${VTK_LIBRARIES})") +ENDIF() # debug -MESSAGE(STATUS "VTK_DEFINITIONS = ${VTK_DEFINITIONS}") -MESSAGE(STATUS "VTK_REQUIRED_CXX_FLAGS = ${VTK_REQUIRED_CXX_FLAGS}") -MESSAGE(STATUS "VTK_REQUIRED_EXE_LINKER_FLAGS = ${VTK_REQUIRED_EXE_LINKER_FLAGS}") -MESSAGE(STATUS "VTK_REQUIRED_SHARED_LINKER_FLAGS = ${VTK_REQUIRED_SHARED_LINKER_FLAGS}") -MESSAGE(STATUS "VTK_USE_FILE = ${VTK_USE_FILE}") -MESSAGE(STATUS "VTK_INCLUDE_DIR = ${VTK_INCLUDE_DIR}") -MESSAGE(STATUS "VTK_LIBRARIES = ${VTK_LIBRARIES}") +#MESSAGE(STATUS "VTK_DEFINITIONS = ${VTK_DEFINITIONS}") +#MESSAGE(STATUS "VTK_REQUIRED_CXX_FLAGS = ${VTK_REQUIRED_CXX_FLAGS}") +#MESSAGE(STATUS "VTK_REQUIRED_EXE_LINKER_FLAGS = ${VTK_REQUIRED_EXE_LINKER_FLAGS}") +#MESSAGE(STATUS "VTK_REQUIRED_SHARED_LINKER_FLAGS = ${VTK_REQUIRED_SHARED_LINKER_FLAGS}") +#MESSAGE(STATUS "VTK_USE_FILE = ${VTK_USE_FILE}") +#MESSAGE(STATUS "VTK_INCLUDE_DIR = ${VTK_INCLUDE_DIR}") +#MESSAGE(STATUS "VTK_LIBRARIES = ${VTK_LIBRARIES}") TARGET_INCLUDE_DIRECTORIES(tboxVtk PUBLIC ${VTK_INCLUDE_DIRS}) TARGET_COMPILE_DEFINITIONS(tboxVtk PUBLIC ${VTK_DEFINITIONS})