Header-only C++26 module library for typed, file-backed tables with schema reflection, migrations, queries, and crash-safe commits. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
53 lines
2.3 KiB
C++
53 lines
2.3 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-only
|
|
// SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
|
|
|
|
import std;
|
|
import Crafter.Build;
|
|
namespace fs = std::filesystem;
|
|
using namespace Crafter;
|
|
|
|
extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> args) {
|
|
Configuration cfg;
|
|
cfg.path = "./";
|
|
cfg.name = "Crafter.DB";
|
|
cfg.outputName = "Crafter.DB";
|
|
cfg.type = ConfigurationType::LibraryStatic;
|
|
ApplyStandardArgs(cfg, args);
|
|
std::array<fs::path, 13> ifaces = {
|
|
"interfaces/Crafter.DB",
|
|
"interfaces/Crafter.DB-Error",
|
|
"interfaces/Crafter.DB-Reflect",
|
|
"interfaces/Crafter.DB-Format",
|
|
"interfaces/Crafter.DB-Formatter",
|
|
"interfaces/Crafter.DB-Schema",
|
|
"interfaces/Crafter.DB-File",
|
|
"interfaces/Crafter.DB-Storage",
|
|
"interfaces/Crafter.DB-Codec",
|
|
"interfaces/Crafter.DB-Row",
|
|
"interfaces/Crafter.DB-Query",
|
|
"interfaces/Crafter.DB-Migration",
|
|
"interfaces/Crafter.DB-Table",
|
|
};
|
|
std::array<fs::path, 2> impls = { "implementations/Crafter.DB-File", "implementations/Crafter.DB-Storage" };
|
|
cfg.GetInterfacesAndImplementations(ifaces, impls);
|
|
|
|
// Tests link the local static library. Linux only: the engine uses
|
|
// flock, fallocate and fixed-address mmap.
|
|
if (cfg.target.ends_with("-linux-gnu")) {
|
|
cfg.AddTest("ShouldRoundTrip").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldKeepLayoutGolden").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldKeepViewsStableAcrossGrowth").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldQuery").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldCompareStringRefs").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldEraseAndCompact").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldMigrate").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldRejectSchemaChange").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldRecoverCommits").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldFormatCustomTypes").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldLockAcrossProcesses").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldVerify").Dependencies({ &cfg });
|
|
cfg.AddTest("ShouldReadWhileAppending").Dependencies({ &cfg });
|
|
cfg.AddTest("Benchmark").Dependencies({ &cfg });
|
|
}
|
|
return cfg;
|
|
}
|