updated build system

This commit is contained in:
Scott E. Graves 2024-10-09 09:15:18 -05:00
parent 13a55bff61
commit 8bb291bbd9
14 changed files with 107 additions and 85 deletions

View File

@ -1,15 +1,15 @@
set(BINUTILS_VERSION 2.41) set(BINUTILS_VERSION 2.41)
set(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0)
set(BOOST_MAJOR_VERSION 1) set(BOOST_MAJOR_VERSION 1)
set(BOOST_MINOR_VERSION 85) set(BOOST_MINOR_VERSION 85)
set(BOOST_PATCH_VERSION 0) set(BOOST_PATCH_VERSION 0)
set(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0)
set(CPP_HTTPLIB_VERSION 0.16.3) set(CPP_HTTPLIB_VERSION 0.16.3)
set(CURL2_VERSION 8_9_1)
set(CURL_VERSION 8.9.1) set(CURL_VERSION 8.9.1)
set(EXPAT2_VERSION 2_6_2) set(CURL2_VERSION 8_9_1)
set(EXPAT_VERSION 2.6.2) set(EXPAT_VERSION 2.6.2)
set(EXPAT2_VERSION 2_6_2)
set(GCC_VERSION 14.2.0) set(GCC_VERSION 14.2.0)
set(GTEST_VERSION 1.15.2) set(GTEST_VERSION 1.15.2)
set(ICU_VERSION 75-1) set(ICU_VERSION 75-1)
@ -21,7 +21,7 @@ set(OPENSSL_VERSION 3.3.1)
set(PKG_CONFIG_VERSION 0.29.2) set(PKG_CONFIG_VERSION 0.29.2)
set(PUGIXML_VERSION 1.14) set(PUGIXML_VERSION 1.14)
set(SPDLOG_VERSION 1.14.1) set(SPDLOG_VERSION 1.14.1)
set(SQLITE2_VERSION 3.46.1)
set(SQLITE_VERSION 3460100) set(SQLITE_VERSION 3460100)
set(SQLITE2_VERSION 3.46.1)
set(STDUUID_VERSION 1.2.3) set(STDUUID_VERSION 1.2.3)
set(ZLIB_VERSION 1.3.1) set(ZLIB_VERSION 1.3.1)

View File

@ -26,7 +26,7 @@ PROJECT_CLEANUP[LIBSODIUM]="3rd_party/libsodium-*:3rd_party/libsodium*"
PROJECT_CLEANUP[OPENSSL]="3rd_party/openssl-*" PROJECT_CLEANUP[OPENSSL]="3rd_party/openssl-*"
PROJECT_CLEANUP[PUGIXML]="3rd_party/pugixml-*" PROJECT_CLEANUP[PUGIXML]="3rd_party/pugixml-*"
PROJECT_CLEANUP[SPDLOG]="3rd_party/spdlog-*" PROJECT_CLEANUP[SPDLOG]="3rd_party/spdlog-*"
PROJECT_CLEANUP[SQLITE]="3rd_party/sqlite*" PROJECT_CLEANUP[SQLITE]="3rd_party/sqlite*:include/utils/db:src/utils/db"
PROJECT_CLEANUP[STDUUID]="3rd_party/stduuid-*" PROJECT_CLEANUP[STDUUID]="3rd_party/stduuid-*"
PROJECT_CLEANUP[TESTING]="3rd_party/googletest-*" PROJECT_CLEANUP[TESTING]="3rd_party/googletest-*"
PROJECT_CLEANUP[WINFSP]="3rd_party/winfsp-*" PROJECT_CLEANUP[WINFSP]="3rd_party/winfsp-*"

View File

