Files
funnygame/fpc/public/target.h
2026-01-09 17:37:04 +02:00

82 lines
1.5 KiB
C

//================= Copyright kotofyt, All rights reserved ==================//
// Purpose: Target manager for compilers.
//===========================================================================//
#ifndef TARGET_T
#define TARGET_T
#include "tier0/commandline.h"
#include "tier1/utlstring.h"
enum ETargetKernel
{
TARGET_KERNEL_UNKNOWN = 0,
TARGET_KERNEL_WINDOWS_DEVICES = 0x100,
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_WEB_DEVICES = 0x400,
TARGET_KERNEL_WASI,
TARGET_KERNEL_EMSCRIPTEN,
};
enum ETargetCPU
{
TARGET_CPU_AMD64,
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
{
TARGET_DEBUG,
TARGET_RELEASE_SPEED,
TARGET_RELEASE_SIZE
};
struct Target_t
{
ETargetKernel kernel;
ETargetCPU cpu;
ETargetABI abi;
ETargetOptimization optimization;
const char *szSysroot = CommandLine()->ParamValue("-sysroot");
CUtlString GetTriplet();
const char *GetExecutableFileFormat();
const char *GetStaticLibraryFileFormat();
const char *GetDynamicLibraryFileFormat();
static Target_t HostTarget();
static Target_t DefaultTarget();
};
enum EShaderTarget
{
SHADER_TARGET_VULKAN_SPIRV,
SHADER_TARGET_OPENGL_SPIRV,
SHADER_TARGET_GLSL,
SHADER_TARGET_HLSL,
SHADER_TARGET_MSL,
};
#endif