11#include <linux/version.h>
17#define PLATFORM_UNIX_USE_CHAR16 1 UE_DEPRECATED_MACRO(5.7, "PLATFORM_UNIX_USE_CHAR16 has been deprecated and should be replaced with 1.")
33#define UNIX_MAX_PATH PATH_MAX
35#define PLATFORM_64BITS 1
36#define PLATFORM_CAN_SUPPORT_EDITORONLY_DATA 1
40#define PLATFORM_SEH_EXCEPTIONS_DISABLED 1
41#define PLATFORM_LITTLE_ENDIAN 1
42#define PLATFORM_SUPPORTS_UNALIGNED_LOADS ((!PLATFORM_CPU_ARM_FAMILY) || PLATFORM_64BITS)
43#define PLATFORM_COMPILER_DISTINGUISHES_INT_AND_LONG 1
44#define PLATFORM_SUPPORTS_PRAGMA_PACK 1
45#define PLATFORM_USE_LS_SPEC_FOR_WIDECHAR 1
46#define PLATFORM_WCHAR_IS_4_BYTES 1
47#define PLATFORM_TCHAR_IS_CHAR16 1
48#define PLATFORM_HAS_BSD_TIME 1
49#define PLATFORM_HAS_BSD_THREAD_CPUTIME 1
50#define PLATFORM_USE_PTHREADS 1
51#define PLATFORM_MAX_FILEPATH_LENGTH_DEPRECATED UNIX_MAX_PATH
52#define PLATFORM_HAS_NO_EPROCLIM 1
53#define PLATFORM_HAS_BSD_IPV6_SOCKETS 1
54#define PLATFORM_HAS_BSD_SOCKET_FEATURE_IOCTL 1
55#define PLATFORM_HAS_BSD_SOCKET_FEATURE_POLL 1
56#define PLATFORM_HAS_BSD_SOCKET_FEATURE_MSG_DONTWAIT 1
57#define PLATFORM_HAS_BSD_SOCKET_FEATURE_RECVMMSG 1
58#define PLATFORM_HAS_BSD_SOCKET_FEATURE_TIMESTAMP 1
59#define PLATFORM_SUPPORTS_MIMALLOC PLATFORM_64BITS
60#define PLATFORM_SUPPORTS_STACK_SYMBOLS 1
61#define PLATFORM_IS_ANSI_MALLOC_THREADSAFE 1
62#define PLATFORM_ALLOW_ALLOCATIONS_IN_FASYNCWRITER_SERIALIZEBUFFERTOARCHIVE 0
63#define PLATFORM_USE_ANSI_POSIX_MALLOC 1
64#define PLATFORM_SUPPORTS_BINDLESS_RENDERING 1
65#define PLATFORM_SUPPORTS_MESH_SHADERS 1
68#define PLATFORM_RETURN_ADDRESS_FOR_CALLSTACKTRACING PLATFORM_RETURN_ADDRESS
71#define PLATFORM_FILE_READER_BUFFER_SIZE (256*1024)
74#if PLATFORM_CPU_X86_FAMILY
75 #define PLATFORM_BREAK() { PRAGMA_DISABLE_CPP20_EXTENSION_WARNINGS __asm__ volatile("int $0x03"); PRAGMA_ENABLE_CPP20_EXTENSION_WARNINGS }
77 #define PLATFORM_BREAK() raise(SIGTRAP)
80#define PLATFORM_CODE_SECTION(Name) __attribute__((section(Name)))
82#define PLATFORM_ENABLE_POPCNT_INTRINSIC 1
85#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
86 #define PLATFORM_HAS_BSD_SOCKET_FEATURE_CLOSE_ON_EXEC 1
89#if defined(_M_IX86) || defined(__i386__) || defined(_M_X64) || defined(__x86_64__) || defined (__amd64__)
90 #define PLATFORM_ENABLE_VECTORINTRINSICS 1
93#if PLATFORM_LINUXARM64
95 #define PLATFORM_ENABLE_VECTORINTRINSICS_NEON 1
96 #define PLATFORM_ENABLE_VECTORINTRINSICS 1
99#ifndef PLATFORM_ALWAYS_HAS_FMA3
100 #define PLATFORM_ALWAYS_HAS_FMA3 0
109 #define FORCEINLINE inline
111 #define FORCEINLINE inline __attribute__ ((always_inline))
113#define FORCENOINLINE __attribute__((noinline))
114#define FUNCTION_CHECK_RETURN_END __attribute__ ((warn_unused_result))
115#define FUNCTION_NO_RETURN_END __attribute__ ((noreturn))
118#if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 6))
119 #define PRAGMA_DISABLE_OPTIMIZATION_ACTUAL _Pragma("clang optimize off")
120 #define PRAGMA_ENABLE_OPTIMIZATION_ACTUAL _Pragma("clang optimize on")
123#define ABSTRACT abstract
126#define DLLEXPORT __attribute__((visibility("default")))
127#define DLLIMPORT __attribute__((visibility("default")))
130#define GCC_PACK(n) __attribute__((packed,aligned(n)))
131#define GCC_ALIGN(n) __attribute__((aligned(n)))
133#define REQUIRES_ALIGNED_ACCESS 1
138#if __has_feature(cxx_noexcept)
139#define OPERATOR_NEW_THROW_SPEC
141#define OPERATOR_NEW_THROW_SPEC throw (std::bad_alloc)
143#define OPERATOR_DELETE_THROW_SPEC noexcept
144#define OPERATOR_NEW_NOTHROW_SPEC noexcept
145#define OPERATOR_DELETE_NOTHROW_SPEC noexcept
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127