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.build"; cfg.outputName = "crafter-build"; cfg.target = "x86_64-pc-linux-gnu"; cfg.type = ConfigurationType::Executable; for (std::string_view arg : args) { if (arg == "--debug") cfg.debug = true; } std::array interfaces = { "interfaces/Crafter.Build", "interfaces/Crafter.Build-Shader", "interfaces/Crafter.Build-Platform", "interfaces/Crafter.Build-Interface", "interfaces/Crafter.Build-Implementation", "interfaces/Crafter.Build-External", "interfaces/Crafter.Build-Clang", }; std::array implementations = { "implementations/Crafter.Build-Shader", "implementations/Crafter.Build-Platform", "implementations/Crafter.Build-Interface", "implementations/Crafter.Build-Implementation", "implementations/Crafter.Build-External", "implementations/Crafter.Build-Clang", "implementations/main", }; cfg.GetInterfacesAndImplementations(interfaces, implementations); ExternalDependency& glslang = cfg.externalDependencies.emplace_back(); glslang.name = "glslang"; glslang.source.url = "https://github.com/KhronosGroup/glslang.git"; glslang.source.branch = "main"; glslang.builder = ExternalBuilder::CMake; glslang.options = { "-DENABLE_OPT=OFF" }; glslang.includeDirs = { "" }; glslang.libs = { "SPIRV", "GenericCodeGen", "glslang", "OSDependent", "MachineIndependent", "glslang-default-resource-limits" }; cfg.linkFlags.push_back("-Wl,--export-dynamic"); cfg.linkFlags.push_back("-ldl"); return cfg; }