Crafter.DB/project.cpp
Jorijn van der Graaf bfd0cc261b
Initial commit: Crafter.DB
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>
2026-10-17 04:16:51 +02:00

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;
}