1/* d-system.h -- DMD frontend inclusion of gcc header files. 2 * Copyright (C) 2018-2020 Free Software Foundation, Inc. 3 * 4 * GCC is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 3, or (at your option) 7 * any later version. 8 * 9 * GCC is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with GCC; see the file COPYING3. If not see 16 * <http://www.gnu.org/licenses/>. 17 */ 18 19#ifndef GCC_D_SYSTEM_H 20#define GCC_D_SYSTEM_H 21 22#include "config.h" 23#include "system.h" 24 25/* Used by the dmd front-end to determine if we have POSIX-style IO. */ 26#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ \ 27 || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ \ 28 || __sun || __unix__) 29 30/* Forward assert invariants to gcc_assert. */ 31#undef assert 32#define assert(EXPR) gcc_assert(EXPR) 33 34/* Use libiberty's lrealpath to avoid portability problems. */ 35#undef realpath 36#define realpath(a, b) lrealpath((a)) 37 38/* Forward ctype.h macros used by the dmd front-end to safe-ctype.h. */ 39#undef isalpha 40#define isalpha(c) ISALPHA(c) 41#undef isalnum 42#define isalnum(c) ISALNUM(c) 43#undef isdigit 44#define isdigit(c) ISDIGIT(c) 45#undef islower 46#define islower(c) ISLOWER(c) 47#undef isprint 48#define isprint(c) ISPRINT(c) 49#undef isspace 50#define isspace(c) ISSPACE(c) 51#undef isupper 52#define isupper(c) ISUPPER(c) 53#undef isxdigit 54#define isxdigit(c) ISXDIGIT(c) 55#undef tolower 56#define tolower(c) TOLOWER(c) 57 58/* Forward _mkdir on MinGW to mkdir in system.h. */ 59#ifdef _WIN32 60#undef _mkdir 61#define _mkdir(p) mkdir(p, 0) 62#endif 63 64/* Define any missing _MAX and _MIN macros. */ 65#ifndef INT32_MAX 66# define INT32_MAX INTTYPE_MAXIMUM (int32_t) 67#endif 68#ifndef INT32_MIN 69# define INT32_MIN INTTYPE_MINIMUM (int32_t) 70#endif 71#ifndef INT64_MIN 72# define INT64_MIN INTTYPE_MINIMUM (int64_t) 73#endif 74#ifndef UINT32_MAX 75# define UINT32_MAX INTTYPE_MAXIMUM (uint32_t) 76#endif 77#ifndef UINT64_MAX 78# define UINT64_MAX INTTYPE_MAXIMUM (uint64_t) 79#endif 80 81#endif /* GCC_D_SYSTEM_H */ 82