From 941d28f23e22f6a00836f3313ca3f1e3a6107060 Mon Sep 17 00:00:00 2001 From: Simon Praetorius Date: Tue, 18 Oct 2016 21:30:10 +0200 Subject: [PATCH] petsc and zoltan configuration updated --- AMDiS/cmake3/amdis_parallel.cmake | 6 +- AMDiS/cmake3/target_enable_petsc.cmake | 101 ++++++++++++++---------- AMDiS/cmake3/target_enable_zoltan.cmake | 39 +++++---- 3 files changed, 83 insertions(+), 63 deletions(-) diff --git a/AMDiS/cmake3/amdis_parallel.cmake b/AMDiS/cmake3/amdis_parallel.cmake index 77eb83f7..8a7cdac4 100644 --- a/AMDiS/cmake3/amdis_parallel.cmake +++ b/AMDiS/cmake3/amdis_parallel.cmake @@ -42,9 +42,9 @@ if (ENABLE_PARALLEL_DOMAIN) endif (ENABLE_ZOLTAN) if (ENABLE_BDDCML) - target_compile_definitions(amdis_parallel INTERFACE HAVE_BDDCML=1) - target_sources(amdis PRIVATE - ${SOURCE_DIR}/parallel/BddcMlSolver.cc) + target_compile_definitions(amdis_parallel INTERFACE HAVE_BDDCML=1) + target_sources(amdis PRIVATE + ${SOURCE_DIR}/parallel/BddcMlSolver.cc) endif (ENABLE_BDDCML) # add some more source-files that need petsc diff --git a/AMDiS/cmake3/target_enable_petsc.cmake b/AMDiS/cmake3/target_enable_petsc.cmake index 58bfeaeb..00bb100a 100644 --- a/AMDiS/cmake3/target_enable_petsc.cmake +++ b/AMDiS/cmake3/target_enable_petsc.cmake @@ -1,14 +1,24 @@ macro(target_enable_mpi _TARGET_ _SCOPE_) + if (${ARGC} GREATER 2) + set(LINK_EXECUTABLE ON) + else () + set(LINK_EXECUTABLE OFF) + endif () + find_package(MPI REQUIRED) target_include_directories(${_TARGET_} ${_SCOPE_} ${MPI_CXX_INCLUDE_PATH}) target_compile_options(${_TARGET_} ${_SCOPE_} ${MPI_CXX_COMPILE_FLAGS}) string(STRIP " ${MPI_CXX_LINK_FLAGS} " MPI_CXX_LINK_FLAGS_) - target_link_libraries(${_TARGET_} ${_SCOPE_} - ${MPI_CXX_LINK_FLAGS_} ${MPI_CXX_LIBRARIES}) + + if (LINK_EXECUTABLE) + target_link_libraries(${_TARGET_} ${_SCOPE_} + ${MPI_CXX_LINK_FLAGS_} ${MPI_CXX_LIBRARIES}) + endif (LINK_EXECUTABLE) endmacro(target_enable_mpi) + macro(target_enable_petsc _TARGET_ _SCOPE_) if (${ARGC} GREATER 2) set(LINK_EXECUTABLE ON) @@ -41,70 +51,81 @@ macro(target_enable_petsc _TARGET_ _SCOPE_) set(PETSC_DEFINITIONS ${PETSC_CFLAGS} ${PETSC_CFLAGS_OTHER}) endif (PETSc_FOUND) + target_include_directories(${_TARGET_} ${_SCOPE_} ${PETSC_INCLUDE_DIRS}) + target_compile_definitions(${_TARGET_} ${_SCOPE_} + HAVE_PARALLEL_PETSC=1 + PETSC_VERSION=${PETSC_VERSION}) + target_compile_options(${_TARGET_} ${_SCOPE_} ${PETSC_DEFINITIONS}) + + if (LINK_EXECUTABLE) + target_link_libraries(${_TARGET_} ${_SCOPE_} ${PETSC_LIBRARIES}) + endif (LINK_EXECUTABLE) + + # parmetis is required find_file(PARMETIS_HEADER_FILE "parmetis.h" HINTS ${PARMETIS_DIR}/include ${PETSC_INCLUDE_DIRS}) if (PARMETIS_HEADER_FILE) - get_filename_component(PARMETIS_INCLUDE_PATH "${PARMETIS_HEADER_FILE}" PATH CACHE) - target_include_directories(${_TARGET_} ${_SCOPE_} ${PARMETIS_INCLUDE_PATH}) + get_filename_component(PARMETIS_INCLUDE_PATH "${PARMETIS_HEADER_FILE}" PATH CACHE) + target_include_directories(${_TARGET_} ${_SCOPE_} ${PARMETIS_INCLUDE_PATH}) else() - message(FATAL_ERROR "Could not find ParMetis header file 'parmetis.h'!") + message(FATAL_ERROR "Could not find ParMetis header file 'parmetis.h'!") endif (PARMETIS_HEADER_FILE) if (LINK_EXECUTABLE) find_library(PARMETIS_LIB parmetis HINTS ${PARMETIS_DIR}/lib ${PETSC_LIBRARY_DIRS}) - if (PARMETIS_LIB) - target_link_libraries(${_TARGET_} ${_SCOPE_} ${PARMETIS_LIB}) - else (PARMETIS_LIB) + if (NOT PARMETIS_LIB) message(FATAL_ERROR "Could not find the ParMetis libraries needed by amdis") - endif (PARMETIS_LIB) + endif (NOT PARMETIS_LIB) + target_link_libraries(${_TARGET_} ${_SCOPE_} ${PARMETIS_LIB}) endif (LINK_EXECUTABLE) + # metis is required find_file(METIS_HEADER_FILE "metis.h" HINTS ${METIS_DIR}/include ${PARMETIS_DIR}/include ${PETSC_INCLUDE_DIRS}) if (METIS_HEADER_FILE) - get_filename_component(METIS_INCLUDE_PATH "${METIS_HEADER_FILE}" PATH CACHE) - target_include_directories(${_TARGET_} ${_SCOPE_} ${METIS_INCLUDE_PATH}) + get_filename_component(METIS_INCLUDE_PATH "${METIS_HEADER_FILE}" PATH CACHE) + target_include_directories(${_TARGET_} ${_SCOPE_} ${METIS_INCLUDE_PATH}) else() - message(FATAL_ERROR "Could not find Metis header file 'metis.h'!") + message(FATAL_ERROR "Could not find Metis header file 'metis.h'!") endif (METIS_HEADER_FILE) if (LINK_EXECUTABLE) find_library(METIS_LIB metis - HINTS ${METIS_DIR}/lib ${PARMETIS_DIR}/lib ${PETSC_LIBRARY_DIRS}) - if (METIS_LIB) - target_link_libraries(${_TARGET_} ${_SCOPE_} ${METIS_LIB}) - else (METIS_LIB) + HINTS ${METIS_DIR}/lib ${PARMETIS_DIR}/lib ${PETSC_LIBRARY_DIRS}) + if (NOT METIS_LIB) message(FATAL_ERROR "Could not find the MEtis libraries needed by amdis") - endif (METIS_LIB) + endif (NOT METIS_LIB) + target_link_libraries(${_TARGET_} ${_SCOPE_} ${METIS_LIB}) endif (LINK_EXECUTABLE) + # blas library is required - find_library(BLAS_LIB - NAMES blas fblas openblas - HINTS ${BLAS_DIR}/lib ${PETSC_LIBRARY_DIRS} /usr/lib/openblas-base /usr/lib/atlas-base) - if (BLAS_LIB) - set(BLAS_LIBRARIES ${BLAS_LIB}) - else (BLAS_LIB) - find_package(BLAS REQUIRED) - endif (BLAS_LIB) + if (LINK_EXECUTABLE) + find_library(BLAS_LIB + NAMES blas fblas openblas + HINTS ${BLAS_DIR}/lib ${PETSC_LIBRARY_DIRS} /usr/lib/openblas-base /usr/lib/atlas-base) + if (BLAS_LIB) + set(BLAS_LIBRARIES ${BLAS_LIB}) + else (BLAS_LIB) + find_package(BLAS REQUIRED) + endif (BLAS_LIB) + target_link_libraries(${_TARGET_} ${_SCOPE_} ${BLAS_LIBRARIES}) + endif (LINK_EXECUTABLE) - # lapack library is required - find_library(LAPACK_LIB - NAMES lapack flapack - HINTS ${LAPACK_DIR}/lib ${PETSC_LIBRARY_DIRS} ${PETSC_DIR}/lib) - if (LAPACK_LIB) - set(LAPACK_LIBRARIES ${LAPACK_LIB}) - else (LAPACK_LIB) - find_package(LAPACK REQUIRED) - endif (LAPACK_LIB) - target_include_directories(${_TARGET_} ${_SCOPE_} ${PETSC_INCLUDE_DIRS}) - target_compile_definitions(${_TARGET_} ${_SCOPE_} - HAVE_PARALLEL_PETSC=1 - PETSC_VERSION=${PETSC_VERSION}) - target_compile_options(${_TARGET_} ${_SCOPE_} ${PETSC_DEFINITIONS}) - target_link_libraries(${_TARGET_} ${_SCOPE_} ${PETSC_LIBRARIES} ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}) + # lapack library is required + if (LINK_EXECUTABLE) + find_library(LAPACK_LIB + NAMES lapack flapack + HINTS ${LAPACK_DIR}/lib ${PETSC_LIBRARY_DIRS} ${PETSC_DIR}/lib) + if (LAPACK_LIB) + set(LAPACK_LIBRARIES ${LAPACK_LIB}) + else (LAPACK_LIB) + find_package(LAPACK REQUIRED) + endif (LAPACK_LIB) + target_link_libraries(${_TARGET_} ${_SCOPE_} ${LAPACK_LIBRARIES}) + endif (LINK_EXECUTABLE) endmacro(target_enable_petsc) diff --git a/AMDiS/cmake3/target_enable_zoltan.cmake b/AMDiS/cmake3/target_enable_zoltan.cmake index 0d7e216b..6488c1de 100644 --- a/AMDiS/cmake3/target_enable_zoltan.cmake +++ b/AMDiS/cmake3/target_enable_zoltan.cmake @@ -1,27 +1,26 @@ macro(target_enable_zoltan _TARGET_ _SCOPE_) if (${ARGC} GREATER 2) - set(LINK_EXECUTABLE ON) - else () - set(LINK_EXECUTABLE OFF) - endif () + set(LINK_EXECUTABLE ON) + else () + set(LINK_EXECUTABLE OFF) + endif () - find_file(ZOLTAN_HEADER_FILE "zoltan_cpp.h" HINTS ${ZOLTAN_DIR}/include ${PETSC_INCLUDE_DIRS}) - if (ZOLTAN_HEADER_FILE) - get_filename_component(ZOLTAN_HEADER_DIR "${ZOLTAN_HEADER_FILE}" PATH CACHE) - target_include_directories(${_TARGET_} ${_SCOPE_} ${ZOLTAN_HEADER_DIR}) - else() - message(FATAL_ERROR "Could not find Zoltan include file 'zoltan_cpp.h'!") - endif(ZOLTAN_HEADER_FILE) + find_file(ZOLTAN_HEADER_FILE "zoltan_cpp.h" HINTS ${ZOLTAN_DIR}/include ${PETSC_INCLUDE_DIRS}) + if (ZOLTAN_HEADER_FILE) + get_filename_component(ZOLTAN_HEADER_DIR "${ZOLTAN_HEADER_FILE}" PATH CACHE) + target_include_directories(${_TARGET_} ${_SCOPE_} ${ZOLTAN_HEADER_DIR}) + else() + message(FATAL_ERROR "Could not find Zoltan include file 'zoltan_cpp.h'!") + endif(ZOLTAN_HEADER_FILE) - target_compile_definitions(${_TARGET_} ${_SCOPE_} HAVE_ZOLTAN=1) + target_compile_definitions(${_TARGET_} ${_SCOPE_} HAVE_ZOLTAN=1) - if (LINK_EXECUTABLE) - find_library(ZOLTAN_LIB zoltan - HINTS ENV LIBRARY_PATH DOC "Full path to the zoltan library") - if (ZOLTAN_LIB) + if (LINK_EXECUTABLE) + find_library(ZOLTAN_LIB zoltan + HINTS ENV LIBRARY_PATH DOC "Full path to the zoltan library") + if (NOT ZOLTAN_LIB) + message(FATAL_ERROR "Could not find zoltan library!") + endif (NOT ZOLTAN_LIB) target_link_libraries(${_TARGET_} ${_SCOPE_} ${ZOLTAN_LIB}) - else() - message(FATAL_ERROR "Could not find zoltan library!") - endif() - endif (LINK_EXECUTABLE) + endif (LINK_EXECUTABLE) endmacro(target_enable_zoltan) \ No newline at end of file -- GitLab