master
1#ifndef FUNC_DEF_IN
2#define FUNC_DEF_IN
3
4// F32 - function available on all 32 bit architectures
5// F64 - function available on all 64 bit architectures
6// F_X86_ANY - function available on i386 and x86_64
7// F_I386 - function available only on i386
8// F_X64 - function available only on x86_64
9// F_ARM32 - function available only on arm32
10// F_ARM64 - function available only on arm64
11// F_ARM_ANY - function available on 32 and 64 bit arm
12// F_NON_I386 - function available on everything but i386
13// F_NON_X64 - function available on everything but x86_64
14// F_NON_ARM64 - function available on everything but arm64
15#if defined(__x86_64__)
16#define F64(x) x
17#define F_X64(x) x
18#define F_X86_ANY(x) x
19#define F_NON_I386(x) x
20#define F_NON_ARM64(x) x
21#elif defined(__i386__)
22#define F32(x) x
23#define F_I386(x) x
24#define F_X86_ANY(x) x
25#define F_NON_X64(x) x
26#define F_NON_ARM64(x) x
27#elif defined(__arm__)
28#define F32(x) x
29#define F_ARM32(x) x
30#define F_ARM_ANY(x) x
31#define F_NON_I386(x) x
32#define F_NON_X64(x) x
33#define F_NON_ARM64(x) x
34#elif defined(__aarch64__)
35#define F64(x) x
36#define F_ARM64(x) x
37#define F_ARM_ANY(x) x
38#define F_NON_I386(x) x
39#define F_NON_X64(x) x
40#else
41#error No DEF_<ARCH> is defined
42#endif
43
44#ifndef F32
45#define F32(x)
46#endif
47#ifndef F64
48#define F64(x)
49#endif
50#ifndef F_X86_ANY
51#define F_X86_ANY(x)
52#endif
53#ifndef F_I386
54#define F_I386(x)
55#endif
56#ifndef F_X64
57#define F_X64(x)
58#endif
59#ifndef F_ARM_ANY
60#define F_ARM_ANY(x)
61#endif
62#ifndef F_ARM32
63#define F_ARM32(x)
64#endif
65#ifndef F_ARM64
66#define F_ARM64(x)
67#endif
68#ifndef F_NON_I386
69#define F_NON_I386(x)
70#endif
71#ifndef F_NON_X64
72#define F_NON_X64(x)
73#endif
74#ifndef F_NON_ARM64
75#define F_NON_ARM64(x)
76#endif
77
78#if defined(__i386__)
79#define STDCALL_DECORATED_EXPORT(symbol) symbol == _ ## symbol
80#define FASTCALL_DECORATED_EXPORT(symbol) symbol == symbol
81#endif
82
83#if __SIZEOF_LONG_DOUBLE__ == __SIZEOF_DOUBLE__
84#define F_LD64(x) x
85#define F_LD80(x)
86#else
87#define F_LD64(x)
88#define F_LD80(x) x
89#endif
90
91#endif // FUNC_DEF_IN