brought back functionality from previous builds but now cross-platform

This commit is contained in:
2025-07-07 15:34:34 +03:00
parent 99eafb9443
commit 83bc9b7f16
61 changed files with 1210 additions and 581 deletions

View File

@@ -10,7 +10,10 @@ CUtlString CLDProject::Link( void )
switch(linkType)
{
case ELINK_EXECUTABLE:
szFileName = CUtlString("%s", m_szName.GetString());
if (m_target.kernel == TARGET_KERNEL_WINDOWS)
szFileName = CUtlString("%s.exe", m_szName.GetString());
else
szFileName = CUtlString("%s", m_szName.GetString());
break;
case ELINK_STATIC_LIBRARY:
szFileName = CUtlString("lib%s.a", m_szName.GetString());
@@ -50,6 +53,7 @@ CUtlString CLDProject::Link( void )
for (auto object: objects)
args.AppendTail(object.m_szObjectFile);
IRunner::Run("ar", args);
IRunner::Wait();
} else {
V_printf(" LINK %s\n", m_szName.GetString());
bool shouldRecompile = false;
@@ -70,10 +74,18 @@ CUtlString CLDProject::Link( void )
"-target",
m_target.GetTriplet(),
};
if (m_target.kernel == TARGET_KERNEL_WINDOWS)
{
args.AppendTail("-fuse-ld=lld");
args.AppendTail("-Wl,--whole-archive");
}
if (m_target.kernel == TARGET_KERNEL_DARWIN)
{
args.AppendTail("-isysroot");
args.AppendTail("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk");
args.AppendTail("-Wl,-export_dynamic");
args.AppendTail("-undefined");
args.AppendTail("dynamic_lookup");
}
if (m_target.kernel == TARGET_KERNEL_IOS)
{
@@ -89,18 +101,16 @@ CUtlString CLDProject::Link( void )
{
args.AppendTail("-rdynamic");
}
if (m_target.kernel == TARGET_KERNEL_DARWIN)
{
args.AppendTail("-Wl,-export_dynamic");
args.AppendTail("-undefined");
args.AppendTail("dynamic_lookup");
}
if (linkType == ELINK_DYNAMIC_LIBRARY)
{
args.AppendTail("-shared");
}
for (auto object: objects)
args.AppendTail(object.m_szObjectFile);
if (m_target.kernel == TARGET_KERNEL_WINDOWS)
{
args.AppendTail("-Wl,--no-whole-archive");
}
for (auto lib: libraries)
{
args.AppendTail("-l");
@@ -116,7 +126,9 @@ CUtlString CLDProject::Link( void )
args.AppendTail("-framework");
args.AppendTail(framework);
}
IRunner::Run("clang++", args);
IRunner::Wait();
}
compiled:
return szOutputFile;