52 lines
1.8 KiB
C++
52 lines
1.8 KiB
C++
|
|
import std;
|
||
|
|
import Crafter.Build;
|
||
|
|
namespace fs = std::filesystem;
|
||
|
|
using namespace Crafter;
|
||
|
|
|
||
|
|
extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> args) {
|
||
|
|
constexpr std::array<std::string_view, 8> mathInterfaces = {
|
||
|
|
"interfaces/Crafter.Math-Basic",
|
||
|
|
"interfaces/Crafter.Math",
|
||
|
|
"interfaces/Crafter.Math-Common",
|
||
|
|
"interfaces/Crafter.Math-Vector",
|
||
|
|
"interfaces/Crafter.Math-Intersection",
|
||
|
|
"interfaces/Crafter.Math-MatrixRowMajor",
|
||
|
|
"interfaces/Crafter.Math-VectorF16",
|
||
|
|
"interfaces/Crafter.Math-VectorF32",
|
||
|
|
};
|
||
|
|
|
||
|
|
Configuration cfg;
|
||
|
|
cfg.path = "./";
|
||
|
|
cfg.name = "Crafter.Math";
|
||
|
|
cfg.outputName = "Crafter.Math";
|
||
|
|
ApplyStandardArgs(cfg, args);
|
||
|
|
cfg.type = ConfigurationType::LibraryStatic;
|
||
|
|
{
|
||
|
|
std::array<fs::path, 8> ifaces;
|
||
|
|
std::ranges::copy(mathInterfaces, ifaces.begin());
|
||
|
|
std::array<fs::path, 0> impls = {};
|
||
|
|
cfg.GetInterfacesAndImplementations(ifaces, impls);
|
||
|
|
}
|
||
|
|
|
||
|
|
auto addVectorTest = [&](std::string march, std::string mtune) {
|
||
|
|
Test t;
|
||
|
|
t.config.path = "./";
|
||
|
|
t.config.name = std::format("Vector-{}", march);
|
||
|
|
t.config.outputName = t.config.name;
|
||
|
|
t.config.target = cfg.target;
|
||
|
|
t.config.type = ConfigurationType::Executable;
|
||
|
|
t.config.march = march;
|
||
|
|
t.config.mtune = mtune;
|
||
|
|
t.config.debug = cfg.debug;
|
||
|
|
std::array<fs::path, 8> ifaces;
|
||
|
|
std::ranges::copy(mathInterfaces, ifaces.begin());
|
||
|
|
std::array<fs::path, 1> impls = { "tests/Vector" };
|
||
|
|
t.config.GetInterfacesAndImplementations(ifaces, impls);
|
||
|
|
cfg.tests.push_back(std::move(t));
|
||
|
|
};
|
||
|
|
addVectorTest("sapphirerapids", "native");
|
||
|
|
addVectorTest("x86-64-v4", "generic");
|
||
|
|
addVectorTest("x86-64-v3", "generic");
|
||
|
|
|
||
|
|
return cfg;
|
||
|
|
}
|