144 lines
4.5 KiB
CMake
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
|
|
)
|
|
|