|
|
@ -54,37 +54,87 @@ |
|
|
|
#define CLRFLAG(v,f) ((v) &=~FLAG(f)) |
|
|
|
#define CHKFLAG(v,f) ((v) & FLAG(f) ? true : false) |
|
|
|
|
|
|
|
// some nice optional GNUC features
|
|
|
|
#if __GNUC__ >= 3 |
|
|
|
#define __must_check __attribute__ ((warn_unused_result)) |
|
|
|
#define __deprecated __attribute__ ((deprecated)) |
|
|
|
#define __attrib_const __attribute__ ((__const__)) |
|
|
|
/* likely() and unlikely() can be used to mark boolean expressions
|
|
|
|
as (not) likely true which will help the compiler to optimise */ |
|
|
|
#ifdef __GNUC__ |
|
|
|
#define APT_GCC_VERSION (__GNUC__ << 8 | __GNUC_MINOR__) |
|
|
|
#else |
|
|
|
#define APT_GCC_VERSION 0 |
|
|
|
#endif |
|
|
|
|
|
|
|
/* likely() and unlikely() can be used to mark boolean expressions
|
|
|
|
as (not) likely true which will help the compiler to optimise */ |
|
|
|
#if APT_GCC_VERSION >= 0x0300 |
|
|
|
#define likely(x) __builtin_expect (!!(x), 1) |
|
|
|
#define unlikely(x) __builtin_expect (!!(x), 0) |
|
|
|
#else |
|
|
|
#define __must_check /* no warn_unused_result */ |
|
|
|
#define __deprecated /* no deprecated */ |
|
|
|
#define __attrib_const /* no const attribute */ |
|
|
|
#define likely(x) (x) |
|
|
|
#define unlikely(x) (x) |
|
|
|
#endif |
|
|
|
|
|
|
|
#if APT_GCC_VERSION >= 0x0300 |
|
|
|
#define APT_UNUSED __attribute__((unused)) |
|
|
|
#define APT_CONST __attribute__((const)) |
|
|
|
#define APT_PURE __attribute__((pure)) |
|
|
|
#define APT_NORETURN __attribute__((noreturn)) |
|
|
|
#define APT_PRINTF(n) __attribute__((format(printf, n, n + 1))) |
|
|
|
#else |
|
|
|
#define APT_UNUSED |
|
|
|
#define APT_CONST |
|
|
|
#define APT_PURE |
|
|
|
#define APT_NORETURN |
|
|
|
#define APT_PRINTF(n) |
|
|
|
#endif |
|
|
|
|
|
|
|
#if APT_GCC_VERSION > 0x0302 |
|
|
|
#define APT_NONNULL(...) __attribute__((nonnull(__VA_ARGS__))) |
|
|
|
#define APT_MUSTCHECK __attribute__((warn_unused_result)) |
|
|
|
#else |
|
|
|
#define APT_NONNULL(...) |
|
|
|
#define APT_REQRET |
|
|
|
#endif |
|
|
|
|
|
|
|
#if APT_GCC_VERSION >= 0x0400 |
|
|
|
#define APT_SENTINEL __attribute__((sentinel)) |
|
|
|
#else |
|
|
|
#define APT_SENTINEL |
|
|
|
#endif |
|
|
|
|
|
|
|
// cold functions are unlikely() to be called
|
|
|
|
#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4 |
|
|
|
#define __cold __attribute__ ((__cold__)) |
|
|
|
#define __hot __attribute__ ((__hot__)) |
|
|
|
#if APT_GCC_VERSION >= 0x0403 |
|
|
|
#define APT_COLD __attribute__ ((__cold__)) |
|
|
|
#define APT_HOT __attribute__ ((__hot__)) |
|
|
|
#else |
|
|
|
#define __cold /* no cold marker */ |
|
|
|
#define __hot /* no hot marker */ |
|
|
|
#define __cold |
|
|
|
#define __hot |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef __GNUG__ |
|
|
|
// Methods have a hidden this parameter that is visible to this attribute
|
|
|
|
#ifndef APT_10_CLEANER_HEADERS |
|
|
|
#if APT_GCC_VERSION >= 0x0300 |
|
|
|
#define __must_check __attribute__ ((warn_unused_result)) |
|
|
|
#define __deprecated __attribute__ ((deprecated)) |
|
|
|
#define __attrib_const __attribute__ ((__const__)) |
|
|
|
#define __like_printf(n) __attribute__((format(printf, n, n + 1))) |
|
|
|
#else |
|
|
|
#define __must_check /* no warn_unused_result */ |
|
|
|
#define __deprecated /* no deprecated */ |
|
|
|
#define __attrib_const /* no const attribute */ |
|
|
|
#define __like_printf(n) /* no like-printf */ |
|
|
|
#endif |
|
|
|
#if APT_GCC_VERSION >= 0x0403 |
|
|
|
#define __cold __attribute__ ((__cold__)) |
|
|
|
#define __hot __attribute__ ((__hot__)) |
|
|
|
#else |
|
|
|
#define __cold /* no cold marker */ |
|
|
|
#define __hot /* no hot marker */ |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
// These lines are extracted by the makefiles and the buildsystem
|
|
|
|
// Increasing MAJOR or MINOR results in the need of recompiling all
|
|
|
|
// reverse-dependencies of libapt-pkg against the new SONAME.
|
|
|
|
// Non-ABI-Breaks should only increase RELEASE number.
|
|
|
|
// See also buildlib/libversion.mak
|
|
|
|
#define APT_PKG_MAJOR 4 |
|
|
|
#define APT_PKG_MINOR 12 |
|
|
|
#define APT_PKG_RELEASE 0 |
|
|
|
|
|
|
|
#endif |
|
|
|