@ -19,12 +19,11 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#ifndef INCLUDE_DATABASE_DB_COMMON_HPP_ #ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_COMMON_HPP_
#define INCLUDE_DATABASE_DB_COMMON_HPP_ #define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_COMMON_HPP_
#if defined(PROJECT_ENABLE_SQLITE)
#include "utils/error_utils.hpp" namespace repertory::utils::db::sqlite {
namespace repertory::db {
using db_types_t = std::variant<std::int64_t, std::string>; using db_types_t = std::variant<std::int64_t, std::string>;
struct sqlite3_deleter { struct sqlite3_deleter {
@ -187,14 +186,7 @@ private:
mutable std::int32_t res_; mutable std::int32_t res_;
private: private:
void set_res(std::int32_t res, std::string_view function) const { void set_res(std::int32_t res) const { res_ = res; }
if (res != SQLITE_OK && res != SQLITE_DONE && res != SQLITE_ROW) {
utils::error::raise_error(function, "failed to step|" +
std::to_string(res) + '|' +
sqlite3_errstr(res));
}
res_ = res;
}
public: public:
[[nodiscard]] auto ok() const -> bool { [[nodiscard]] auto ok() const -> bool {
@ -208,30 +200,28 @@ public:
} }
[[nodiscard]] auto get_row(std::optional<db_row<ctx_t>> &row) const -> bool { [[nodiscard]] auto get_row(std::optional<db_row<ctx_t>> &row) const -> bool {
constexpr const auto *function_name =
static_cast<const char *>(__FUNCTION__);
row.reset(); row.reset();
if (not has_row()) { if (not has_row()) {
return false; return false;
} }
row = db_row{context_}; row = db_row{context_};
set_res(sqlite3_step(context_->stmt.get()), function_name); set_res(sqlite3_step(context_->stmt.get()));
return true; return true;
} }
[[nodiscard]] auto has_row() const -> bool { return res_ == SQLITE_ROW; } [[nodiscard]] auto has_row() const -> bool { return res_ == SQLITE_ROW; }
void next_row() const { void next_row() const {
constexpr const auto *function_name = if (not has_row()) {
static_cast<const char *>(__FUNCTION__); return;
if (has_row()) {
set_res(sqlite3_step(context_->stmt.get()), function_name);
} }
set_res(sqlite3_step(context_->stmt.get()));
} }
}; };
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // INCLUDE_DATABASE_DB_COMMON_HPP_ #endif // defined(PROJECT_ENABLE_SQLITE)
#endif // REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_COMMON_HPP_

View File

@ -19,14 +19,15 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#ifndef INCLUDE_DATABASE_DB_DELETE_HPP_ #ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_DELETE_HPP_
#define INCLUDE_DATABASE_DB_DELETE_HPP_ #define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_DELETE_HPP_
#if defined(PROJECT_ENABLE_SQLITE)
#include "database/db_common.hpp" #include "utils/db/sqlite/db_common.hpp"
#include "database/db_where_t.hpp" #include "utils/db/sqlite/db_where_t.hpp"
namespace repertory::db { namespace repertory::utils::db::sqlite {
class db_delete final { class db_delete final {
public: public:
struct context final : db_context_t { struct context final : db_context_t {
@ -59,6 +60,7 @@ public:
[[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t; [[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t;
}; };
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // INCLUDE_DATABASE_DB_DELETE_HPP_ #endif // defined(PROJECT_ENABLE_SQLITE)
#endif // REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_DELETE_HPP_

View File

@ -19,12 +19,13 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#ifndef INCLUDE_DATABASE_DB_INSERT_HPP_ #ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_INSERT_HPP_
#define INCLUDE_DATABASE_DB_INSERT_HPP_ #define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_INSERT_HPP_
#if defined(PROJECT_ENABLE_SQLITE)
#include "database/db_common.hpp" #include "utils/db/sqlite/db_common.hpp"
namespace repertory::db { namespace repertory::utils::db::sqlite {
class db_insert final { class db_insert final {
public: public:
struct context final : db_context_t { struct context final : db_context_t {
@ -59,6 +60,7 @@ public:
[[nodiscard]] auto go() const -> db_result<context>; [[nodiscard]] auto go() const -> db_result<context>;
}; };
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // INCLUDE_DATABASE_DB_INSERT_HPP_ #endif // defined(PROJECT_ENABLE_SQLITE)
#endif // REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_INSERT_HPP_

View File

@ -19,14 +19,15 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#ifndef INCLUDE_DATABASE_DB_SELECT_HPP_ #ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_SELECT_HPP_
#define INCLUDE_DATABASE_DB_SELECT_HPP_ #define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_SELECT_HPP_
#if defined(PROJECT_ENABLE_SQLITE)
#include "database/db_common.hpp" #include "utils/db/sqlite/db_common.hpp"
#include "database/db_where_limit_t.hpp" #include "utils/db/sqlite/db_where_limit_t.hpp"
namespace repertory::db { namespace repertory::utils::db::sqlite {
class db_select final { class db_select final {
public: public:
struct context final : db_context_t { struct context final : db_context_t {
@ -73,6 +74,7 @@ public:
[[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t; [[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t;
}; };
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // INCLUDE_DATABASE_DB_SELECT_HPP_ #endif // defined(PROJECT_ENABLE_SQLITE)
#endif // REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_SELECT_HPP_

View File

@ -19,14 +19,15 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#ifndef INCLUDE_DATABASE_DB_UPDATE_HPP_ #ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_UPDATE_HPP_
#define INCLUDE_DATABASE_DB_UPDATE_HPP_ #define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_UPDATE_HPP_
#if defined(PROJECT_ENABLE_SQLITE)
#include "database/db_common.hpp" #include "utils/db/sqlite/db_common.hpp"
#include "database/db_where_limit_t.hpp" #include "utils/db/sqlite/db_where_limit_t.hpp"
namespace repertory::db { namespace repertory::utils::db::sqlite {
class db_update final { class db_update final {
public: public:
struct context final : db_context_t { struct context final : db_context_t {
@ -70,6 +71,7 @@ public:
[[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t; [[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t;
}; };
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // INCLUDE_DATABASE_DB_UPDATE_HPP_ #endif // defined(PROJECT_ENABLE_SQLITE)
#endif // REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_UPDATE_HPP_

View File

@ -19,12 +19,13 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#ifndef INCLUDE_DATABASE_DB_WHERE_LIMIT_T_HPP_ #ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_LIMIT_T_HPP_
#define INCLUDE_DATABASE_DB_WHERE_LIMIT_T_HPP_ #define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_LIMIT_T_HPP_
#if defined(PROJECT_ENABLE_SQLITE)
#include "database/db_common.hpp" #include "utils/db/sqlite/db_common.hpp"
namespace repertory::db { namespace repertory::utils::db::sqlite {
template <typename cn_t, typename ctx_t, typename op_t, typename w_t, template <typename cn_t, typename ctx_t, typename op_t, typename w_t,
typename wn_t> typename wn_t>
struct db_next_limit_t final { struct db_next_limit_t final {
@ -209,6 +210,7 @@ template <typename ctx_t, typename op_t> struct db_where_with_limit_t final {
}; };
} }
}; };
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // INCLUDE_DATABASE_DB_WHERE_LIMIT_T_HPP_ #endif // defined(PROJECT_ENABLE_SQLITE)
#endif // REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_LIMIT_T_HPP_

View File

@ -19,12 +19,13 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#ifndef INCLUDE_DATABASE_DB_WHERE_T_HPP_ #ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_T_HPP_
#define INCLUDE_DATABASE_DB_WHERE_T_HPP_ #define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_T_HPP_
#if defined(PROJECT_ENABLE_SQLITE)
#include "database/db_common.hpp" #include "utils/db/sqlite/db_common.hpp"
namespace repertory::db { namespace repertory::utils::db::sqlite {
template <typename cn_t, typename ctx_t, typename op_t, typename w_t, template <typename cn_t, typename ctx_t, typename op_t, typename w_t,
typename wn_t> typename wn_t>
struct db_next_t final { struct db_next_t final {
@ -185,6 +186,7 @@ template <typename ctx_t, typename op_t> struct db_where_t final {
}; };
} }
}; };
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // INCLUDE_DATABASE_DB_WHERE_T_HPP_ #endif // defined(PROJECT_ENABLE_SQLITE)
#endif // REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_T_HPP_

View File

@ -19,9 +19,11 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#include "database/db_common.hpp" #include "utils/db/sqlite/db_common.hpp"
namespace repertory::db { #if defined(PROJECT_ENABLE_SQLITE)
namespace repertory::utils::db::sqlite {
auto execute_sql(sqlite3 &db3, const std::string &sql, auto execute_sql(sqlite3 &db3, const std::string &sql,
std::string &err) -> bool { std::string &err) -> bool {
char *err_msg{nullptr}; char *err_msg{nullptr};
@ -45,4 +47,6 @@ void set_journal_mode(sqlite3 &db3) {
sqlite3_exec(&db3, "PRAGMA journal_mode = WAL;PRAGMA synchronous = NORMAL;", sqlite3_exec(&db3, "PRAGMA journal_mode = WAL;PRAGMA synchronous = NORMAL;",
nullptr, nullptr, nullptr); nullptr, nullptr, nullptr);
} }
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // defined(PROJECT_ENABLE_SQLITE)

View File

@ -19,9 +19,11 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#include "database/db_delete.hpp" #include "utils/db/sqlite/db_delete.hpp"
namespace repertory::db { #if defined(PROJECT_ENABLE_SQLITE)
namespace repertory::utils::db::sqlite {
auto db_delete::dump() const -> std::string { auto db_delete::dump() const -> std::string {
std::stringstream query; std::stringstream query;
query << "DELETE FROM \"" << context_->table_name << "\""; query << "DELETE FROM \"" << context_->table_name << "\"";
@ -92,4 +94,6 @@ auto db_delete::where(std::string column_name) const -> context::w_t::cn_t {
return context_->where->where(column_name); return context_->where->where(column_name);
} }
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // defined(PROJECT_ENABLE_SQLITE)

View File

@ -19,9 +19,11 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#include "database/db_insert.hpp" #include "utils/db/sqlite/db_insert.hpp"
namespace repertory::db { #if defined(PROJECT_ENABLE_SQLITE)
namespace repertory::utils::db::sqlite {
auto db_insert::column_value(std::string column_name, auto db_insert::column_value(std::string column_name,
db_types_t value) -> db_insert & { db_types_t value) -> db_insert & {
context_->values[column_name] = value; context_->values[column_name] = value;
@ -97,4 +99,6 @@ auto db_insert::go() const -> db_result<context> {
return {context_, res}; return {context_, res};
} }
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // defined(PROJECT_ENABLE_SQLITE)

View File

@ -19,9 +19,11 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#include "database/db_select.hpp" #include "utils/db/sqlite/db_select.hpp"
namespace repertory::db { #if defined(PROJECT_ENABLE_SQLITE)
namespace repertory::utils::db::sqlite {
auto db_select::column(std::string column_name) -> db_select & { auto db_select::column(std::string column_name) -> db_select & {
context_->columns.push_back(column_name); context_->columns.push_back(column_name);
return *this; return *this;
@ -149,4 +151,6 @@ auto db_select::where(std::string column_name) const -> context::w_t::cn_t {
return context_->where->where(column_name); return context_->where->where(column_name);
} }
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // defined(PROJECT_ENABLE_SQLITE)

View File

@ -19,9 +19,11 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#include "database/db_update.hpp" #include "utils/db/sqlite/db_update.hpp"
namespace repertory::db { #if defined(PROJECT_ENABLE_SQLITE)
namespace repertory::utils::db::sqlite {
auto db_update::column_value(std::string column_name, auto db_update::column_value(std::string column_name,
db_types_t value) -> db_update & { db_types_t value) -> db_update & {
context_->column_values[column_name] = value; context_->column_values[column_name] = value;
@ -159,4 +161,6 @@ auto db_update::where(std::string column_name) const -> context::w_t::cn_t {
return context_->where->where(column_name); return context_->where->where(column_name);
} }
} // namespace repertory::db } // namespace repertory::utils::db::sqlite
#endif // defined(PROJECT_ENABLE_SQLITE)