//================= 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