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(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0)
set(BOOST_MAJOR_VERSION 1)
set(BOOST_MINOR_VERSION 85)
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(CURL2_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(EXPAT2_VERSION 2_6_2)
set(GCC_VERSION 14.2.0)
set(GTEST_VERSION 1.15.2)
set(ICU_VERSION 75-1)
@ -21,7 +21,7 @@ set(OPENSSL_VERSION 3.3.1)
set(PKG_CONFIG_VERSION 0.29.2)
set(PUGIXML_VERSION 1.14)
set(SPDLOG_VERSION 1.14.1)
set(SQLITE2_VERSION 3.46.1)
set(SQLITE_VERSION 3460100)
set(SQLITE2_VERSION 3.46.1)
set(STDUUID_VERSION 1.2.3)
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[PUGIXML]="3rd_party/pugixml-*"
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[TESTING]="3rd_party/googletest-*"
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
SOFTWARE.
*/
#ifndef INCLUDE_DATABASE_DB_COMMON_HPP_
#define INCLUDE_DATABASE_DB_COMMON_HPP_
#ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_COMMON_HPP_
#define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_COMMON_HPP_
#if defined(PROJECT_ENABLE_SQLITE)
#include "utils/error_utils.hpp"
namespace repertory::db {
namespace repertory::utils::db::sqlite {
using db_types_t = std::variant<std::int64_t, std::string>;
struct sqlite3_deleter {
@ -187,14 +186,7 @@ private:
mutable std::int32_t res_;
private:
void set_res(std::int32_t res, std::string_view function) const {
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;
}
void set_res(std::int32_t res) const { res_ = res; }
public:
[[nodiscard]] auto ok() const -> bool {
@ -208,30 +200,28 @@ public:
}
[[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();
if (not has_row()) {
return false;
}
row = db_row{context_};
set_res(sqlite3_step(context_->stmt.get()), function_name);
set_res(sqlite3_step(context_->stmt.get()));
return true;
}
[[nodiscard]] auto has_row() const -> bool { return res_ == SQLITE_ROW; }
void next_row() const {
constexpr const auto *function_name =
static_cast<const char *>(__FUNCTION__);
if (has_row()) {
set_res(sqlite3_step(context_->stmt.get()), function_name);
if (not has_row()) {
return;
}
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
SOFTWARE.
*/
#ifndef INCLUDE_DATABASE_DB_DELETE_HPP_
#define INCLUDE_DATABASE_DB_DELETE_HPP_
#ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_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 {
public:
struct context final : db_context_t {
@ -59,6 +60,7 @@ public:
[[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
SOFTWARE.
*/
#ifndef INCLUDE_DATABASE_DB_INSERT_HPP_
#define INCLUDE_DATABASE_DB_INSERT_HPP_
#ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_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 {
public:
struct context final : db_context_t {
@ -59,6 +60,7 @@ public:
[[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
SOFTWARE.
*/
#ifndef INCLUDE_DATABASE_DB_SELECT_HPP_
#define INCLUDE_DATABASE_DB_SELECT_HPP_
#ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_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 {
public:
struct context final : db_context_t {
@ -73,6 +74,7 @@ public:
[[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
SOFTWARE.
*/
#ifndef INCLUDE_DATABASE_DB_UPDATE_HPP_
#define INCLUDE_DATABASE_DB_UPDATE_HPP_
#ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_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 {
public:
struct context final : db_context_t {
@ -70,6 +71,7 @@ public:
[[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
SOFTWARE.
*/
#ifndef INCLUDE_DATABASE_DB_WHERE_LIMIT_T_HPP_
#define INCLUDE_DATABASE_DB_WHERE_LIMIT_T_HPP_
#ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_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,
typename wn_t>
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
SOFTWARE.
*/
#ifndef INCLUDE_DATABASE_DB_WHERE_T_HPP_
#define INCLUDE_DATABASE_DB_WHERE_T_HPP_
#ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_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,
typename wn_t>
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
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,
std::string &err) -> bool {
char *err_msg{nullptr};
@ -45,4 +47,6 @@ void set_journal_mode(sqlite3 &db3) {
sqlite3_exec(&db3, "PRAGMA journal_mode = WAL;PRAGMA synchronous = NORMAL;",
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
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 {
std::stringstream query;
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);
}
} // 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
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,
db_types_t value) -> db_insert & {
context_->values[column_name] = value;
@ -97,4 +99,6 @@ auto db_insert::go() const -> db_result<context> {
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
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 & {
context_->columns.push_back(column_name);
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);
}
} // 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
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,
db_types_t value) -> db_update & {
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);
}
} // namespace repertory::db
} // namespace repertory::utils::db::sqlite
#endif // defined(PROJECT_ENABLE_SQLITE)