started reworking linker

This commit is contained in:
2026-01-01 14:45:48 +02:00
parent 0b8fb15420
commit 37f689f36d
9 changed files with 198 additions and 3 deletions

View File

@@ -6,3 +6,65 @@ void LinkProject_t::AddObject( Object_t object )
{
objects.AppendTail(object);
};
CUtlString ILinker::GetOutputObjectName( LinkProject_t *pProject, unsigned int hash, CUtlString szFileName )
{
CUtlString szTarget = pProject->m_target.GetTriplet();
CUtlString szFileNameFormat;
switch (pProject->linkType)
{
case ELINK_EXECUTABLE:
szFileNameFormat = CUtlString(pProject->m_target.GetExecutableFileFormat(),pProject->m_szName.GetString());
break;
case ELINK_DYNAMIC_LIBRARY:
szFileNameFormat = CUtlString(pProject->m_target.GetDynamicLibraryFileFormat(),pProject->m_szName.GetString());
break;
case ELINK_STATIC_LIBRARY:
szFileNameFormat = CUtlString(pProject->m_target.GetStaticLibraryFileFormat(),pProject->m_szName.GetString());
break;
default:
break;
}
return CUtlString(
"%s/%s/ld/%u_%s/%s",
FPC_TEMPORAL_DIRNAME,
szTarget.GetString(),
hash,
pProject->m_szName.GetString(),
szFileNameFormat.GetString());
}
CUtlVector<CUtlString> ILinker::BuildLinkCommandLine( LinkProject_t *pProject, const char *szOutputFileName )
{
CUtlVector<CUtlString> cmd;
SetTarget(cmd, pProject);
SetOutputFile(cmd);
SetSysroot(cmd, pProject, NULL);
UseFullFile(cmd);
for (auto &o: pProject->objects)
{
LinkFile(cmd, o.m_szObjectFile);
}
UsePartialFile(cmd);
for (auto &o: pProject->libraryObjects)
{
LinkLibraryObject(cmd, o);
};
for (auto &o: pProject->libraries)
{
LinkLibrary(cmd, o);
};
for (auto &o: pProject->libraryDirectories)
{
LinkLibraryPath(cmd, o);
};
}
CUtlVector<CUtlString> ILinker::BuildArchiveCommandLine( LinkProject_t *pProject, const char *szOutputFileName )
{
CUtlVector<CUtlString> cmd;
}