Files
funnygame/funnyassets/__build.cpp
2025-07-30 23:53:26 +03:00

80 lines
2.7 KiB
C++

#include "helper.h"
#include "c.h"
#include "ld.h"
#include "runner.h"
#include "target.h"
#include "tier1/utlstring.h"
#include "tier1/commandline.h"
void build_shader( const char *szName )
{
filesystem2->MakeDirectory(CUtlString("build/funnygame/metal/gfx"));
filesystem2->MakeDirectory(CUtlString("build/funnygame/vulkan/gfx"));
CUtlVector<CUtlString> slang_args = {
CUtlString("funnyassets/gfx_shaders/%s.slang", szName),
"-g",
"-target",
"spirv",
"-D",
"__SPIRV__=1",
"-o",
CUtlString("build/funnygame/vulkan/gfx/%s.shader", szName),
};
runner->Run("slangc", slang_args);
slang_args[3] = "metal";
slang_args[5] = "__METAL__=1";
slang_args[7] = CUtlString("build/funnygame/metal/gfx/%s.shader", szName);
runner->Run("slangc", slang_args);
runner->Wait();
};
DECLARE_BUILD_STAGE(assets)
{
if (CommandLine()->CheckParam("-noassets"))
return 0;
filesystem2->CopyDirectory("build", "tools");
filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/maps");
filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/gfx");
filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/fonts");
filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/textures");
filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/materials");
build_shader("mesh_frag");
build_shader("mesh_vert");
build_shader("fgui_rect_frag");
build_shader("fgui_rect_vert");
build_shader("fgui_text_frag");
build_shader("fgui_text_vert");
CUtlVector<CUtlString> python_args = {
"build/tools/makepak64.py",
CUtlString("build/funnygame/assets"),
bStaticBuild ? CUtlString("%s/bin/%s.pak", szOutputDir.GetString(), "rtt") : CUtlString("%s/funnygame/%s.pak", szOutputDir.GetString(), "rtt"),
};
runner->Run("python3", python_args);
if (Target_t::DefaultTarget().kernel == TARGET_KERNEL_IOS ||Target_t::DefaultTarget().kernel == TARGET_KERNEL_DARWIN)
{
python_args = {
"build/tools/makepak64.py",
CUtlString("build/funnygame/metal"),
bStaticBuild ? CUtlString("%s/bin/%s.pak", szOutputDir.GetString(), "metal") : CUtlString("%s/funnygame/%s.pak", szOutputDir.GetString(), "metal"),
};
runner->Run("python3", python_args);
} else {
python_args = {
"build/tools/makepak64.py",
CUtlString("build/funnygame/vulkan"),
bStaticBuild ? CUtlString("%s/bin/%s.pak", szOutputDir.GetString(), "vulkan") : CUtlString("%s/funnygame/%s.pak", szOutputDir.GetString(), "vulkan"),
};
runner->Run("python3", python_args);
}
runner->Wait();
if (bStaticBuild)
filesystem2->CopyFile(CUtlString("%s/bin", szOutputDir.GetString()), "funnyassets/default.cfg");
else
filesystem2->CopyFile(szOutputDir.GetString(), "funnyassets/default.cfg");
return 0;
};