Started work on build system

This commit is contained in:
2025-05-31 00:42:18 +03:00
parent b83078553e
commit 953cca2aa4
16 changed files with 389 additions and 0 deletions

42
fpc/library/ld.cpp Normal file
View File

@@ -0,0 +1,42 @@
#include "ld.h"
#include "libgen.h"
CUtlString CLDProject::Link( void )
{
CUtlString szFileName;
unsigned int hash = GenerateProjectHash();
switch(linkType)
{
case ELINK_EXECUTABLE:
szFileName = CUtlString("%s", m_szName.GetString());
break;
case ELINK_STATIC_LIBRARY:
szFileName = CUtlString("lib%s.a", m_szName.GetString());
break;
case ELINK_DYNAMIC_LIBRARY:
szFileName = CUtlString("lib%s.so", m_szName.GetString());
break;
}
CUtlString szOutputFile = CUtlString("%s/ld/%u/%s",FPC_TEMPORAL_DIRNAME, hash, szFileName.GetString());
CUtlString szOutputDir = szOutputFile;
szOutputDir = dirname(szOutputDir);
IFileSystem2::MakeDirectory(szOutputDir);
if (linkType == ELINK_STATIC_LIBRARY)
{
CUtlVector<CUtlString> args = {
"rcs",
};
IRunner::Run("ar", args);
} else {
CUtlVector<CUtlString> args = {
"-o",
szOutputFile,
};
if (linkType == ELINK_DYNAMIC_LIBRARY)
args.AppendTail("-shared");
for (auto object: objects)
args.AppendTail(object.m_szObjectFile);
IRunner::Run("clang++", args);
}
return szOutputFile;
};