#This configuration file is shipped with the great FEM-Toolbox AMDiS. #It simplifies the configure of different amdis-version and sets some variables. #We set the following variables: # AMDIS_INCLUDE_DIR the amdis-directory only # AMDIS_INCLUDE_DIRS all include directories (mtl, umfpack, parmetis, metis, ...) # AMDIS_LIBRARIES the needed libraries # AMDIS_LIBRARY_DIRS the link directories # AMDiS_COMPILEFLAGS some compile flags for amdis # # # For a fast start, you use this package in the following way # simply look for it, possibly set the AMDiS directory # find_package(AMDiS ) # include(${AMDIS_USE_FILE}) # add_executable(yourTarget <yourSources>) # target_link_libraries(yourTarget ${AMDIS_LIBRARIES}) # # #The AMDIS_USE_FILE adds the include and link-directories for amdis to cmake. # #If you use the parallel amdis-version, the AMDIS_USE_FILE also trys to detect #the mpi and petsc configuration. If those versions don't fit your needs, #you can change the corresponding directories, or simply do this work at your own #and omit the AMDIS_USE_FILE. Then you also have to set the flags, include #and library directories. ################## ONLY WORKAROUND AND WARNING ################### #if(NOT "$ENV{LIBRARY_PATH}" STREQUAL "") # message(WARNING "the environment variable LIBRARY_PATH is set. this can lead to problems during linking. \n You can unset it in your CMakeLists.txt with the command unset(ENV{LIBRARY_PATH}).\n") #endif() ################################################################## #try to detect the AMDiS include directory find_file(_AMDIS_H AMDiS.h PATHS ${AMDIS_INCLUDE_DIR} ${AMDIS_DIR}/../../include/amdis/ /usr/include/amdis/) if(_AMDIS_H) get_filename_component(AMDIS_INCLUDE_DIR ${_AMDIS_H} PATH CACHE) set(AMDIS_INCLUDE_DIRS ${AMDIS_INCLUDE_DIR}) else() message(ERROR "could not detect the AMDiS include directory. Please set the variable AMDIS_INCLUDE_DIR to the directory containing the AMDiS headers.") endif() unset(_AMDIS_H CACHE) set(MTL_DIR ${AMDIS_INCLUDE_DIR}/mtl4 CACHE PATH "the mtl directory") list(APPEND AMDIS_INCLUDE_DIRS ${MTL_DIR}) find_library(_AMDIS_LIB amdis PATHS ${AMDIS_LIBRARY_DIR} ${AMDIS_DIR}/../../lib/amdis/ /usr/include/amdis) if(_AMDIS_LIB) get_filename_component(AMDIS_LIBRARY_DIR ${_AMDIS_LIB} PATH CACHE) set(AMDIS_LIBRARY_DIRS ${AMDIS_LIBRARY_DIR}) set(AMDIS_LIBRARIES "${_AMDIS_LIB};${AMDIS_LIBRARY_DIR}/libcompositeFEM.so;${AMDIS_LIBRARY_DIR}/libreinit.so;${AMDIS_LIBRARY_DIR}/libmuparser.so" CACHE STRING "amdis libraries") else() message(ERROR "could not detect the AMDiS library directory. Please set the variable AMDIS_LIBRARY_DIR to the directory containg the AMDiS library") endif() unset(_AMDIS_LIB CACHE) find_package(Boost 1.42 REQUIRED system iostreams filesystem) if(Boost_FOUND) list(APPEND AMDIS_LIBRARIES ${Boost_LIBRARIES}) list(APPEND AMDIS_LIBRARY_DIRS ${Boost_LIBRARY_DIRS}) list(APPEND AMDIS_INCLUDE_DIRS ${Boost_INCLUDE_DIR}) endif(Boost_FOUND) set(AMDIS_NEED_ZOLTAN @ENABLE_ZOLTAN@) set(AMDIS_HAS_PARALLEL_DOMAIN @ENABLE_PARALLEL_DOMAIN@) set(AMDIS_NEED_UMFPACK @ENABLE_UMFPACK@) set(AMDIS_NEED_PNG @ENABLE_PNG@) set(AMDIS_NEED_BDDCML @ENABLE_BDDCML@) set(AMDIS_NEED_MKL @ENABLE_MKL@) set(AMDIS_USE_FILE ${AMDIS_DIR}/AMDISUse.cmake) set(AMDIS_COMPILEFLAGS "@COMPILEFLAGS@") set(AMDIS_VERSION @CurrentRevision@) set(AMDIS_MAJOR_VERSION @AMDIS_MAJOR@) set(AMDIS_MINOR_VERSION @AMDIS_MINOR@) if(AMDIS_NEED_UMFPACK) set(AMDIS_UMFPACK_PATH @UMFPACK_PATH@) list(APPEND AMDIS_INCLUDE_DIRS ${AMDIS_UMFPACK_PATH}) find_library(UMFPACK_LIB umfpack HINTS ENV LIBRARY_PATH DOC "The UMFPACK library") if(UMFPACK_LIB) list(APPEND AMDIS_LIBRARIES ${UMFPACK_LIB}) else() message(FATAL_ERROR "Could not find the UMFPACK library") endif() if("$ENV{BLA_VENDOR}" STREQUAL "ACML") find_library(ACML_LIBRARY acml HINTS ENV ACML_LIB) if(ACML_LIBRARY) list(APPEND AMDIS_LIBRARIES ${ACML_LIBRARY} fortran ffio m rt) #needed on atlas.. else() message(FATAL_ERROR "could not find the acml libraries, required by acml blas") endif(ACML_LIBRARY) else() find_library(BLAS_LIBRARY NAMES "blas" "goto" "mkl" HINTS ENV MKL_LIB DOC "The BLAS library") if(BLAS_LIBRARY) list(APPEND AMDIS_LIBRARIES ${BLAS_LIBRARY}) list(APPEND AMDIS_LIBRARY_DIRS ${BLAS_LIBRARY_DIR}) else() message(ERROR "Could not find the BLAS library. Please set the variable BLAS_LIBRARY to the blas library with full path") endif() endif("$ENV{BLA_VENDOR}" STREQUAL "ACML") find_library(AMD_LIB amd HINTS ENV LIBRARY_PATH DOC "The AMD library") if(AMD_LIB) list(APPEND AMDIS_LIBRARIES ${AMD_LIB}) else() message(FATAL_ERROR "Could not find the AMD library.") endif() #check for if we need cholmod set(_CHOLMOD_TEST_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/cholmodTest/) file(WRITE ${_CHOLMOD_TEST_DIR}/CMakeLists.txt "project(cholmodTest) cmake_minimum_required(VERSION 2.8) include_directories(${AMDIS_INCLUDE_DIRS}) add_executable(cholmodTest cholmodTest.cpp) target_link_libraries(cholmodTest ${AMDIS_LIBRARIES})") file(WRITE ${_CHOLMOD_TEST_DIR}/cholmodTest.cpp "#include <umfpack.h> int main(int , char* argv[]) { double c[UMFPACK_CONTROL]; umfpack_dl_defaults(c); return 0;}") try_compile(CHOLMOD_TEST ${_CHOLMOD_TEST_DIR}/build ${_CHOLMOD_TEST_DIR} cholmodTest OUTPUT_VARIABLE CHOLMOD_OUT) if(NOT CHOLMOD_TEST) find_library(CHOLMOD_LIB cholmod) if(CHOLMOD_LIB) list(APPEND AMDIS_LIBRARIES ${CHOLMOD_LIB}) else() message(FATAL_ERROR "your umfpack seems to need cholmod, but cmake could not find it") endif() find_library(COLAMD_LIB colamd) if(COLAMD_LIB) list(APPEND AMDIS_LIBRARIES ${COLAMD_LIB}) else() message(FATAL_ERROR "your umfpack seems to need colamd, but cmake could not find it") endif() endif() endif(AMDIS_NEED_UMFPACK) if(AMDIS_NEED_PNG) set(AMDIS_PNG_PATH @PNG_PATH@) list(APPEND AMDIS_INCLUDE_DIRS ${AMDIS_PNG_PATH}) find_library(PNG_LIB png HINTS ENV LIBRARY_PATH DOC "The PNG library") if(PNG_LIB) list(APPEND AMDIS_LIBRARIES ${PNG_LIB}) else() message(FATAL_ERROR "Could not find the PNG library") endif() endif(AMDIS_NEED_PNG) if(AMDIS_NEED_BDDCML) set(AMDIS_BDDCML_PATH @BDDCML_PATH@) list(APPEND AMDIS_INCLUDE_DIRS ${AMDIS_BDDCML_PATH}) set(AMDIS_BDDCML_LIB @BDDCML_LIB@) list(APPEND AMDIS_LIBRARIES ${AMDIS_BDDCML_LIB}) set(AMDIS_BDDCML_LINK_LIST @BDDCML_LINK_LIST@) list(APPEND AMDIS_LIBRARIES ${AMDIS_BDDCML_LINK_LIST}) endif(AMDIS_NEED_BDDCML) #add directories for reinit list(APPEND AMDIS_INCLUDE_DIRS ${AMDIS_INCLUDE_DIR}/reinit) list(APPEND AMDIS_INCLUDE_DIRS ${AMDIS_INCLUDE_DIR}/compositeFEM) list(APPEND AMDIS_INCLUDE_DIRS ${AMDIS_INCLUDE_DIR}/muparser) if(${AMDIS_FIND_COMPONENTS} MATCHES umfpack ) if(NOT AMDIS_NEED_UMFPACK) set(AMDIS_umfpack_FOUND FALSE) message(SEND_ERROR "The selected amdis was not compiled with umfpack") endif() endif() if(AMDIS_NEED_ZOLTAN) find_library(ZOLTAN_LIB zoltan HINTS ENV LIBRARY_PATH DOC "full path to the zoltan library") if(ZOLTAN_LIB) list(APPEND AMDIS_LIBRARIES ${ZOLTAN_LIB}) else() message(FATAL_ERROR "Could not find zoltan library!") endif() endif()