1210397Sandrew 2210397Sandrew#ifndef sodium_export_H 3210397Sandrew#define sodium_export_H 4210397Sandrew 5210397Sandrew#include <stddef.h> 6210397Sandrew#include <stdint.h> 7210397Sandrew#include <limits.h> 8210397Sandrew 9210397Sandrew#if !defined(__clang__) && !defined(__GNUC__) 10210397Sandrew# ifdef __attribute__ 11210397Sandrew# undef __attribute__ 12210397Sandrew# endif 13210397Sandrew# define __attribute__(a) 14210397Sandrew#endif 15210397Sandrew 16210397Sandrew#ifdef SODIUM_STATIC 17210397Sandrew# define SODIUM_EXPORT 18210397Sandrew# define SODIUM_EXPORT_WEAK 19210397Sandrew#else 20210397Sandrew# if defined(_MSC_VER) 21210397Sandrew# ifdef SODIUM_DLL_EXPORT 22210397Sandrew# define SODIUM_EXPORT __declspec(dllexport) 23210397Sandrew# else 24210397Sandrew# define SODIUM_EXPORT __declspec(dllimport) 25210397Sandrew# endif 26210397Sandrew# else 27210397Sandrew# if defined(__SUNPRO_C) 28210397Sandrew# ifndef __GNU_C__ 29210397Sandrew# define SODIUM_EXPORT __attribute__ (visibility(__global)) 30210397Sandrew# else 31210397Sandrew# define SODIUM_EXPORT __attribute__ __global 32210397Sandrew# endif 33210397Sandrew# elif defined(_MSG_VER) 34210397Sandrew# define SODIUM_EXPORT extern __declspec(dllexport) 35210397Sandrew# else 36210397Sandrew# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) 37210397Sandrew# endif 38210397Sandrew# endif 39210397Sandrew# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) 40210397Sandrew# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) 41210397Sandrew# else 42210397Sandrew# define SODIUM_EXPORT_WEAK SODIUM_EXPORT 43210397Sandrew# endif 44210397Sandrew#endif 45210397Sandrew 46210397Sandrew#ifndef CRYPTO_ALIGN 47210397Sandrew# if defined(__INTEL_COMPILER) || defined(_MSC_VER) 48210397Sandrew# define CRYPTO_ALIGN(x) __declspec(align(x)) 49210397Sandrew# else 50210397Sandrew# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) 51210397Sandrew# endif 52210397Sandrew#endif 53210397Sandrew 54210397Sandrew#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) 55210397Sandrew#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) 56210397Sandrew 57210397Sandrew#ifdef _KERNEL 58210397Sandrew#include <sys/param.h> 59210397Sandrew#include <sys/libkern.h> 60210397Sandrewstatic inline void 61210397Sandrewsodium_misuse(void) 62210397Sandrew{ 63210397Sandrew panic("bad value passed to sodium"); 64210397Sandrew} 65210397Sandrew#endif 66210397Sandrew 67210397Sandrew#endif 68210397Sandrew