summaryrefslogtreecommitdiff
path: root/gcc/d/d-system.h
blob: c61ef4b53ed90f38fb3b4cabf7ca359ab9d4161f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/* d-system.h -- DMD frontend inclusion of gcc header files.
 * Copyright (C) 2018-2020 Free Software Foundation, Inc.
 *
 * GCC is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3, or (at your option)
 * any later version.
 *
 * GCC is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with GCC; see the file COPYING3.  If not see
 * <http://www.gnu.org/licenses/>.
 */

#ifndef GCC_D_SYSTEM_H
#define GCC_D_SYSTEM_H

#include "config.h"
#include "system.h"

/* Used by the dmd front-end to determine if we have POSIX-style IO.  */
#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ \
	       || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ \
	       || __sun || __unix__)

/* Forward assert invariants to gcc_assert.  */
#undef assert
#define assert(EXPR) gcc_assert(EXPR)

/* Use libiberty's lrealpath to avoid portability problems.  */
#undef realpath
#define realpath(a, b) lrealpath((a))

/* Forward ctype.h macros used by the dmd front-end to safe-ctype.h.  */
#undef isalpha
#define isalpha(c) ISALPHA(c)
#undef isalnum
#define isalnum(c) ISALNUM(c)
#undef isdigit
#define isdigit(c) ISDIGIT(c)
#undef islower
#define islower(c) ISLOWER(c)
#undef isprint
#define isprint(c) ISPRINT(c)
#undef isspace
#define isspace(c) ISSPACE(c)
#undef isupper
#define isupper(c) ISUPPER(c)
#undef isxdigit
#define isxdigit(c) ISXDIGIT(c)
#undef tolower
#define tolower(c) TOLOWER(c)

/* Forward _mkdir on MinGW to mkdir in system.h.  */
#ifdef _WIN32
#undef _mkdir
#define _mkdir(p) mkdir(p, 0)
#endif

/* Define any missing _MAX and _MIN macros.  */
#ifndef INT32_MAX
# define INT32_MAX INTTYPE_MAXIMUM (int32_t)
#endif
#ifndef INT32_MIN
# define INT32_MIN INTTYPE_MINIMUM (int32_t)
#endif
#ifndef INT64_MIN
# define INT64_MIN INTTYPE_MINIMUM (int64_t)
#endif
#ifndef UINT32_MAX
# define UINT32_MAX INTTYPE_MAXIMUM (uint32_t)
#endif
#ifndef UINT64_MAX
# define UINT64_MAX INTTYPE_MAXIMUM (uint64_t)
#endif

#endif  /* GCC_D_SYSTEM_H  */