#include "c.h" #include "helper.h" #include "ld.h" #include "target.h" ADD_DEPENDENCY_BUILD_FILE(tier0, "../external/funnystdlib/tier0/build.cpp") ADD_DEPENDENCY_BUILD_FILE(tier1, "../external/funnystdlib/tier1/build.cpp") ADD_DEPENDENCY_BUILD_FILE(tier2, "../external/funnystdlib/tier2/build.cpp") DECLARE_BUILD_STAGE(libshadercompiler) { CProject_t stProject; LinkProject_t stLinkProject; CUtlString szOutput; stProject.m_szName = "ShaderCompiler"; stProject.bFPIC = true; stProject.includeDirectories = { "../public", "../external/funnystdlib/public", "../external/slang/include", "../external/Vulkan-Headers/include", }; stProject.files = { "slang/vulkan_spirv.cpp", "../materialsystem/compiledshader.cpp", }; stLinkProject = ccompiler->Compile(&stProject); stLinkProject.libraryObjects = { GET_PROJECT_LIBRARY(tier0, "tier0"), }; stLinkProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier1, "tier1")}); stLinkProject.linkType = ELINK_DYNAMIC_LIBRARY; szOutput = linker->Link(&stLinkProject); ADD_OUTPUT_OBJECT("lib", szOutput); return 0; } DECLARE_BUILD_STAGE(shadercompiler) { CProject_t stProject; LinkProject_t stLinkProject; CUtlString szOutput; stProject.m_szName = "fsc"; stProject.includeDirectories = {"../public", "../external/funnystdlib/public"}; stProject.files = { "main.cpp", "../materialsystem/compiledshader.cpp", }; stLinkProject = ccompiler->Compile(&stProject); stLinkProject.linkType = ELINK_EXECUTABLE; stLinkProject.libraryObjects = { GET_PROJECT_LIBRARY(tier0, "tier0"), }; stLinkProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier1, "tier1")}); stLinkProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier2, "tier2")}); stLinkProject.libraries = {"slang-compiler","slang-glslang-2025.24.2"}; stLinkProject.libraryDirectories = {"../external/linux"}; szOutput = linker->Link(&stLinkProject); filesystem2->MakeDirectory(CUtlString("../build/tools")); filesystem2->CopyFile(CUtlString("../build/tools"), szOutput); filesystem2->CopyFile(CUtlString("../build/tools"), GET_PROJECT_LIBRARY(tier0, "tier0")); filesystem2->CopyFile(CUtlString("../build/tools"), GET_PROJECT_LIBRARY(filesystem_std, "fs")); filesystem2->CopyFile(CUtlString("../build/tools"), GET_PROJECT_LIBRARY(libshadercompiler, "lib")); filesystem2->CopyFile(CUtlString("../build/tools"), "../external/linux/libslang-compiler.so.0.2025.24.2"); filesystem2->CopyFile(CUtlString("../build/tools"), "../external/linux/libslang-glslang-2025.24.2.so"); ADD_OUTPUT_OBJECT("compiler", szOutput); return 1; } DECLARE_BUILD_STAGE(compileshaders) { CUtlString szShaderCompiler = "../build/tools/fsc"; if (CommandLine()->CheckParam("-nofsc")) return 0; filesystem2->MakeDirectory(CUtlString("../build/funnygame/assets")); CUtlVector args = {"-i", "../funnyassets", "-o", "../build/funnygame/assets"}; runner->Run(szShaderCompiler, args); runner->Wait(); V_printf("Cool\n"); return 0; };