some abi fixes for fpc
This commit is contained in:
@@ -11,6 +11,14 @@ CUtlString Target_t::GetTriplet()
|
||||
|
||||
if ( cpu == TARGET_CPU_AMD64 )
|
||||
triplet.AppendTail("x86_64");
|
||||
if ( cpu == TARGET_CPU_80386 )
|
||||
triplet.AppendTail("i386");
|
||||
if ( cpu == TARGET_CPU_80486 )
|
||||
triplet.AppendTail("i486");
|
||||
if ( cpu == TARGET_CPU_80586 )
|
||||
triplet.AppendTail("i586");
|
||||
if ( cpu == TARGET_CPU_80686 )
|
||||
triplet.AppendTail("i686");
|
||||
if ( cpu == TARGET_CPU_AARCH64 )
|
||||
triplet.AppendTail("aarch64");
|
||||
if ( cpu == TARGET_CPU_WASM32 )
|
||||
@@ -19,11 +27,9 @@ CUtlString Target_t::GetTriplet()
|
||||
if ( kernel == TARGET_KERNEL_UNKNOWN )
|
||||
triplet.AppendTail("unknown-unknown");
|
||||
if ( kernel == TARGET_KERNEL_LINUX )
|
||||
triplet.AppendTail("unknown-linux-gnu");
|
||||
if ( kernel == TARGET_KERNEL_WINDOWS_GNU )
|
||||
triplet.AppendTail("pc-windows-gnu");
|
||||
if ( kernel == TARGET_KERNEL_WINDOWS_MSVC )
|
||||
triplet.AppendTail("pc-windows-msvc");
|
||||
triplet.AppendTail("unknown-linux");
|
||||
if ( kernel == TARGET_KERNEL_WINDOWS )
|
||||
triplet.AppendTail("pc-windows");
|
||||
if ( kernel == TARGET_KERNEL_DARWIN )
|
||||
triplet.AppendTail("apple-darwin");
|
||||
if ( kernel == TARGET_KERNEL_IOS )
|
||||
@@ -34,6 +40,12 @@ CUtlString Target_t::GetTriplet()
|
||||
triplet.AppendTail("unknown-wasi");
|
||||
if ( kernel == TARGET_KERNEL_EMSCRIPTEN )
|
||||
triplet.AppendTail("unknown-emscripten");
|
||||
if ( abi != TARGET_ABI_DEFAULT )
|
||||
triplet.AppendTail("-");
|
||||
if ( abi == TARGET_ABI_GNU )
|
||||
triplet.AppendTail("gnu");
|
||||
if ( abi == TARGET_ABI_MUSL )
|
||||
triplet.AppendTail("musl");
|
||||
|
||||
|
||||
return triplet;
|
||||
@@ -49,8 +61,7 @@ const char *Target_t::GetExecutableFileFormat()
|
||||
case TARGET_KERNEL_IOS:
|
||||
return "%s";
|
||||
break;
|
||||
case TARGET_KERNEL_WINDOWS_MSVC:
|
||||
case TARGET_KERNEL_WINDOWS_GNU:
|
||||
case TARGET_KERNEL_WINDOWS:
|
||||
return "%s.exe";
|
||||
default:
|
||||
break;
|
||||
@@ -66,10 +77,18 @@ const char *Target_t::GetStaticLibraryFileFormat()
|
||||
case TARGET_KERNEL_ANDROID:
|
||||
case TARGET_KERNEL_DARWIN:
|
||||
case TARGET_KERNEL_IOS:
|
||||
case TARGET_KERNEL_WINDOWS_GNU:
|
||||
return "lib%s.a";
|
||||
case TARGET_KERNEL_WINDOWS_MSVC:
|
||||
|
||||
case TARGET_KERNEL_WINDOWS:
|
||||
{
|
||||
switch(abi)
|
||||
{
|
||||
case TARGET_ABI_MSVC:
|
||||
return "%s.lib";
|
||||
default:
|
||||
return "lib%s.a";
|
||||
}
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -84,7 +103,7 @@ const char *Target_t::GetDynamicLibraryFileFormat()
|
||||
return "lib%s.so";
|
||||
case TARGET_KERNEL_DARWIN:
|
||||
return "lib%s.dylib";
|
||||
case TARGET_KERNEL_WINDOWS_GNU:
|
||||
case TARGET_KERNEL_WINDOWS:
|
||||
return "%s.dll";
|
||||
default:
|
||||
break;
|
||||
@@ -103,7 +122,31 @@ Target_t Target_t::HostTarget()
|
||||
TARGET_KERNEL_DARWIN
|
||||
#endif
|
||||
;
|
||||
ETargetCPU cpu = TARGET_CPU_AMD64;
|
||||
ETargetABI abi =
|
||||
#if defined(__GLIBC__)
|
||||
#endif
|
||||
TARGET_ABI_GNU
|
||||
#if defined(__MUSL__)
|
||||
TARGET_ABI_MUSL
|
||||
#endif
|
||||
;
|
||||
ETargetCPU cpu =
|
||||
#if defined(__x86_64__)
|
||||
TARGET_CPU_AMD64
|
||||
#endif
|
||||
#if defined(__i386__)
|
||||
TARGET_CPU_80386
|
||||
#endif
|
||||
#if defined(__i486__)
|
||||
TARGET_CPU_80486
|
||||
#endif
|
||||
#if defined(__i586__)
|
||||
TARGET_CPU_80586
|
||||
#endif
|
||||
#if defined(__i686__)
|
||||
TARGET_CPU_80686
|
||||
#endif
|
||||
;
|
||||
return {
|
||||
.kernel = kernel,
|
||||
.cpu = cpu,
|
||||
@@ -119,9 +162,11 @@ Target_t Target_t::DefaultTarget()
|
||||
CUtlString szDevice = CommandLine()->ParamValue("-device");
|
||||
CUtlString szOS = CommandLine()->ParamValue("-os");
|
||||
CUtlString szArch = CommandLine()->ParamValue("-arch");
|
||||
CUtlString szAbi = CommandLine()->ParamValue("-abi");
|
||||
|
||||
ETargetKernel kernel = HostTarget().kernel;
|
||||
ETargetCPU cpu = HostTarget().cpu;
|
||||
ETargetABI abi = HostTarget().abi;
|
||||
|
||||
if ( szArch == "x86_64" )
|
||||
cpu = TARGET_CPU_AMD64;
|
||||
@@ -134,8 +179,6 @@ Target_t Target_t::DefaultTarget()
|
||||
kernel = TARGET_KERNEL_UNKNOWN;
|
||||
else if ( szOS == "windows" )
|
||||
kernel = TARGET_KERNEL_WINDOWS;
|
||||
else if ( szOS == "windows-msvc" )
|
||||
kernel = TARGET_KERNEL_WINDOWS_MSVC;
|
||||
else if ( szOS == "linux" )
|
||||
kernel = TARGET_KERNEL_LINUX;
|
||||
else if ( szOS == "macos" )
|
||||
@@ -150,6 +193,7 @@ Target_t Target_t::DefaultTarget()
|
||||
return {
|
||||
.kernel = kernel,
|
||||
.cpu = cpu,
|
||||
.abi = abi,
|
||||
.optimization = TARGET_DEBUG,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -122,9 +122,9 @@ CUtlString CMSVCLinker::Link( LinkProject_t *pProject )
|
||||
Plat_FatalErrorFunc("m_szName must be present\n");
|
||||
}
|
||||
|
||||
if (pProject->m_target.kernel != TARGET_KERNEL_WINDOWS_MSVC)
|
||||
if (pProject->m_target.kernel != TARGET_KERNEL_WINDOWS)
|
||||
{
|
||||
Plat_FatalErrorFunc("target must be TARGET_KERNEL_WINDOWS_MSVC\n");
|
||||
Plat_FatalErrorFunc("target must be TARGET_KERNEL_WINDOWS\n");
|
||||
}
|
||||
|
||||
// Find a name for the file
|
||||
|
||||
@@ -92,7 +92,7 @@ int main(int c, char **v)
|
||||
|
||||
char path[1024];
|
||||
|
||||
CUtlString buildcppDir = getcwd(path, 1024);
|
||||
CUtlString buildcppDir = Plat_GetWorkingDir();
|
||||
owndir = buildcppDir;
|
||||
char *szBuildcppDir = buildcppDir.GetString();
|
||||
|
||||
@@ -100,13 +100,13 @@ findbuild:
|
||||
FILE* file = V_fopen("build.cpp", "rb");
|
||||
if (!file)
|
||||
{
|
||||
dirname(szBuildcppDir);
|
||||
buildcppDir = buildcppDir.GetDirectory();
|
||||
if (buildcppDir=="/")
|
||||
{
|
||||
V_printf("build.cpp not found\n");
|
||||
return 0;
|
||||
}
|
||||
chdir(szBuildcppDir);
|
||||
Plat_SetWorkingDir(szBuildcppDir);
|
||||
goto findbuild;
|
||||
} else {
|
||||
V_fclose(file);
|
||||
|
||||
@@ -13,16 +13,14 @@ enum ETargetKernel
|
||||
TARGET_KERNEL_UNKNOWN = 0,
|
||||
|
||||
TARGET_KERNEL_WINDOWS_DEVICES = 0x100,
|
||||
TARGET_KERNEL_WINDOWS_MSVC,
|
||||
TARGET_KERNEL_WINDOWS_GNU,
|
||||
TARGET_KERNEL_WINDOWS = TARGET_KERNEL_WINDOWS_GNU,
|
||||
TARGET_KERNEL_WINDOWS,
|
||||
|
||||
TARGET_KERNEL_POSIX = 0x10000,
|
||||
TARGET_KERNEL_LINUX,
|
||||
TARGET_KERNEL_ANDROID,
|
||||
TARGET_KERNEL_APPLE_DEVICES = TARGET_KERNEL_POSIX | 0x200,
|
||||
TARGET_KERNEL_DARWIN,
|
||||
TARGET_KERNEL_IOS,
|
||||
TARGET_KERNEL_ANDROID,
|
||||
|
||||
TARGET_KERNEL_WEB_DEVICES = 0x400,
|
||||
TARGET_KERNEL_WASI,
|
||||
@@ -32,14 +30,20 @@ enum ETargetKernel
|
||||
enum ETargetCPU
|
||||
{
|
||||
TARGET_CPU_AMD64,
|
||||
TARGET_CPU_I286,
|
||||
TARGET_CPU_I386,
|
||||
TARGET_CPU_I486,
|
||||
TARGET_CPU_I586,
|
||||
TARGET_CPU_I686,
|
||||
TARGET_CPU_80386,
|
||||
TARGET_CPU_80486,
|
||||
TARGET_CPU_80586,
|
||||
TARGET_CPU_80686,
|
||||
TARGET_CPU_AARCH64,
|
||||
TARGET_CPU_WASM32,
|
||||
};
|
||||
enum ETargetABI
|
||||
{
|
||||
TARGET_ABI_DEFAULT,
|
||||
TARGET_ABI_GNU,
|
||||
TARGET_ABI_MUSL,
|
||||
TARGET_ABI_MSVC,
|
||||
};
|
||||
|
||||
enum ETargetOptimization
|
||||
{
|
||||
@@ -52,6 +56,7 @@ struct Target_t
|
||||
{
|
||||
ETargetKernel kernel;
|
||||
ETargetCPU cpu;
|
||||
ETargetABI abi;
|
||||
ETargetOptimization optimization;
|
||||
const char *szSysroot = CommandLine()->ParamValue("-sysroot");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user