cmake_minimum_required (VERSION 3.10)
project (cppduals_thirdparty)
include (ExternalProject)
get_directory_property (hasParent PARENT_DIRECTORY)
set (DEPS_ROOT "${CMAKE_BINARY_DIR}/root")
if (hasParent)
set (DEPS_ROOT "${CMAKE_BINARY_DIR}/thirdparty/root" PARENT_SCOPE)
endif (hasParent)
if (NOT WIN32)
set (DOWNLOAD_DIR "$ENV{HOME}/Downloads")
else (NOT WIN32)
set (DOWNLOAD_DIR "C:/Downloads")
endif (NOT WIN32)
configure_file (CMakeLists-gt.txt.in googletest-download/CMakeLists.txt)
execute_process (COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download)
if (result)
message (FATAL_ERROR "CMake step for googletest failed: ${result}")
endif ()
execute_process (COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download)
if (result)
message (FATAL_ERROR "Build step for googletest failed: ${result}")
endif ()
set (gtest_force_shared_crt ON CACHE BOOL "" FORCE)
add_subdirectory (
${CMAKE_CURRENT_BINARY_DIR}/googletest-src
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL)
if (CMAKE_VERSION VERSION_LESS 2.8.11)
include_directories ("${gtest_SOURCE_DIR}/include")
endif ()
if (CPPDUALS_EIGEN_LATEST)
set (EIGEN_URL http://bitbucket.org/eigen/eigen/get/default.tar.bz2)
else ()
set (EIGEN_URL http://bitbucket.org/eigen/eigen/get/3.3.7.tar.bz2)
set (EIGEN_MD5 05b1f7511c93980c385ebe11bd3c93fa)
endif ()
ExternalProject_Add (eigenX
PREFIX eigenX
URL ${EIGEN_URL}
DOWNLOAD_DIR "$ENV{HOME}/Downloads"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Get_Property (eigenX source_dir)
if (hasParent AND NOT EIGEN3_INCLUDE_DIRS)
set (EIGEN3_INCLUDE_DIRS "${source_dir}" PARENT_SCOPE)
endif ()
set (EEX_SHA 72bf6e445d5ae84218dcbd74580720491e0074db )
ExternalProject_Add (expokitX
PREFIX expokitX
URL https://gitlab.com/api/v4/projects/tesch1%2Feigen-expokit/repository/archive.tbz2?sha=${EEX_SHA}
DOWNLOAD_DIR "$ENV{HOME}/Downloads"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Get_Property (expokitX source_dir)
if (hasParent)
set (EXPOKIT_INCLUDE_DIR "${source_dir}" PARENT_SCOPE)
endif()
ExternalProject_Add (fmtX
PREFIX fmtX
URL https://github.com/fmtlib/fmt/archive/6.1.1.tar.gz
URL_HASH MD5=acfb83d44afdca171ee26c597c931e7c
DOWNLOAD_DIR ${DOWNLOAD_DIR}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Get_Property (fmtX source_dir)
ExternalProject_Get_Property (fmtX binary_dir)
if (hasParent)
message (" FMT3_INCLUDE_DIRS: ${source_dir}")
add_subdirectory (${source_dir} ${binary_dir} EXCLUDE_FROM_ALL)
endif ()
if (CPPDUALS_BENCHMARK)
ExternalProject_Add (benchmarkX
PREFIX benchmarkX
URL "http://github.com/google/benchmark/archive/v1.5.0.tar.gz"
URL_HASH MD5=eb1466370f3ae31e74557baa29729e9e
DOWNLOAD_DIR ${DOWNLOAD_DIR}
CMAKE_ARGS --target install -DBENCHMARK_ENABLE_GTEST_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DBENCHMARK_USE_LIBCXX=${CPPDUALS_USE_LIBCXX}
"-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
INSTALL_DIR "${DEPS_ROOT}"
)
ExternalProject_Get_Property (benchmarkX source_dir)
ExternalProject_Get_Property (benchmarkX install_dir)
if (hasParent)
set (BENCHMARK_SRC_DIR "${source_dir}" PARENT_SCOPE)
set (BENCHMARK_INC_DIR "${install_dir}/include" PARENT_SCOPE)
message (" BENCHMARK_SRC_DIR: ${BENCHMARK_SRC_DIR}")
endif()
if (Boost_FOUND AND NO)
find_package (Boost 1.69)
if (hasParent)
set (Boost_FOUND ${Boost_FOUND} PARENT_SCOPE)
set (Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} PARENT_SCOPE)
endif ()
ExternalProject_Add (piranhaX PREFIX piranhaX
URL https://github.com/bluescarni/piranha/archive/v0.11.tar.gz
URL_HASH MD5=33482f719f6b8a6a5316f9bd148f5b10
DOWNLOAD_DIR "$ENV{HOME}/Downloads"
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
)
ExternalProject_Get_Property (piranhaX source_dir)
if (hasParent)
set (PIRANHA_INCLUDE_DIR "${source_dir}/include" PARENT_SCOPE)
endif ()
ExternalProject_Add (audiX PREFIX audiX
URL https://github.com/darioizzo/audi/archive/v1.6.5.tar.gz
URL_HASH MD5=a51897469dfce4ceaa25e65519a346b9
DOWNLOAD_DIR "$ENV{HOME}/Downloads"
CMAKE_ARGS -DAUDI_BUILD_TESTS=OFF
BUILD_COMMAND "" INSTALL_COMMAND ""
)
ExternalProject_Get_Property (audiX source_dir)
if (hasParent)
set (AUDI_INCLUDE_DIR "${source_dir}/include" PARENT_SCOPE)
endif ()
endif (Boost_FOUND AND NO)
endif (CPPDUALS_BENCHMARK)
if (0)
ExternalProject_Add (mpfrX
PREFIX mpfrX
URL https://www.mpfr.org/mpfr-current/mpfr-4.0.2.tar.bz2
URL_HASH MD5=6d8a8bb46fe09ff44e21cdbf84f5cdac
DOWNLOAD_DIR ${DOWNLOAD_DIR}
CONFIGURE_COMMAND "../mpfrX/configure" --prefix=<INSTALL_DIR>
)
ExternalProject_Add (mprealX
PREFIX mprealX
URL "http://www.holoborodko.com/pavel/wp-content/plugins/download-monitor/download.php?id=4"
URL_HASH MD5=68ad2258eb4a1c699c407f0e7bee5125
DOWNLOAD_DIR ${DOWNLOAD_DIR}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Get_Property (mprealX source_dir)
ExternalProject_Get_Property (mpfrX INSTALL_DIR)
if (hasParent)
set (MPFR_INCLUDES "${INSTALL_DIR}/include" "${source_dir}" PARENT_SCOPE)
set (MPFR_LIBRARIES "${INSTALL_DIR}/lib/libmpfr.a" -lgmp PARENT_SCOPE)
message (" MPFR_INCLUDES: ${MPFR_INCLUDES}")
add_definitions (-DHAVE_MPFR)
endif (hasParent)
endif (0)