diff --git a/third-party/cmake/blackdynamite.cmake b/third-party/cmake/blackdynamite.cmake index 066d924df..868a3c6e6 100644 --- a/third-party/cmake/blackdynamite.cmake +++ b/third-party/cmake/blackdynamite.cmake @@ -1,36 +1,41 @@ if(${PROJECT_SOURCE_DIR}/third-party/${BLACKDYNAMITE_ARCHIVE}) set(_blackdynamite_download_command URL ${PROJECT_SOURCE_DIR}/third-party/${BLACKDYNAMITE_ARCHIVE}) else() set(_blackdynamite_download_command SVN_REPOSITORY ${BLACKDYNAMITE_URL} - UPDATE_DISCONNECTED 1) + ) endif() -include(ExternalProject) +if(CMAKE_VERSION VERSION_GREATER 3.1) + set(_extra_options + UPDATE_DISCONNECTED 1 + DOWNLOAD_NO_PROGRESS 1 + EXCLUDE_FROM_ALL 1 + ) +endif() ExternalProject_Add(blackdynamite PREFIX ${PROJECT_BINARY_DIR}/third-party ${_blackdynamite_download_command} - DOWNLOAD_NO_PROGRESS 1 - EXCLUDE_FROM_ALL 1 + ${_extra_options} CMAKE_ARGS / CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER:PATH=${CMAKE_CXX_COMPILER} BUILD_COMMAND make INSTALL_COMMAND make install LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 ) set_third_party_shared_libirary_name(BLACKDYNAMITE_LIBRARIES blackdynamite) package_set_include_dir(BLACKDYNAMITE_INCLUDE_DIR "${PROJECT_BINARY_DIR}/third-party/include/blackdynamite" CACHE PATH "") mark_as_advanced( BLACKDYNAMITE_LIBRARIES BLACKDYNAMITE_INCLUDE_DIR ) package_add_extra_dependency(BlackDynamite blackdynamite) diff --git a/third-party/cmake/iohelper.cmake b/third-party/cmake/iohelper.cmake index 0c1831767..b70daa7ca 100644 --- a/third-party/cmake/iohelper.cmake +++ b/third-party/cmake/iohelper.cmake @@ -1,35 +1,40 @@ if(NOT EXISTS ${PROJECT_SOURCE_DIR}/third-party/${IOHELPER_ARCHIVE}) set(_iohelper_download_command GIT_REPOSITORY ${IOHELPER_GIT} GIT_TAG ${IOHELPER_VERSION} - UPDATE_DISCONNECTED 1 ) else() set(_iohelper_download_command URL ${PROJECT_SOURCE_DIR}/third-party/${IOHELPER_ARCHIVE} - DOWNLOAD_NO_PROGRESS 1 ) endif() - +if(CMAKE_VERSION VERSION_GREATER 3.1) + set(_extra_options + UPDATE_DISCONNECTED 1 + DOWNLOAD_NO_PROGRESS 1 + EXCLUDE_FROM_ALL 1 + ) +endif() ExternalProject_Add(IOHelper PREFIX ${PROJECT_BINARY_DIR}/third-party ${_iohelper_download_command} - EXCLUDE_FROM_ALL 1 + ${_extra_options} CMAKE_ARGS / CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER:PATH=${CMAKE_CXX_COMPILER} + LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 ) set_third_party_shared_libirary_name(IOHELPER_LIBRARIES iohelper) set(IOHELPER_INCLUDE_DIR "${PROJECT_BINARY_DIR}/third-party/include/iohelper" CACHE PATH "IOHelper include directory") mark_as_advanced( IOHELPER_LIBRARIES IOHELPER_INCLUDE_DIR ) package_add_extra_dependency(IOHelper IOHelper) diff --git a/third-party/cmake/mumps.cmake b/third-party/cmake/mumps.cmake index 246db7f64..0ba142984 100644 --- a/third-party/cmake/mumps.cmake +++ b/third-party/cmake/mumps.cmake @@ -1,133 +1,142 @@ #=============================================================================== # @file mumps.cmake # # @author Nicolas Richart # # @date creation: Mon Nov 21 2011 # @date last modification: Mon Sep 15 2014 # # @brief compilation of the third-party MUMPS # # @section LICENSE # # Copyright (©) 2010-2012, 2014 EPFL (Ecole Polytechnique Fédérale de Lausanne) # Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # #=============================================================================== enable_language(Fortran) set(MUMPS_VERSION ${AKANTU_USE_MUMPS_VERSION}) set(MUMPS_ARCHIVE "${PROJECT_SOURCE_DIR}/third-party/MUMPS_${MUMPS_VERSION}.tar.gz") set(MUMPS_ARCHIVE_HASH_4.9.2 "MD5=d0b8f139a4acf29b76dbae69ade8ac54") set(MUMPS_ARCHIVE_HASH_4.10.0 "MD5=959e9981b606cd574f713b8422ef0d9f") set(MUMPS_ARCHIVE_HASH_5.0.0 "MD5=3c6aeab847e9d775ca160194a9db2b75") if(NOT EXISTS ${MUMPS_ARCHIVE}) message(FATAL_ERROR "To be able to compile MUMPS please download it from " "http://mumps.enseeiht.fr/ or http://graal.ens-lyon.fr/MUMPS and place it " "in the directory: ${PROJECT_SOURCE_DIR}/third-party and in cmake set the " "variable AKANTU_MUMPS_VERSION to the corresponding version " "\n" "Supported version for automated compilation in Akantu are 4.9.2, 4.10.0 " "and 5.0.0") endif() package_get_option_name(MPI _mpi_option) if(${_mpi_option}) unset(MUMPS_PREFIX) else() set(MUMPS_PREFIX _seq) endif() package_get_option_name(Scotch _scotch_option) package_use_system(Scotch _scotch_use_system) if(NOT _scotch_use_system AND ${_scotch_option}) list(APPEND MUMPS_DEPENDS Scotch) endif() package_get_option_name(ScaLAPACK _scalapack_option) package_use_system(ScaLAPACK _scalapack_use_system) if(NOT _scalapack_use_system AND ${_scalapack_option}) list(APPEND MUMPS_DEPENDS ScaLAPACK) endif() include(AkantuMacros) -include(ExternalProject) package_get_libraries(Scotch _scotch_libraries) string(REPLACE ";" " " MUMPS_SCOTCH_LIBRARIES "${_scotch_libraries};${SCOTCH_LIBRARY_ESMUMPS}") package_get_libraries(BLAS _blas_libraries) foreach(_blas_lib ${_blas_libraries}) if("${_blas_lib}" MATCHES ".*\\.framework") get_filename_component(_blas_framework "${_blas_lib}" NAME_WE) set(MUMPS_BLAS_LIBRARIES "${MUMPS_BLAS_LIBRARIES} -framework ${_blas_framework}") else() set(MUMPS_BLAS_LIBRARIES "${MUMPS_BLAS_LIBRARIES} ${_blas_lib}") endif() endforeach() if("${MUMPS_TYPE}" STREQUAL "seq") set_third_party_shared_libirary_name(MUMPS_LIBRARY_MPI mpiseq${MUMPS_PREFIX}) mark_as_advanced(MUMPS_LIBRARY_MPI) else() set(MUMPS_LIBRARY_MPI "") endif() configure_file(${PROJECT_SOURCE_DIR}/third-party/MUMPS_${MUMPS_VERSION}_make.inc.cmake ${PROJECT_BINARY_DIR}/third-party/MUMPSmake.inc) +if(CMAKE_VERSION VERSION_GREATER 3.1) + set(_extra_options + UPDATE_DISCONNECTED 1 + DOWNLOAD_NO_PROGRESS 1 + EXCLUDE_FROM_ALL 1 + ) +endif() + + ExternalProject_Add(MUMPS DEPENDS ${MUMPS_DEPENDS} PREFIX ${PROJECT_BINARY_DIR}/third-party URL ${MUMPS_ARCHIVE} URL_HASH ${MUMPS_ARCHIVE_HASH_${MUMPS_VERSION}} + ${_extra_options} BUILD_IN_SOURCE 1 PATCH_COMMAND patch -p2 < ${PROJECT_SOURCE_DIR}/third-party/MUMPS_${MUMPS_VERSION}.patch CONFIGURE_COMMAND cmake -E copy ${PROJECT_BINARY_DIR}/third-party/MUMPSmake.inc Makefile.inc BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} d INSTALL_COMMAND prefix= ${CMAKE_MAKE_PROGRAM} install LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 ) set_third_party_shared_libirary_name(MUMPS_LIBRARY_DMUMPS dmumps${MUMPS_PREFIX}) set_third_party_shared_libirary_name(MUMPS_LIBRARY_COMMON mumps_common${MUMPS_PREFIX}) set_third_party_shared_libirary_name(MUMPS_LIBRARY_PORD pord${MUMPS_PREFIX}) mark_as_advanced( MUMPS_LIBRARY_COMMON MUMPS_LIBRARY_DMUMPS MUMPS_LIBRARY_PORD MUMPS_LIBRARY_MPI MUMPS_INCLUDE_DIR ) set(MUMPS_LIBRARIES_ALL ${MPI_Fortran_LIBRARIES} ${MUMPS_LIBRARY_COMMON} ${MUMPS_LIBRARY_DMUMPS} ${MUMPS_LIBRARY_PORD} ${MUMPS_LIBRARY_MPI}) set(MUMPS_INCLUDE_DIR ${PROJECT_BINARY_DIR}/third-party/include CACHE PATH "" FORCE) set(MUMPS_LIBRARIES ${MUMPS_LIBRARIES_ALL} CACHE INTERNAL "Libraries for MUMPS" FORCE) package_add_extra_dependency(Mumps MUMPS) diff --git a/third-party/cmake/scalapack.cmake b/third-party/cmake/scalapack.cmake index f71a5b3c9..0ad66a21f 100644 --- a/third-party/cmake/scalapack.cmake +++ b/third-party/cmake/scalapack.cmake @@ -1,62 +1,69 @@ #=============================================================================== # @file scalapack.cmake # # @author Nicolas Richart # # @date creation: Mon Nov 21 2011 # @date last modification: Mon Sep 15 2014 # # @brief package description for mumps support # # @section LICENSE # # Copyright (©) 2010-2012, 2014 EPFL (Ecole Polytechnique Fédérale de Lausanne) # Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # #=============================================================================== enable_language(Fortran) +if(CMAKE_VERSION VERSION_GREATER 3.1) + set(_extra_options + UPDATE_DISCONNECTED 1 + DOWNLOAD_NO_PROGRESS 1 + EXCLUDE_FROM_ALL 1 + ) +endif() + set(SCALAPACK_DIR ${PROJECT_BINARY_DIR}/third-party) ExternalProject_Add(ScaLAPACK PREFIX ${SCALAPACK_DIR} URL ${SCALAPACK_ARCHIVE} URL_HASH ${SCALAPACK_ARCHIVE_HASH} - DOWNLOAD_NO_PROGRESS 1 - EXCLUDE_FROM_ALL 1 + ${_extra_options} PATCH_COMMAND patch -p1 < ${PROJECT_SOURCE_DIR}/third-party/scalapack_${SCALAPACK_VERSION}.patch CMAKE_COMMAND BLA_VENDOR=$ENV{BLA_VENDOR} MPICH_F90=${CMAKE_Fortran_COMPILER} ${CMAKE_COMMAND} CMAKE_ARGS /ScaLAPACK CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DMPIEXEC:PATH=${MPIEXEC} -DCMAKE_C_COMPILER:PATH=${CMAKE_C_COMPILER} -DMPI_C_COMPILER:PATH=${MPI_C_COMPILER} -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -DCMAKE_Fortran_COMPILER:PATH=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS} -DMPI_Fortran_COMPILER:PATH=${MPI_Fortran_COMPILER} -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} BUILD_COMMAND BLA_VENDOR=$ENV{BLA_VENDOR} MPICH_F90=${CMAKE_Fortran_COMPILER} ${CMAKE_MAKE_PROGRAM} LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 ) set_third_party_shared_libirary_name(SCALAPACK_LIBRARIES scalapack) set(SCALAPACK_INCLUDE_DIR ${SCALAPACK_DIR}/include CACHE PATH "" FORCE) mark_as_advanced(SCALAPACK_LIBRARIES SCALAPACK_INCLUDE_DIR) diff --git a/third-party/cmake/scotch.cmake b/third-party/cmake/scotch.cmake index 981ee099c..b2f869e0f 100644 --- a/third-party/cmake/scotch.cmake +++ b/third-party/cmake/scotch.cmake @@ -1,70 +1,77 @@ +if(TARGET Scotch) + return() +endif() + if(NOT EXISTS ${PROJECT_SOURCE_DIR}/third-party/${SCOTCH_ARCHIVE}) set(_scotch_download_command URL ${SCOTCH_URL} URL_HASH ${SCOTCH_ARCHIVE_HASH} TLS_VERIFY FALSE) else() set(_scotch_download_command URL ${PROJECT_SOURCE_DIR}/third-party/${SCOTCH_ARCHIVE} URL_HASH ${SCOTCH_ARCHIVE_HASH}) endif() -if(TARGET Scotch) - return() +if(CMAKE_VERSION VERSION_GREATER 3.1) + set(_extra_options + UPDATE_DISCONNECTED 1 + DOWNLOAD_NO_PROGRESS 1 + EXCLUDE_FROM_ALL 1 + ) endif() find_package(BISON REQUIRED) find_package(FLEX REQUIRED) find_package(ZLIB REQUIRED) if (AKANTU_USE_OBSOLETE_GETTIMEOFDAY) set (SCOTCH_TIMMING_OPTION -DCOMMON_TIMING_OLD) endif() if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(SCOTCH_ARCHITECTURE -DIDXSIZE64) else() set(SCOTCH_ARCHITECTURE) endif() set(SCOTCH_DIR ${PROJECT_BINARY_DIR}/third-party) configure_file( ${PROJECT_SOURCE_DIR}/third-party/scotch_${SCOTCH_VERSION}_make.inc.cmake ${SCOTCH_DIR}/scotch_make.inc) include(ExternalProject) ExternalProject_Add(Scotch PREFIX ${SCOTCH_DIR} ${_scotch_download_command} - DOWNLOAD_NO_PROGRESS 1 - EXCLUDE_FROM_ALL 1 + ${_extra_options} PATCH_COMMAND patch -p1 < ${PROJECT_SOURCE_DIR}/third-party/scotch_${SCOTCH_VERSION}.patch CONFIGURE_COMMAND cmake -E copy ${SCOTCH_DIR}/scotch_make.inc src/Makefile.inc BUILD_IN_SOURCE 1 BUILD_COMMAND MPICH_CC=${CMAKE_C_COMPILER} ${CMAKE_MAKE_PROGRAM} -C src INSTALL_COMMAND prefix= ${CMAKE_MAKE_PROGRAM} -C src install LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 ) set_third_party_shared_libirary_name(SCOTCH_LIBRARY scotch) set_third_party_shared_libirary_name(SCOTCH_LIBRARY_ERR scotcherr) set_third_party_shared_libirary_name(SCOTCH_LIBRARY_ERREXIT scotcherrexit) set_third_party_shared_libirary_name(SCOTCH_LIBRARY_ESMUMPS esmumps) set(SCOTCH_INCLUDE_DIR ${SCOTCH_DIR}/include CACHE PATH "" FORCE) mark_as_advanced( SCOTCH_LIBRARY SCOTCH_LIBRARY_ERR SCOTCH_LIBRARY_ERREXIT SCOTCH_LIBRARY_ESMUMPS SCOTCH_INCLUDE_DIR) set(SCOTCH_LIBRARIES_ALL ${SCOTCH_LIBRARY} ${SCOTCH_LIBRARY_ERR}) set(SCOTCH_LIBRARIES ${SCOTCH_LIBRARIES_ALL} CACHE INTERNAL "Libraries for scotch" FORCE) package_add_extra_dependency(Scotch Scotch)