add install deps script

This commit is contained in:
Bartosz Wieczorek 2018-02-27 08:26:29 +01:00
parent 4770ccc681
commit f8fb009cd6
8 changed files with 103 additions and 144 deletions

View File

@ -1,46 +1,3 @@
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})
@ -51,98 +8,20 @@ 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(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(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_LIBWTDBO=TRUE
-DENABLE_QT4=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_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-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_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-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 GLOBAL)
link_directories(${EXTERNAL_LOCATION}/lib GLOBAL)
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_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-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
)
#set(MAKE_CMD "${CMAKE_CURRENT_SOURCE_DIR}/cmake/install_deps.sh")
#MESSAGE("COMMAND: ${MAKE_CMD} ${CMAKE_COMMAND} ${CMAKE_GENERATOR} ${CMAKE_CXX_COMPILER} ${CMAKE_C_COMPILER} ${CMAKE_PREFIX_PATH}")
#execute_process(
# COMMAND x-terminal-emulator -e "sudo ${MAKE_CMD} ${CMAKE_GENERATOR} ${CMAKE_COMMAND} ${CMAKE_CXX_COMPILER} ${CMAKE_C_COMPILER} ${CMAKE_PREFIX_PATH}"
# WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/external )

77
cmake/install_deps.sh Executable file
View File

@ -0,0 +1,77 @@
CMAKE_COMMAND=$1
CMAKE_GENERATOR=$2
CMAKE_CXX_COMPILER=$3
CMAKE_C_COMPILER=$4
CMAKE_PREFIX_PATH=$5
# clone all
if [ ! -d date/.git ]; then
git clone --depth=1 https://github.com/HowardHinnant/date.git
else
cd date; git pull; cd ../
fi
if [ ! -d sqlpp11/.git ]; then
git clone -b develop --depth=1 https://github.com/rbock/sqlpp11.git
else
cd sqlpp11; git pull; cd ../
fi
if [ ! -d sqlpp11-connector-postgresql/.git ]; then
git clone -b develop --depth=1 https://github.com/matthijs/sqlpp11-connector-postgresql.git
else
cd sqlpp11-connector-postgresql; git pull; cd ../
fi
if [ ! -d wt/.git ]; then
git clone --depth=1 https://github.com/emweb/wt.git
else
cd wt; git pull; cd ../
fi
# install all
mkdir date-build; cd date-build
${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ../date -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} \
-DTZ_CXX_STANDARD=14
${CMAKE_COMMAND} --build . --target install
cd ../
mkdir sqlpp11-build; cd sqlpp11-build
${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ../sqlpp11 -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}\
-DENABLE_TESTS=FALSE
${CMAKE_COMMAND} --build . --target install
cd ../
mkdir sqlpp11-connector-postgresql-build; cd sqlpp11-connector-postgresql-build
${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ../sqlpp11-connector-postgresql -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}\
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}\
-DENABLE_TESTS=FALSE
${CMAKE_COMMAND} --build . --target install
cd ../
mkdir wt-build; cd wt-build
${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ../wt -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} \
-DBoost_NO_BOOST_CMAKE=TRUE\
-DBoost_NO_SYSTEM_PATHS=TRUE\
-DBUILD_EXAMPLES=OFF\
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}\
-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_LIBWTDBO=TRUE\
-DENABLE_QT4=OFF\
-DENABLE_OPENGL=OFF\
-DENABLE_UNWIND=OFF\
-DCONNECTOR_FCGI=OFF
${CMAKE_COMMAND} --build . --target install
cd ../
echo "NOW WAIT"
sleep 100000

View File

@ -1 +1,4 @@
find_package(Sqlpp11 REQUIRED)
find_package(Sqlpp-connector-postgresql REQUIRED)
add_subdirectory(postgresql_connector)

View File

@ -14,8 +14,8 @@ target_include_directories(${LIB} PRIVATE ${PostgreSQL_INCLUDE_DIRS})
target_include_directories(${LIB} PUBLIC include)
target_link_libraries(${LIB} PUBLIC nlohmann_json)
target_link_libraries(${LIB} PRIVATE eedb)
target_link_libraries(${LIB} PRIVATE sqlpp-postgresql)
target_link_libraries(${LIB} PRIVATE eedb stdc++fs)
target_link_libraries(${LIB} PRIVATE sqlpp11-connector-postgresql pq Boost::system Boost::filesystem)
# add cotire
set_target_properties(${LIB} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE)

View File

@ -2,6 +2,8 @@
#include <sqlpp11/postgresql/connection_config.h>
#include <functional>
namespace Wt {
class WEnvironment;
} // namespace Wt
@ -11,6 +13,6 @@ namespace eedb::db {
class PgConfig : public sqlpp::postgresql::connection_config {
public:
PgConfig();
explicit PgConfig(const Wt::WEnvironment & env);
explicit PgConfig(std::function< bool(const std::string &, std::string &) > readProperty);
};
} // namespace eedb::db

View File

@ -7,7 +7,7 @@
#include <sqlpp11/sqlpp11.h>
namespace eedb::db{
void exec_file(PgConnection & db, const std::experimental::filesystem::v1::__cxx11::path & filepath) {
void exec_file(PgConnection & db, const std::experimental::filesystem::path & filepath) {
std::ifstream stream(filepath);
std::string filebuf{std::istreambuf_iterator< char >(stream), std::istreambuf_iterator< char >()};

View File

@ -1,8 +1,5 @@
#include "config.hpp"
#include <Wt/WEnvironment.h>
#include <Wt/WServer.h>
namespace eedb::db {
PgConfig::PgConfig() {
@ -14,25 +11,25 @@ PgConfig::PgConfig() {
debug = true;
}
PgConfig::PgConfig(const Wt::WEnvironment & env) {
auto readString = [&env](auto && name, auto & val, auto def) {
if(!env.server()->readConfigurationProperty(name, val)) {
PgConfig::PgConfig(std::function< bool(const std::string &, std::string &) > readProperty) {
auto readString = [&readProperty](auto && name, auto & val, auto def) {
if(!readProperty(name, val)) {
val = def;
}
};
auto readInt = [&env](auto && name, auto & val, auto def) {
auto readInt = [&readProperty](auto && name, auto & val, auto def) {
std::string tmp;
if(env.server()->readConfigurationProperty(name, tmp)) {
if(readProperty(name, tmp)) {
val = std::atoi(tmp.c_str());
} else {
val = def;
}
};
auto readBool = [&env](auto && name, auto & val, auto def) {
auto readBool = [&readProperty](auto && name, auto & val, auto def) {
std::string tmp;
if(env.server()->readConfigurationProperty(name, tmp)) {
if(readProperty(name, tmp)) {
val = tmp == "true";
} else {
val = def;

View File

@ -3,6 +3,7 @@ set(LIB widgets)
file(GLOB widget_SOURCE src/*)
# find packages
find_package(wt)
#find_package(Wt REQUIRED)
# create library