123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- #pragma once
- #include <stddef.h> // ptrdiff_t
- #if defined(__aarch64__) && defined(__arm__)
- #error We assume both __aarch64__ and __arm__ cannot be defined at tha same time.
- #endif
- #if defined(__aarch64__) || defined(_M_ARM64)
- #define IL2CPP_TARGET_ARM64 1
- #define IL2CPP_TARGET_ARMV7 0
- #elif defined(__arm__)
- #define IL2CPP_TARGET_ARM64 0
- #define IL2CPP_TARGET_ARMV7 1
- #else
- #define IL2CPP_TARGET_ARM64 0
- #define IL2CPP_TARGET_ARMV7 0
- #endif
- #if defined(__arm64e__) && defined(__PTRAUTH_INTRINSICS__)
- #define IL2CPP_TARGET_ARM64E 1
- #else
- #define IL2CPP_TARGET_ARM64E 0
- #endif
- #if defined(__x86_64__) || defined(_M_X64)
- #define IL2CPP_TARGET_X64 1
- #define IL2CPP_TARGET_X86 0
- #elif defined(__i386__) || defined(_M_IX86)
- #define IL2CPP_TARGET_X64 0
- #define IL2CPP_TARGET_X86 1
- #else
- #define IL2CPP_TARGET_X64 0
- #define IL2CPP_TARGET_X86 0
- #endif
- #if defined(EMBEDDED_LINUX)
- #define IL2CPP_TARGET_EMBEDDED_LINUX 1
- #endif
- // Large executables on ARM64 and ARMv7 can cause linker errors.
- // Specifically, the arm instruction set limits the range a branch can
- // take (e.g. 128MB on ARM64). Normally, the linker will insert branch
- // islands to bridge gaps larger than the maximum branch range. However,
- // branch islands only work within a section, not across sections. So if
- // IL2CPP puts managed code into a specific section of the binary, branch
- // isalnds won't work. That means that proejcts with a large executable
- // size may fail to link.
- //
- // Set the define IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND to a value of 1
- // work around this issue.
- //
- // The cost of this define is in correctness of managed stack traces.
- // With this define enabled, managed stack traces maybe not be correct
- // in some cases, because the stack trace generation code must use
- // fuzzy heuristics to detemine if a given instrion pointer is in a
- // managed method.
- #if IL2CPP_TARGET_EMBEDDED_LINUX && IL2CPP_TARGET_ARMV7
- // currently on EmbeddedLinux stack unwinding doesn't work properly when using custom code sections on ARMv7
- // as a result processing exceptions from managed code and resolving managed stack traces doesn't work
- #ifndef IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND
- #define IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND 1
- #endif
- #endif
- #if IL2CPP_TARGET_ARM64 || IL2CPP_TARGET_ARMV7
- #ifndef IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND
- #define IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND 0
- #endif
- #endif
- #define IL2CPP_BINARY_SECTION_NAME "il2cpp"
- #if defined(SN_TARGET_PSP2)
- #define IL2CPP_TARGET_PSP2 1
- #define _UNICODE 1
- #define UNICODE 1
- #include "il2cpp-config-psp2.h"
- #elif defined(SN_TARGET_ORBIS)
- #define IL2CPP_TARGET_PS4 1
- #define _UNICODE 1
- #define UNICODE 1
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS 1
- #define IL2CPP_METHOD_ATTR __attribute__((section(IL2CPP_BINARY_SECTION_NAME)))
- #elif defined(_MSC_VER)
- #define IL2CPP_TARGET_WINDOWS 1
- #if IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS 0
- #else
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS !IL2CPP_MONO_DEBUGGER
- #endif
- #define IL2CPP_PLATFORM_SUPPORTS_DEBUGGER_PRESENT 1
- #if IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS
- #define IL2CPP_METHOD_ATTR __declspec(code_seg (IL2CPP_BINARY_SECTION_NAME))
- #endif
- #if defined(_XBOX_ONE)
- #define IL2CPP_TARGET_XBOXONE 1
- #define IL2CPP_PLATFORM_SUPPORTS_DEBUGGER_PRESENT 1
- #define IL2CPP_ENABLE_PLATFORM_THREAD_AFFINTY 1
- #elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
- #define IL2CPP_TARGET_WINRT 1
- #define IL2CPP_PLATFORM_SUPPORTS_SYSTEM_CERTIFICATES 1
- #elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_GAMES)
- #define IL2CPP_TARGET_WINDOWS_GAMES 1
- #define IL2CPP_PLATFORM_SUPPORTS_SYSTEM_CERTIFICATES 1
- #define IL2CPP_ENABLE_PLATFORM_THREAD_AFFINTY 1
- #if defined(_GAMING_XBOX)
- #define IL2CPP_TARGET_GAMECORE_XBOX 1
- #endif
- #elif (IL2CPP_CUSTOM_PLATFORM)
- #else
- #define IL2CPP_TARGET_WINDOWS_DESKTOP 1
- #define IL2CPP_PLATFORM_SUPPORTS_SYSTEM_CERTIFICATES 1
- #define IL2CPP_PLATFORM_SUPPORTS_CPU_INFO 1
- // Windows 7 is the min OS we support, so we cannot link newer APIs
- #define NTDDI_VERSION 0x06010000
- #define _WIN32_WINNT 0x0601
- #define WINVER 0x0601
- #endif
- #define _UNICODE 1
- #define UNICODE 1
- #define STRICT 1
- #elif defined(__APPLE__)
- #define IL2CPP_TARGET_DARWIN 1
- #define IL2CPP_PLATFORM_SUPPORTS_CPU_INFO 1
- #define IL2CPP_PLATFORM_SUPPORTS_TIMEZONEINFO 1
- #include "TargetConditionals.h"
- #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR || TARGET_OS_TV || TARGET_TVOS_SIMULATOR || ((defined(TARGET_OS_XR) && TARGET_OS_XR) || (defined(TARGET_OS_VISION) && TARGET_OS_VISION)) || TARGET_VISIONOS_SIMULATOR
- #define IL2CPP_TARGET_IOS 1
- #define IL2CPP_PLATFORM_SUPPORTS_CPU_INFO 1
- #else
- #define IL2CPP_TARGET_OSX 1
- #define IL2CPP_PLATFORM_SUPPORTS_SYSTEM_CERTIFICATES 1
- #endif
- #if IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS 0
- #else
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS (!(IL2CPP_TARGET_IOS && IL2CPP_TARGET_ARMV7) && !IL2CPP_MONO_DEBUGGER)
- #endif
- #if IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS
- #define IL2CPP_METHOD_ATTR __attribute__((section ("__TEXT," IL2CPP_BINARY_SECTION_NAME ",regular,pure_instructions")))
- #endif
- #elif defined(__ANDROID__)
- #define IL2CPP_TARGET_ANDROID 1
- #define IL2CPP_PLATFORM_SUPPORTS_TIMEZONEINFO 1
- #define IL2CPP_ENABLE_PLATFORM_THREAD_RENAME 1
- #if IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS 0
- #else
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS !IL2CPP_MONO_DEBUGGER
- #endif
- #define IL2CPP_PLATFORM_DISABLE_LIBC_PINVOKE 1
- #if IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS
- #define IL2CPP_METHOD_ATTR __attribute__((section(IL2CPP_BINARY_SECTION_NAME)))
- #endif
- #elif defined(__EMSCRIPTEN__)
- #define IL2CPP_TARGET_JAVASCRIPT 1
- #define IL2CPP_PLATFORM_SUPPORTS_CPU_INFO 1
- #elif defined(__linux__)
- #define IL2CPP_TARGET_LINUX 1
- #define IL2CPP_PLATFORM_SUPPORTS_CPU_INFO 1
- #define IL2CPP_PLATFORM_SUPPORTS_SYSTEM_CERTIFICATES 1
- #if IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS 0
- #else
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS !IL2CPP_MONO_DEBUGGER
- #endif
- #if IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS
- #define IL2CPP_METHOD_ATTR __attribute__((section(IL2CPP_BINARY_SECTION_NAME)))
- #endif
- #elif defined(__QNX__)
- // for calloc, free
- #include <stdlib.h>
- #define IL2CPP_TARGET_QNX 1
- #define IL2CPP_PLATFORM_SUPPORTS_CPU_INFO 1
- #define IL2CPP_PLATFORM_SUPPORTS_SYSTEM_CERTIFICATES 1
- #define IL2CPP_USE_POSIX_SOCKET_PLATFORM_CONFIG 1
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS 0
- #if IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS
- #define IL2CPP_METHOD_ATTR __attribute__((section(IL2CPP_BINARY_SECTION_NAME)))
- #endif
- #elif defined(NN_PLATFORM_CTR)
- #define IL2CPP_TARGET_N3DS 1
- #elif defined(NN_BUILD_TARGET_PLATFORM_NX)
- #define IL2CPP_TARGET_SWITCH 1
- #include "il2cpp-config-switch.h"
- #elif IL2CPP_TARGET_CUSTOM
- // defined handled externally
- #else
- #error please define your target platform
- #endif
- #if IL2CPP_TARGET_PS5
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS 1
- #define IL2CPP_METHOD_ATTR __attribute__((section(IL2CPP_BINARY_SECTION_NAME)))
- #endif
- #ifndef IL2CPP_TARGET_WINDOWS
- #define IL2CPP_TARGET_WINDOWS 0
- #endif
- #ifndef IL2CPP_TARGET_WINDOWS_DESKTOP
- #define IL2CPP_TARGET_WINDOWS_DESKTOP 0
- #endif
- #ifndef IL2CPP_TARGET_WINDOWS_GAMES
- #define IL2CPP_TARGET_WINDOWS_GAMES 0
- #endif
- #ifndef IL2CPP_TARGET_GAMECORE_XBOX
- #define IL2CPP_TARGET_GAMECORE_XBOX 0
- #endif
- #ifndef IL2CPP_TARGET_WINRT
- #define IL2CPP_TARGET_WINRT 0
- #endif
- #ifndef IL2CPP_TARGET_XBOXONE
- #define IL2CPP_TARGET_XBOXONE 0
- #endif
- #ifndef IL2CPP_TARGET_DARWIN
- #define IL2CPP_TARGET_DARWIN 0
- #endif
- #ifndef IL2CPP_TARGET_IOS
- #define IL2CPP_TARGET_IOS 0
- #endif
- #ifndef IL2CPP_TARGET_OSX
- #define IL2CPP_TARGET_OSX 0
- #endif
- #ifndef IL2CPP_TARGET_ANDROID
- #define IL2CPP_TARGET_ANDROID 0
- #endif
- #ifndef IL2CPP_TARGET_JAVASCRIPT
- #define IL2CPP_TARGET_JAVASCRIPT 0
- #endif
- #ifndef IL2CPP_TARGET_LINUX
- #define IL2CPP_TARGET_LINUX 0
- #endif
- #ifndef IL2CPP_TARGET_QNX
- #define IL2CPP_TARGET_QNX 0
- #endif
- #ifndef IL2CPP_TARGET_N3DS
- #define IL2CPP_TARGET_N3DS 0
- #endif
- #ifndef IL2CPP_TARGET_PS4
- #define IL2CPP_TARGET_PS4 0
- #endif
- #ifndef IL2CPP_TARGET_PSP2
- #define IL2CPP_TARGET_PSP2 0
- #endif
- #ifndef IL2CPP_TARGET_SWITCH
- #define IL2CPP_TARGET_SWITCH 0
- #endif
- #ifndef IL2CPP_TARGET_EMBEDDED_LINUX
- #define IL2CPP_TARGET_EMBEDDED_LINUX 0
- #endif
- #ifndef IL2CPP_TARGET_POSIX
- #define IL2CPP_TARGET_POSIX (IL2CPP_TARGET_DARWIN || IL2CPP_TARGET_JAVASCRIPT || IL2CPP_TARGET_LINUX || IL2CPP_TARGET_QNX || IL2CPP_TARGET_ANDROID || IL2CPP_TARGET_PS4 || IL2CPP_TARGET_PSP2)
- #endif
- #define RUNTIME_TINY (IL2CPP_TINY && !IL2CPP_MONO_DEBUGGER)
- #define IL2CPP_TINY_DEBUGGER (IL2CPP_TINY && IL2CPP_MONO_DEBUGGER)
- #define IL2CPP_IL2CPP_TINY_SUPPORT_THREADS IL2CPP_TINY &&IL2CPP_TINY_DEBUGGER
- #define IL2CPP_IL2CPP_TINY_SUPPORT_SOCKETS IL2CPP_TINY &&IL2CPP_TINY_DEBUGGER
- #ifndef IL2CPP_SUPPORT_THREADS
- #define IL2CPP_SUPPORT_THREADS ((!IL2CPP_TARGET_JAVASCRIPT || IL2CPP_TINY_DEBUGGER) && (!IL2CPP_TINY || IL2CPP_IL2CPP_TINY_SUPPORT_THREADS))
- #endif
- #ifndef IL2CPP_SUPPORT_SOCKETS
- #define IL2CPP_SUPPORT_SOCKETS (!IL2CPP_TINY || IL2CPP_IL2CPP_TINY_SUPPORT_SOCKETS)
- #endif
- #ifndef IL2CPP_PLATFORM_OVERRIDES_STD_FILE_HANDLES
- #define IL2CPP_PLATFORM_OVERRIDES_STD_FILE_HANDLES 0
- #endif
- #ifndef IL2CPP_PLATFORM_SUPPORTS_SYSTEM_CERTIFICATES
- #define IL2CPP_PLATFORM_SUPPORTS_SYSTEM_CERTIFICATES 0
- #endif
- #ifndef IL2CPP_PLATFORM_SUPPORTS_TIMEZONEINFO
- #define IL2CPP_PLATFORM_SUPPORTS_TIMEZONEINFO 0
- #endif
- #ifndef IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS
- #define IL2CPP_PLATFORM_SUPPORTS_CUSTOM_SECTIONS 0
- #endif
- #ifndef IL2CPP_DEBUG
- #define IL2CPP_DEBUG 0
- #endif
- #ifndef IL2CPP_PLATFORM_SUPPORTS_CPU_INFO
- #define IL2CPP_PLATFORM_SUPPORTS_CPU_INFO 0
- #endif
- #ifndef IL2CPP_PLATFORM_SUPPORTS_DEBUGGER_PRESENT
- #define IL2CPP_PLATFORM_SUPPORTS_DEBUGGER_PRESENT 0
- #endif
- #ifndef IL2CPP_PLATFORM_DISABLE_LIBC_PINVOKE
- #define IL2CPP_PLATFORM_DISABLE_LIBC_PINVOKE 0
- #endif
- #ifndef IL2CPP_PLATFORM_SUPPORTS_BACKTRACE_CALL
- #define IL2CPP_PLATFORM_SUPPORTS_BACKTRACE_CALL !IL2CPP_TARGET_WINDOWS && !IL2CPP_TARGET_ANDROID && !IL2CPP_TARGET_PS4 && !IL2CPP_TARGET_PS5
- #endif //IL2CPP_PLATFORM_SUPPORTS_BACKTRACE_CALL
- #ifndef IL2CPP_SUPPORT_SOCKETS_POSIX_API
- #define IL2CPP_SUPPORT_SOCKETS_POSIX_API 0
- #endif
- #define IL2CPP_USE_STD_THREAD 0
- #define IL2CPP_THREADS_STD IL2CPP_USE_STD_THREAD
- #define IL2CPP_THREADS_PTHREAD (!IL2CPP_THREADS_STD && IL2CPP_TARGET_POSIX)
- #define IL2CPP_THREADS_WIN32 (!IL2CPP_THREADS_STD && IL2CPP_TARGET_WINDOWS)
- #define IL2CPP_THREADS_N3DS (!IL2CPP_THREADS_STD && IL2CPP_TARGET_N3DS)
- #define IL2CPP_THREADS_PS4 (!IL2CPP_THREADS_STD && IL2CPP_TARGET_PS4)
- #define IL2CPP_THREADS_PSP2 (!IL2CPP_THREADS_STD && IL2CPP_TARGET_PSP2)
- #define IL2CPP_THREADS_SWITCH (!IL2CPP_THREADS_STD && IL2CPP_TARGET_SWITCH)
- // Set to 1 to use the baselib based version of the FastReaderReaderWriterLock
- // Use if the baselib::Lock implementation on the platform is faster than the il2cpp::os based version
- #ifndef IL2CPP_USE_BASELIB_FAST_READER_RWL
- #define IL2CPP_USE_BASELIB_FAST_READER_RWL 0
- #endif
- #define IL2CPP_THREAD_HAS_CPU_SET IL2CPP_TARGET_POSIX && !IL2CPP_THREADS_PS4
- // Not supported on TINY because it doesn't support synchronization context
- // Not supported on no runtime because it needs to call back into the runtime!
- #define IL2CPP_HAS_OS_SYNCHRONIZATION_CONTEXT (IL2CPP_TARGET_WINDOWS) && !IL2CPP_TINY && !RUNTIME_NONE && !IL2CPP_TARGET_WINDOWS_GAMES
- /* Trigger assert if 'ptr' is not aligned to 'alignment'. */
- #define ASSERT_ALIGNMENT(ptr, alignment) \
- IL2CPP_ASSERT((((ptrdiff_t) ptr) & (alignment - 1)) == 0 && "Unaligned pointer!")
- #if defined(_MSC_VER)
- #if defined(_M_X64) || defined(_M_ARM64)
- #define IL2CPP_SIZEOF_VOID_P 8
- #elif defined(_M_IX86) || defined(_M_ARM)
- #define IL2CPP_SIZEOF_VOID_P 4
- #else
- #error invalid windows architecture
- #endif
- #elif defined(__GNUC__) || defined(__SNC__)
- #if defined(__x86_64__)
- #define IL2CPP_SIZEOF_VOID_P 8
- #elif defined(__i386__)
- #define IL2CPP_SIZEOF_VOID_P 4
- #elif defined(__EMSCRIPTEN__)
- #define IL2CPP_SIZEOF_VOID_P 4
- #elif defined(__arm__)
- #define IL2CPP_SIZEOF_VOID_P 4
- #elif defined(__arm64__) || defined(__aarch64__)
- #define IL2CPP_SIZEOF_VOID_P 8
- #else
- #error invalid windows architecture
- #endif
- #else
- #error please define your target architecture size
- #endif
- #ifndef IL2CPP_USE_GENERIC_CRASH_HELPERS
- #define IL2CPP_USE_GENERIC_CRASH_HELPERS (!IL2CPP_TARGET_WINDOWS && !IL2CPP_TARGET_POSIX)
- #endif
- #ifndef IL2CPP_SUPPORTS_CONSOLE_EXTENSION
- #define IL2CPP_SUPPORTS_CONSOLE_EXTENSION IL2CPP_TARGET_ANDROID
- #endif
- #define IL2CPP_COMPILER_MSVC (IL2CPP_TARGET_WINDOWS || IL2CPP_TARGET_XBOXONE)
- #if IL2CPP_COMPILER_MSVC
- #ifndef STDCALL
- #define STDCALL __stdcall
- #endif
- #ifndef CDECL
- #define CDECL __cdecl
- #endif
- #ifndef FASTCALL
- #define FASTCALL __fastcall
- #endif
- #ifndef THISCALL
- #define THISCALL __thiscall
- #endif
- #else
- #define STDCALL
- #define CDECL
- #define FASTCALL
- #define THISCALL
- #endif
|