From 15c4bc673aa47fe21f4a15865020c914ec6d632e Mon Sep 17 00:00:00 2001 From: Oscar Fuentes Date: Tue, 8 Dec 2009 02:40:09 +0000 Subject: [PATCH] For VC++, define the ?INT*_C macros only it they are not yet defined. Some compatibility updates like the Boost TR1 compatibility headers define them. Patch contributed by OvermindDL1! llvm-svn: 90828 --- llvm/include/llvm/System/DataTypes.h.cmake | 35 +++++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/llvm/include/llvm/System/DataTypes.h.cmake b/llvm/include/llvm/System/DataTypes.h.cmake index 180c86c14516..d9ca273fedb2 100644 --- a/llvm/include/llvm/System/DataTypes.h.cmake +++ b/llvm/include/llvm/System/DataTypes.h.cmake @@ -118,14 +118,33 @@ typedef signed int ssize_t; #define INT32_MAX 2147483647 #define INT32_MIN -2147483648 #define UINT32_MAX 4294967295U -#define INT8_C(C) C -#define UINT8_C(C) C -#define INT16_C(C) C -#define UINT16_C(C) C -#define INT32_C(C) C -#define UINT32_C(C) C ## U -#define INT64_C(C) ((int64_t) C ## LL) -#define UINT64_C(C) ((uint64_t) C ## ULL) +/* Certain compatibility updates to VC++ introduce the `cstdint' + * header, which defines the INT*_C macros. On default installs they + * are absent. */ +#ifndef INT8_C +# define INT8_C(C) C +#endif +#ifndef UINT8_C +# define UINT8_C(C) C +#endif +#ifndef INT16_C +# define INT16_C(C) C +#endif +#ifndef UINT16_C +# define UINT16_C(C) C +#endif +#ifndef INT32_C +# define INT32_C(C) C +#endif +#ifndef UINT32_C +# define UINT32_C(C) C ## U +#endif +#ifndef INT64_C +# define INT64_C(C) ((int64_t) C ## LL) +#endif +#ifndef UINT64_C +# define UINT64_C(C) ((uint64_t) C ## ULL) +#endif #endif /* _MSC_VER */ /* Set defaults for constants which we cannot find. */