cc-compat.h 1.4 KB
Newer Older
1
/*
schu committed
2
 * Copyright (C) 2009-2012 the libgit2 contributors
Vicent Marti committed
3 4 5
 *
 * This file is part of libgit2, distributed under the GNU GPL v2 with
 * a Linking Exception. For full terms see the included COPYING file.
6 7 8 9 10 11 12
 */
#ifndef INCLUDE_compat_h__
#define INCLUDE_compat_h__

/*
 * See if our compiler is known to support flexible array members.
 */
13
#ifndef GIT_FLEX_ARRAY
14 15 16 17 18 19 20 21
#	if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
#		define GIT_FLEX_ARRAY /* empty */
#	elif defined(__GNUC__)
#		if (__GNUC__ >= 3)
#			define GIT_FLEX_ARRAY /* empty */
#		else
#			define GIT_FLEX_ARRAY 0 /* older GNU extension */
#		endif
Vicent Marti committed
22
#	endif
23 24

/* Default to safer but a bit wasteful traditional style */
25 26 27
#	ifndef GIT_FLEX_ARRAY
#		define GIT_FLEX_ARRAY 1
#	endif
28 29 30
#endif

#ifdef __GNUC__
31
#	define GIT_TYPEOF(x) (__typeof__(x))
32
#else
33
#	define GIT_TYPEOF(x)
34 35
#endif

36
#define GIT_UNUSED(x) ((void)(x))
37

38
/* Define the printf format specifer to use for size_t output */
39
#if defined(_MSC_VER) || defined(__MINGW32__)
40
#	define PRIuZ "Iu"
41
#else
42
#	define PRIuZ "zu"
43 44
#endif

45 46 47
/* Micosoft Visual C/C++ */
#if defined(_MSC_VER)
/* disable "deprecated function" warnings */
48
#	pragma warning ( disable : 4996 )
49
/* disable "conditional expression is constant" level 4 warnings */
50
#	pragma warning ( disable : 4127 )
51 52
#endif

53 54 55 56 57 58 59 60
#if defined (_MSC_VER)
	typedef unsigned char bool;
#	define true 1
#	define false 0
#else
#	include <stdbool.h>
#endif

61
#endif /* INCLUDE_compat_h__ */