eedb/cmake/FindAllRequirements.cmake
2018-01-24 15:04:45 +01:00

144 lines
4.5 KiB
CMake

include(ExternalProject)
# This function is used to force a build on a dependant project at cmake configuration phase.
#
function (build_external_project target prefix url) #FOLLOWING ARGUMENTS are the CMAKE_ARGS of ExternalProject_Add
set(trigger_build_dir ${CMAKE_BINARY_DIR}/force_${target})
#mktemp dir in build tree
file(MAKE_DIRECTORY ${trigger_build_dir} ${trigger_build_dir}/build)
#generate false dependency project
set(CMAKE_LIST_CONTENT "
cmake_minimum_required(VERSION 2.8)
include(ExternalProject)
ExternalProject_add(${target}
PREFIX ${prefix}/${target}
GIT_REPOSITORY ${url}
LIST_SEPARATOR |
CMAKE_ARGS ${ARGN}
INSTALL_COMMAND \"\"
BUILD_COMMAND \"\"
)
add_custom_target(trigger_${target})
add_dependencies(trigger_${target} ${target})
")
file(WRITE ${trigger_build_dir}/CMakeLists.txt "${CMAKE_LIST_CONTENT}")
execute_process(COMMAND ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ..
WORKING_DIRECTORY ${trigger_build_dir}/build
)
execute_process(COMMAND ${CMAKE_COMMAND} --build .
WORKING_DIRECTORY ${trigger_build_dir}/build
)
execute_process(COMMAND ${CMAKE_COMMAND} --build . --target install
WORKING_DIRECTORY ${trigger_build_dir}/build/${prefix}/${target}/src/${target}-build
)
endfunction()
SET(_BOOST_COMPONENTS program_options system filesystem thread)
hunter_add_package(Boost COMPONENTS ${_BOOST_COMPONENTS})
find_package(Boost CONFIG REQUIRED ${_BOOST_COMPONENTS})
hunter_add_package(nlohmann_json)
find_package(nlohmann_json CONFIG REQUIRED)
hunter_add_package(GTest)
find_package(GMock CONFIG REQUIRED)
hunter_add_package(benchmark)
find_package(benchmark CONFIG REQUIRED)
hunter_add_package(spdlog)
find_package(spdlog CONFIG REQUIRED)
hunter_add_package(range-v3)
find_package(range-v3 CONFIG REQUIRED)
#hunter_add_package(PostgreSQL)
#find_package(PostgreSQL REQUIRED)
set(EXTERNAL_INSTALL_LOCATION ${CMAKE_BINARY_DIR}/lib CACHE STRING "external libs root path")
set(EXTERNAL_LOCATION ${CMAKE_BINARY_DIR}/external CACHE STRING "external sources root path")
set(_HUNTER_ROOT "${Boost_DIR}/../../../")
message("HUNTER ROOT DIRECTORY ${_HUNTER_ROOT}")
string(REPLACE ";" "|" CMAKE_PREFIX_PATH_ALT_SEP "${CMAKE_PREFIX_PATH}")
build_external_project(project_wt wt
https://github.com/emweb/wt.git
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_LOCATION}
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}
-DBoost_NO_BOOST_CMAKE=TRUE
-DBoost_NO_SYSTEM_PATHS=TRUE
-DBUILD_EXAMPLES=OFF
-DINSTALL_RESOURCES=OFF
-DENABLE_SSL=OFF
-DENABLE_HARU=OFF
-DENABLE_PANGO=OFF
-DENABLE_SQLITE=OFF
-DENABLE_POSTGRES=OFF
-DENABLE_FIREBIRD=OFF
-DENABLE_MYSQL=OFF
-DENABLE_MSSQLSERVER=OFF
-DENABLE_QT4=OFF
-DENABLE_LIBWTDBO=OFF
-DENABLE_OPENGL=OFF
-DENABLE_UNWIND=OFF
-DCONNECTOR_FCGI=OFF
)
add_library(wt SHARED IMPORTED)
set_target_properties(wt PROPERTIES IMPORTED_LOCATION ${EXTERNAL_LOCATION}/lib/libwt.so)
add_dependencies(wt project_wt)
add_library(wthttp SHARED IMPORTED)
set_target_properties(wthttp PROPERTIES IMPORTED_LOCATION ${EXTERNAL_LOCATION}/lib/libwthttp.so)
add_dependencies(wthttp project_wt)
LIST(APPEND CMAKE_MODULE_PATH "${EXTERNAL_LOCATION}")
#LIST(APPEND CMAKE_MODULE_PATH "${_HUNTER_ROOT}/lib")
build_external_project(project_hhdate date
https://github.com/HowardHinnant/date.git
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_LOCATION}
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}
-DTZ_CXX_STANDARD=14
)
add_library(date INTERFACE IMPORTED)
add_dependencies(date project_hhdate)
build_external_project(project_sqlpp sqlpp
https://github.com/rbock/sqlpp11.git
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_LOCATION}
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}
-DENABLE_TESTS=FALSE
)
add_library(sqlpp INTERFACE IMPORTED)
add_dependencies(sqlpp project_sqlpp)
link_directories(${_HUNTER_ROOT}/lib)
find_library(wt REQUIRED)
find_library(wthttp REQUIRED)
find_library(sqlpp REQUIRED)
build_external_project(project_sqlpp_connector sqlpp_connector
https://github.com/matthijs/sqlpp11-connector-postgresql.git
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_LOCATION}
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}
-DENABLE_TESTS=FALSE
-DDATE_INCLUDE_DIR=${EXTERNAL_LOCATION}/include/date
-DSQLPP11_INCLUDE_DIR=${EXTERNAL_LOCATION}/include
)