libsodium (1.0.19)
1
2 #ifndef sodium_export_H
3 #define sodium_export_H
4
5 #include <stddef.h>
6 #include <stdint.h>
7 #include <limits.h>
8
9 #if !defined(__clang__) && !defined(__GNUC__)
10 # ifdef __attribute__
11 # undef __attribute__
12 # endif
13 # define __attribute__(a)
14 #endif
15
16 #ifdef SODIUM_STATIC
17 # define SODIUM_EXPORT
18 # define SODIUM_EXPORT_WEAK
19 #else
20 # if defined(_MSC_VER)
21 # ifdef SODIUM_DLL_EXPORT
22 # define SODIUM_EXPORT __declspec(dllexport)
23 # else
24 # define SODIUM_EXPORT __declspec(dllimport)
25 # endif
26 # else
27 # if defined(__SUNPRO_C)
28 # ifndef __GNU_C__
29 # define SODIUM_EXPORT __attribute__ (visibility(__global))
30 # else
31 # define SODIUM_EXPORT __attribute__ __global
32 # endif
33 # elif defined(_MSG_VER)
34 # define SODIUM_EXPORT extern __declspec(dllexport)
35 # else
36 # define SODIUM_EXPORT __attribute__ ((visibility ("default")))
37 # endif
38 # endif
39 # if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS)
40 # define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak))
41 # else
42 # define SODIUM_EXPORT_WEAK SODIUM_EXPORT
43 # endif
44 #endif
45
46 #ifndef CRYPTO_ALIGN
47 # if defined(__INTEL_COMPILER) || defined(_MSC_VER)
48 # define CRYPTO_ALIGN(x) __declspec(align(x))
49 # else
50 # define CRYPTO_ALIGN(x) __attribute__ ((aligned(x)))
51 # endif
52 #endif
53
54 #define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B))
55 #define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX)
56
57 #endif