add install deps script
This commit is contained in:
parent
4770ccc681
commit
f8fb009cd6
@ -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
77
cmake/install_deps.sh
Executable 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
|
||||
@ -1 +1,4 @@
|
||||
find_package(Sqlpp11 REQUIRED)
|
||||
find_package(Sqlpp-connector-postgresql REQUIRED)
|
||||
|
||||
add_subdirectory(postgresql_connector)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 >()};
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -3,6 +3,7 @@ set(LIB widgets)
|
||||
file(GLOB widget_SOURCE src/*)
|
||||
|
||||
# find packages
|
||||
find_package(wt)
|
||||
#find_package(Wt REQUIRED)
|
||||
|
||||
# create library
|
||||
|
||||
Loading…
Reference in New Issue
Block a user