#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 ILinker::BuildLinkCommandLine( LinkProject_t *pProject, const char *szOutputFileName ) { CUtlVector 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 ILinker::BuildArchiveCommandLine( LinkProject_t *pProject, const char *szOutputFileName ) { CUtlVector cmd; }