Files
funnygame/fpc/main.cpp
2025-06-02 19:56:18 +03:00

64 lines
1.4 KiB
C++

#include "public/helper.h"
#include "public/ld.h"
#include "tier0/platform.h"
#include "tier1/commandline.h"
#include "c.h"
#include "tier1/utlvector.h"
#include "signal.h"
int build()
{
CCProject compileScriptProject = {};
compileScriptProject.m_szName = "build";
compileScriptProject.files = {"build.cpp"};
compileScriptProject.includeDirectories = {"public","../public"};
compileScriptProject.bFPIC = true;
CLDProject linkScriptProject = compileScriptProject.Compile();
linkScriptProject.linkType = ELINK_DYNAMIC_LIBRARY;
CUtlString script = linkScriptProject.Link();
void *scriptDLL = Plat_LoadLibrary(script);
for (auto &build: BuildStages())
{
build->m_pMainFn();
};
Plat_UnloadLibrary(scriptDLL);
return 0;
};
void IEngine_Signal(int sig)
{
switch (sig)
{
case SIGSEGV:
case SIGILL:
case SIGABRT:
Plat_Backtrace();
Plat_FatalErrorFunc("Fault");
break;
default:
break;
};
_exit(0);
};
int main(int c, char **v)
{
#ifdef __linux
signal(SIGHUP, IEngine_Signal);
signal(SIGINT, IEngine_Signal);
signal(SIGQUIT, IEngine_Signal);
signal(SIGILL, IEngine_Signal);
signal(SIGTRAP, IEngine_Signal);
signal(SIGIOT, IEngine_Signal);
signal(SIGBUS, IEngine_Signal);
signal(SIGFPE, IEngine_Signal);
signal(SIGSEGV, IEngine_Signal);
signal(SIGTERM, IEngine_Signal);
V_printf("cool\n");
#endif
ICommandLine::CreateCommandLine(c, v);
if (ICommandLine::CheckParam("build"))
return build();
return 0;
};