44 lines
1.4 KiB
C
44 lines
1.4 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "os/c-api/il2cpp-config-platforms.h"
|
||
|
#include "os/c-api/il2cpp-config-api-platforms.h"
|
||
|
#include "il2cpp-api-types.h"
|
||
|
|
||
|
// If the platform loads il2cpp as a dynamic library but does not have dlsym (or equivalent) then
|
||
|
// define IL2CPP_API_DYNAMIC_NO_DLSYM = 1 to add support for api function registration and symbol
|
||
|
// lookup APIs, see il2cpp-api.cpp
|
||
|
#ifndef IL2CPP_API_DYNAMIC_NO_DLSYM
|
||
|
#define IL2CPP_API_DYNAMIC_NO_DLSYM 0
|
||
|
#endif
|
||
|
|
||
|
/* Profiler */
|
||
|
#ifndef IL2CPP_ENABLE_PROFILER
|
||
|
#define IL2CPP_ENABLE_PROFILER !IL2CPP_TINY
|
||
|
#endif
|
||
|
|
||
|
#if IL2CPP_TARGET_ARMV7
|
||
|
// On ARMv7 with Thumb instructions the lowest bit is always set.
|
||
|
// With Thumb2 the second-to-lowest bit is also set. Mask both of
|
||
|
// them off so that we can do a comparison properly based on the data
|
||
|
// from the linker map file.
|
||
|
#define IL2CPP_POINTER_SPARE_BITS 3
|
||
|
#else
|
||
|
// Some compilers align functions by default (MSVC), some do not (GCC).
|
||
|
// Do not mask bits on platforms that do not absolutely require it.
|
||
|
#define IL2CPP_POINTER_SPARE_BITS 0
|
||
|
#endif
|
||
|
|
||
|
#if IL2CPP_COMPILER_MSVC || defined(__ARMCC_VERSION)
|
||
|
#define NORETURN __declspec(noreturn)
|
||
|
#elif (IL2CPP_POINTER_SPARE_BITS == 0) && (defined(__clang__) || defined(__GNUC__))
|
||
|
#define NORETURN __attribute__ ((noreturn))
|
||
|
#else
|
||
|
#define NORETURN
|
||
|
#endif
|
||
|
|
||
|
#if IL2CPP_TARGET_IOS || IL2CPP_TARGET_ANDROID || IL2CPP_TARGET_DARWIN
|
||
|
#define REAL_NORETURN __attribute__ ((noreturn))
|
||
|
#else
|
||
|
#define REAL_NORETURN NORETURN
|
||
|
#endif
|