Add support for ICE/STUN/TURN in res_rtp_asterisk and chan_sip.
[asterisk/asterisk.git] / res / pjproject / pjlib / include / pj / compat / cc_gcc.h
1 /* $Id$ */
2 /* 
3  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
4  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
19  */
20 #ifndef __PJ_COMPAT_CC_GCC_H__
21 #define __PJ_COMPAT_CC_GCC_H__
22
23 /**
24  * @file cc_gcc.h
25  * @brief Describes GCC compiler specifics.
26  */
27
28 #ifndef __GNUC__
29 #  error "This file is only for gcc!"
30 #endif
31
32 #define PJ_CC_NAME              "gcc"
33 #define PJ_CC_VER_1             __GNUC__
34 #define PJ_CC_VER_2             __GNUC_MINOR__
35
36 /* __GNUC_PATCHLEVEL__ doesn't exist in gcc-2.9x.x */
37 #ifdef __GNUC_PATCHLEVEL__
38 #   define PJ_CC_VER_3          __GNUC_PATCHLEVEL__
39 #else
40 #   define PJ_CC_VER_3          0
41 #endif
42
43
44
45 #define PJ_THREAD_FUNC  
46 #define PJ_NORETURN             
47
48 #define PJ_HAS_INT64            1
49
50 #ifdef __STRICT_ANSI__
51   #include <inttypes.h> 
52   typedef int64_t               pj_int64_t;
53   typedef uint64_t              pj_uint64_t;
54   #define PJ_INLINE_SPECIFIER   static __inline
55   #define PJ_ATTR_NORETURN      
56 #else
57   typedef long long             pj_int64_t;
58   typedef unsigned long long    pj_uint64_t;
59   #define PJ_INLINE_SPECIFIER   static inline
60   #define PJ_ATTR_NORETURN      __attribute__ ((noreturn))
61 #endif
62
63 #define PJ_INT64(val)           val##LL
64 #define PJ_UINT64(val)          val##LLU
65 #define PJ_INT64_FMT            "L"
66
67
68 #ifdef __GLIBC__
69 #   define PJ_HAS_BZERO         1
70 #endif
71
72 #define PJ_UNREACHED(x)         
73
74 #define PJ_ALIGN_DATA(declaration, alignment) declaration __attribute__((aligned (alignment)))
75
76
77 #endif  /* __PJ_COMPAT_CC_GCC_H__ */
78