blob: 35aecf23fe668f0c5a2b37595d879dcc5b089546 [file] [log] [blame]
Benny Prijono5dcb38d2005-11-21 01:55:47 +00001/* $Id$ */
2/*
Benny Prijono844653c2008-12-23 17:27:53 +00003 * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
4 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
Benny Prijono5dcb38d2005-11-21 01:55:47 +00005 *
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
Benny Prijono33723ce2005-11-22 01:05:59 +000032#define PJ_CC_NAME "gcc"
33#define PJ_CC_VER_1 __GNUC__
34#define PJ_CC_VER_2 __GNUC_MINOR__
Benny Prijonoad910432007-01-18 17:33:31 +000035
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
Benny Prijono33723ce2005-11-22 01:05:59 +000043
44
Benny Prijono5dcb38d2005-11-21 01:55:47 +000045#define PJ_THREAD_FUNC
46#define PJ_NORETURN
Benny Prijono5dcb38d2005-11-21 01:55:47 +000047
48#define PJ_HAS_INT64 1
49
Benny Prijono92ac4472006-07-22 13:42:56 +000050#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
Benny Prijono5dcb38d2005-11-21 01:55:47 +000062
Benny Prijonoae44a762006-06-28 15:26:43 +000063#define PJ_INT64(val) val##LL
64#define PJ_UINT64(val) val##LLU
Benny Prijonoac9d1422006-01-18 23:32:27 +000065#define PJ_INT64_FMT "L"
66
Benny Prijono5dcb38d2005-11-21 01:55:47 +000067
Benny Prijonoac623b32006-07-03 15:19:31 +000068#ifdef __GLIBC__
69# define PJ_HAS_BZERO 1
70#endif
71
72
Benny Prijono5dcb38d2005-11-21 01:55:47 +000073#endif /* __PJ_COMPAT_CC_GCC_H__ */
74