Files
funnygame/fpc/library/ld.cpp
2026-01-01 14:45:48 +02:00

71 lines
1.7 KiB
C++

#include "ld.h"
ILinker *linker;
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;
}