# Configure EMSchur3D set(EMSCHUR3D_VERSION_MAJOR "0") set(EMSCHUR3D_VERSION_MINOR "0") set(EMSCHUR3D_VERSION_PATCH "1") set(EMSCHUR3D_VERSION "\"${EMSCHUR3D_VERSION_MAJOR}.${EMSCHUR3D_VERSION_MINOR}.${EMSCHUR3D_VERSION_PATCH}\"") set(EMSCHUR3D_VERSION_NOQUOTES "${EMSCHUR3D_VERSION_MAJOR}.${EMSCHUR3D_VERSION_MINOR}.${EMSCHUR3D_VERSION_PATCH}") option ( LEMMA_MODULE_EMSCHUR3D TRUE ) option ( LEMMA_USE_SUPERLU FALSE) if (LEMMA_USE_SUPERLU) find_package( SuperLU ) if (SUPERLU_FOUND) message( STATUS "SuperLU was found" ) add_compile_options(-DHAVE_SUPERLU) INCLUDE_DIRECTORIES(${SUPERLU_INCLUDES}) endif() endif() #find_package( PaSTiX ) #find_package( PaSTiX COMPONENTS METIS SEQ ) #find_path(PASTIX_pastix_nompi.h_INCLUDE_DIRS # #NAMES pastix/nompi.h # NAMES pastix_nompi.h # HINTS ${PASTIX_INCLUDE_DIRS} #) #if (NOT PASTIX_pastix_nompi.h_INCLUDE_DIRS) # message(STATUS "A version of Pastix has been found but pastix_nompi.h does not exist in the include directory." # " Because Eigen tests require a version without MPI, we disable the Pastix backend.") #endif() #if(PASTIX_FOUND AND PASTIX_pastix_nompi.h_INCLUDE_DIRS) # add_definitions("-DEIGEN_PASTIX_SUPPORT") # include_directories(${PASTIX_INCLUDE_DIRS_DEP}) # if(SCOTCH_FOUND) # include_directories(${SCOTCH_INCLUDE_DIRS}) # set(PASTIX_LIBRARIES ${PASTIX_LIBRARIES} ${SCOTCH_LIBRARIES}) # elseif(METIS_FOUND) # include_directories(${METIS_INCLUDE_DIRS}) # set(PASTIX_LIBRARIES ${PASTIX_LIBRARIES} ${METIS_LIBRARIES}) # else(SCOTCH_FOUND) # ei_add_property(EIGEN_MISSING_BACKENDS "PaStiX, ") # endif(SCOTCH_FOUND) # set(SPARSE_LIBS ${SPARSE_LIBS} ${PASTIX_LIBRARIES_DEP} ${ORDERING_LIBRARIES}) # set(PASTIX_ALL_LIBS ${PASTIX_LIBRARIES_DEP}) # ei_add_property(EIGEN_TESTED_BACKENDS "PaStiX, ") #else() # ei_add_property(EIGEN_MISSING_BACKENDS "PaStiX, ") #endif() #if ( PASTIX_FOUND ) # message( STATUS "PaSTiX was found" ) # add_compile_options(-DHAVE_PASTIX) # INCLUDE_DIRECTORIES(${PASTIX_INCLUDES}) #endif() find_package( Umfpack ) if ( UMFPACK_FOUND ) message( STATUS "Umfpack was found" ) add_compile_options(-DHAVE_UMFPACK) INCLUDE_DIRECTORIES(${UMFPACK_INCLUDES}) endif() if ( LEMMA_VTK6_SUPPORT OR LEMMA_VTK7_SUPPORT OR LEMMA_VTK8_SUPPORT AND LEMMA_MODULE_EMSCHUR3D ) configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/config/EMSchur3DConfig.h.in" "${PROJECT_BINARY_DIR}/include/EMSchur3DConfig.h" ) install ( FILES ${PROJECT_BINARY_DIR}/include/EMSchur3DConfig.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma/ ) add_subdirectory("src") add_library( emschur3d ${EMSCHUR3DSOURCE} ) target_include_directories( emschur3d PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) set_target_properties(emschur3d PROPERTIES VERSION "${EMSCHUR3D_VERSION_NOQUOTES}" SOVERSION "${EMSCHUR3D_VERSION_MAJOR}.${LEMMA_VERSION_MINOR}" PROJECT_LABEL "EMSCHUR3D ${LABEL_SUFFIX}" CXX_STANDARD_14 CXX_STANDARD_REQUIRED_ON ) option ( EMSCHUR3D_ON_KINGSPEAK FALSE ) if ( EMSCHUR3D_ON_KINGSPEAK ) # No OpenMP add_compile_options(-DHAVE_PARDISO) #set (MKLLINK "-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -Wl,-rpath=$MKLROOT/lib/intel64") # OpenMP R3 set (MKLLINK "-L$MKLROOT/lib/intel64 -Wl,-rpath=$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread") add_compile_options( -DEIGEN_USE_MKL_ALL ) target_link_libraries(emschur3d "lemmacore" ${MKLLINK}) else() find_library( PARDISO600 NAMES pardiso600 libpardiso600.so libpardiso600-GNU800-X86-64.so HINTS $(CMAKE_INSTALL_PREFIX) PATH_SUFFIXES lib ) if (PARDISO600) add_compile_options(-DHAVE_PARDISO -mkl) # -mkl ONLY WORKS WITH INTEL, but academic pardiso doesn't include headers... target_link_libraries( emschur3d "lemmacore" ) endif() endif() # Linking target_link_libraries(emschur3d "lemmacore" "fdem1d" ) # Linking target_link_libraries(emschur3d ${VTK_LIBRARIES}) if ( SUPERLU_FOUND ) target_link_libraries(emschur3d ${SUPERLU_LIBRARIES}) endif() if ( PASTIX_FOUND ) target_link_libraries(emschur3d ${PASTIX_LIBRARIES}) target_link_libraries(emschur3d "blas" "metis" "scotch" "scotchmetis" "scotcherr" "scotcherrexit" "hwloc") endif() if ( UMFPACK_FOUND ) target_link_libraries(emschur3d ${UMFPACK_LIBRARIES}) endif() # Testing if (LEMMA_ENABLE_TESTING) add_subdirectory(testing) endif() # Install install ( TARGETS emschur3d DESTINATION ${CMAKE_INSTALL_PREFIX}/lib ) install ( FILES include/EMSchur3D DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma ) install ( DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma FILES_MATCHING PATTERN "*.h") #install ( DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma/ FILES_MATCHING PATTERN "FDEM1D") #install ( DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma/FDEM1D FILES_MATCHING PATTERN "*.h") # Examples if ( LEMMA_BUILD_EXAMPLES) add_subdirectory(examples) endif() else() if ( LEMMA_MODULE_EMSCHUR3D ) message ( FATAL_ERROR "EMSChur3D requires VTK 6, 7, or 8" ) endif() endif()