eedb/cmake/FindAllRequirements.cmake
Bartosz Wieczorek 368b5dffdf fixup
2018-01-24 11:51:33 +01:00

132 lines
4.0 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}
CMAKE_ARGS ${ARGN}
INSTALL_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}")
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}
# -DSHARED_LIBS:BOOL=OFF
-DBoost_NO_BOOST_CMAKE=TRUE
-DBoost_NO_SYSTEM_PATHS=TRUE
-DBOOST_ROOT:PATHNAME=${_HUNTER_ROOT}
-DBOOST_INCLUDEDIR:FILEPATH=${_HUNTER_ROOT}/include
-DBOOST_LIBRARYDIR:FILEPATH=${_HUNTER_ROOT}/lib
# -DBoost_USE_STATIC_LIBS=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}")
build_external_project(project_hhdate date
https://github.com/HowardHinnant/date.git
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_LOCATION}
-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}
-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)