1 /* SPDX-License-Identifier: MIT */ 2 /* Copyright 2008 VMware, Inc. */ 3 4 /** 5 * Auto-detect the operating system family. 6 * 7 * See also: 8 * - http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html 9 * - echo | gcc -dM -E - | sort 10 * - http://msdn.microsoft.com/en-us/library/b0084kay.aspx 11 * 12 * @author José Fonseca <[email protected]> 13 */ 14 15 #ifndef DETECT_OS_H 16 #define DETECT_OS_H 17 18 #if defined(__linux__) 19 #define DETECT_OS_LINUX 1 20 #define DETECT_OS_POSIX 1 21 #endif 22 23 /* 24 * Android defines __linux__, so DETECT_OS_LINUX and DETECT_OS_POSIX will 25 * also be defined. 26 */ 27 #if defined(__ANDROID__) 28 #define DETECT_OS_ANDROID 1 29 #endif 30 31 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) 32 #define DETECT_OS_FREEBSD 1 33 #define DETECT_OS_BSD 1 34 #define DETECT_OS_POSIX 1 35 #endif 36 37 #if defined(__OpenBSD__) 38 #define DETECT_OS_OPENBSD 1 39 #define DETECT_OS_BSD 1 40 #define DETECT_OS_POSIX 1 41 #endif 42 43 #if defined(__NetBSD__) 44 #define DETECT_OS_NETBSD 1 45 #define DETECT_OS_BSD 1 46 #define DETECT_OS_POSIX 1 47 #endif 48 49 #if defined(__DragonFly__) 50 #define DETECT_OS_DRAGONFLY 1 51 #define DETECT_OS_BSD 1 52 #define DETECT_OS_POSIX 1 53 #endif 54 55 #if defined(__Fuchsia__) 56 #define DETECT_OS_FUCHSIA 1 57 #define DETECT_OS_POSIX_LITE 1 58 #endif 59 60 #if defined(__GNU__) 61 #define DETECT_OS_HURD 1 62 #define DETECT_OS_POSIX 1 63 #endif 64 65 #if defined(__sun) 66 #define DETECT_OS_SOLARIS 1 67 #define DETECT_OS_POSIX 1 68 #endif 69 70 #if defined(__APPLE__) 71 #define DETECT_OS_APPLE 1 72 #define DETECT_OS_POSIX 1 73 #endif 74 75 #if defined(_WIN32) || defined(WIN32) 76 #define DETECT_OS_WINDOWS 1 77 #endif 78 79 #if defined(__HAIKU__) 80 #define DETECT_OS_HAIKU 1 81 #define DETECT_OS_POSIX 1 82 #endif 83 84 #if defined(__CYGWIN__) 85 #define DETECT_OS_CYGWIN 1 86 #define DETECT_OS_POSIX 1 87 #endif 88 89 #if defined(__managarm__) 90 #define DETECT_OS_MANAGARM 1 91 #define DETECT_OS_POSIX 1 92 #endif 93 94 95 /* 96 * Make sure DETECT_OS_* are always defined, so that they can be used with #if 97 */ 98 #ifndef DETECT_OS_ANDROID 99 #define DETECT_OS_ANDROID 0 100 #endif 101 #ifndef DETECT_OS_APPLE 102 #define DETECT_OS_APPLE 0 103 #endif 104 #ifndef DETECT_OS_BSD 105 #define DETECT_OS_BSD 0 106 #endif 107 #ifndef DETECT_OS_CYGWIN 108 #define DETECT_OS_CYGWIN 0 109 #endif 110 #ifndef DETECT_OS_DRAGONFLY 111 #define DETECT_OS_DRAGONFLY 0 112 #endif 113 #ifndef DETECT_OS_FREEBSD 114 #define DETECT_OS_FREEBSD 0 115 #endif 116 #ifndef DETECT_OS_HAIKU 117 #define DETECT_OS_HAIKU 0 118 #endif 119 #ifndef DETECT_OS_FUCHSIA 120 #define DETECT_OS_FUCHSIA 0 121 #endif 122 #ifndef DETECT_OS_HURD 123 #define DETECT_OS_HURD 0 124 #endif 125 #ifndef DETECT_OS_LINUX 126 #define DETECT_OS_LINUX 0 127 #endif 128 #ifndef DETECT_OS_NETBSD 129 #define DETECT_OS_NETBSD 0 130 #endif 131 #ifndef DETECT_OS_OPENBSD 132 #define DETECT_OS_OPENBSD 0 133 #endif 134 #ifndef DETECT_OS_SOLARIS 135 #define DETECT_OS_SOLARIS 0 136 #endif 137 #ifndef DETECT_OS_POSIX 138 #define DETECT_OS_POSIX 0 139 #endif 140 #ifndef DETECT_OS_POSIX_LITE 141 #define DETECT_OS_POSIX_LITE DETECT_OS_POSIX 142 #endif 143 #ifndef DETECT_OS_WINDOWS 144 #define DETECT_OS_WINDOWS 0 145 #endif 146 #ifndef DETECT_OS_MANAGARM 147 #define DETECT_OS_MANAGARM 0 148 #endif 149 150 #endif /* DETECT_OS_H */ 151