1 /*   (C) Copyright 2001, 2002, 2003, 2004, 2005 Stijn van Dongen
2  *   (C) Copyright 2006, 2007, 2008, 2009  Stijn van Dongen
3  *
4  * This file is part of tingea.  You can redistribute and/or modify tingea
5  * under the terms of the GNU General Public License; either version 3 of the
6  * License or (at your option) any later version.  You should have received a
7  * copy of the GPL along with tingea, in the file COPYING.
8 */
9 
10 #ifndef tingea_compile_h
11 #define tingea_compile_h
12 
13 
14 #ifndef TINGEA__TYPED_MINMAX
15 #  define TINGEA__TYPED_MINMAX 0
16 #endif
17 
18 
19 #ifndef __GNUC__
20 #  define   MCX_GNUC_OK       0
21 #  define inline         /* no inline */
22 #  define cpl__pure         /* no pure */
23 #  define cpl__const        /* no const */
24 #  define cpl__noreturn     /* no noreturn */
25 #  define cpl__malloc       /* no malloc */
26 #  define cpl__must_check   /* no warn_unused_result */
27 #  define cpl__deprecated   /* no deprecated */
28 #  define cpl__used         /* no used */
29 #  define cpl__unused       /* no unused */
30 #  define cpl__packed       /* no packed */
31 #  define likely(x)      (x)
32 #  define unlikely(x)    (x)
33 #else
34 #define   MCX_GNUC_OK       1
35 #if __GNUC__  >= 3
36 #  define inline __inline__ __attribute__ ((always_inline))
37 #  define cpl__pure         __attribute__ ((pure))
38 #  define cpl__const        __attribute__ ((const))
39 #  define cpl__noreturn     __attribute__ ((noreturn))
40 #  define cpl__malloc       __attribute__ ((malloc))
41 #  define cpl__must_check   __attribute__ ((warn_unused_result))
42 #  define cpl__deprecated   __attribute__ ((deprecated))
43 #  define cpl__used         __attribute__ ((used))
44 #  define cpl__unused       __attribute__ ((unused))
45 #  define cpl__packed       __attribute__ ((packed))
46 #  define likely(x)      __builtin_expect (!!(x), 1)
47 #  define unlikely(x)    __builtin_expect (!!(x), 0)
48 #else
49 #  define inline         /* no inline */
50 #  define cpl__pure         /* no pure */
51 #  define cpl__const        /* no const */
52 #  define cpl__noreturn     /* no noreturn */
53 #  define cpl__malloc       /* no malloc */
54 #  define cpl__must_check   /* no warn_unused_result */
55 #  define cpl__deprecated   /* no deprecated */
56 #  define cpl__used         /* no used */
57 #  define cpl__unused       /* no unused */
58 #  define cpl__packed       /* no packed */
59 #  define likely(x)      (x)
60 #  define unlikely(x)    (x)
61 #endif
62 #endif
63 
64 #endif
65 
66