// 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 args) { Configuration cfg; cfg.path = "./"; cfg.name = "Crafter.DB"; cfg.outputName = "Crafter.DB"; cfg.type = ConfigurationType::LibraryStatic; ApplyStandardArgs(cfg, args); std::array 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 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; }