/usr/include/freeradius/build.h is in libfreeradius-dev 3.0.16+dfsg-1ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | /**
* $Id: 5da940c2b7b8ee02564882af4d82c8630b4a8382 $
*
* @brief Source control functions
*
* @copyright 2013 The FreeRADIUS server project
*/
#ifndef _BUILD_H
#define _BUILD_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeradius/autoconf.h> /* Needed for endian macros */
/*
* The ubiquitous stringify macros
*/
#define XSTRINGIFY(x) #x
#define STRINGIFY(x) XSTRINGIFY(x)
#define JOINSTR(x,y) XSTRINGIFY(x ## y)
/*
* HEX concatenation macros
*/
#ifndef HEXIFY
# define XHEXIFY4(b1,b2,b3,b4) (0x ## b1 ## b2 ## b3 ## b4)
# define HEXIFY4(b1,b2,b3,b4) XHEXIFY4(b1, b2, b3, b4)
# define XHEXIFY3(b1,b2,b3) (0x ## b1 ## b2 ## b3)
# define HEXIFY3(b1,b2,b3) XHEXIFY3(b1, b2, b3)
# define XHEXIFY2(b1,b2) (0x ## b1 ## b2)
# define HEXIFY2(b1,b2) XHEXIFY2(b1, b2)
# define XHEXIFY(b1) (0x ## b1)
# define HEXIFY(b1) XHEXIFY(b1)
#endif
/*
* struct field size
*/
#define SIZEOF_MEMBER(_t, _m) sizeof(((_t *)0)->_m)
/*
* Only use GCC __attribute__ if were building with a GCClike
* compiler.
*/
#ifdef __GNUC__
# define CC_HINT(_x) __attribute__ ((_x))
#else
# define CC_HINT(_x)
#endif
#ifdef HAVE_ATTRIBUTE_BOUNDED
# define CC_BOUNDED(_x, ...) CC_HINT(__bounded__(_x, ## __VA_ARGS__))
#else
# define CC_BOUNDED(...)
#endif
/*
* Macros to add pragmas
*/
#define PRAGMA(_x) _Pragma(#_x)
/*
* Macros for controlling warnings in GCC >= 4.2 and clang >= 2.8
*/
#if defined(__GNUC__) && ((__GNUC__ * 100) + __GNUC_MINOR__) >= 402
# define DIAG_PRAGMA(_x) PRAGMA(GCC diagnostic _x)
# if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
# define DIAG_OFF(_x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored JOINSTR(-W,_x))
# define DIAG_ON(_x) DIAG_PRAGMA(pop)
# else
# define DIAG_OFF(_x) DIAG_PRAGMA(ignored JOINSTR(-W,_x))
# define DIAG_ON(_x) DIAG_PRAGMA(warning JOINSTR(-W,_x))
# endif
#elif defined(__clang__) && ((__clang_major__ * 100) + __clang_minor__ >= 208)
# define DIAG_PRAGMA(_x) PRAGMA(clang diagnostic _x)
# define DIAG_OFF(_x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored JOINSTR(-W,_x))
# define DIAG_ON(_x) DIAG_PRAGMA(pop)
#else
# define DIAG_OFF(_x)
# define DIAG_ON(_x)
#endif
/*
* GCC and clang use different macros
*/
#ifdef __clang__
# define DIAG_OPTIONAL DIAG_OFF(unknown-pragmas)
#else
# define DIAG_OPTIONAL DIAG_OFF(pragmas)
#endif
/*
* For dealing with APIs which are only deprecated in OSX (like the OpenSSL API)
*/
#ifdef __APPLE__
# define USES_APPLE_DEPRECATED_API DIAG_OFF(deprecated-declarations)
# define USES_APPLE_RST DIAG_ON(deprecated-declarations)
#else
# define USES_APPLE_DEPRECATED_API
# define USES_APPLE_RST
#endif
#if defined(__GNUC__)
/* force inclusion of ident keywords in the face of optimization */
# define RCSID(id) static char const rcsid[] __attribute__ ((used)) = id;
# define RCSIDH(h, id) static char const rcsid_ ## h [] __attribute__ ((used)) = id;
#elif defined(__SUNPRO_C)
/* put ident keyword into comment section (nicer than gcc way) */
# define RCSID(id) PRAGMA(sun ident id)
# define RCSIDH(h, id) PRAGMA(sun ident id)
#else
# define RCSID(id)
# define RCSIDH(h, id)
#endif
/*
* Try and determine endianness of the target system.
*
* Other projects seem to use endian.h and variants, but these are
* in non standard locations, and may mess up cross compiling.
*
* Here at least the endianness can be set explicitly with
* -DLITTLE_ENDIAN or -DBIG_ENDIAN.
*/
#if !defined(FR_LITTLE_ENDIAN) && !defined(FR_BIG_ENDIAN)
# if defined(__LITTLE_ENDIAN__) || \
(defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__))
# define FR_LITTLE_ENDIAN 1
# elif defined(__BIG_ENDIAN__) || \
(defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
# define FR_BIG_ENDIAN 1
# else
# error Failed determining endianness of system
# endif
#endif
#ifdef __cplusplus
}
#endif
#endif /* _BUILD_H */
|