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 <jfonseca@vmware.com> 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 /* 32 * OpenHarmony defines __linux__, so DETECT_OS_LINUX and DETECT_OS_POSIX will 33 * also be defined. 34 */ 35 #if defined(__OHOS_FAMILY__) 36 #define DETECT_OS_OHOS 1 37 #endif 38 39 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) 40 #define DETECT_OS_FREEBSD 1 41 #define DETECT_OS_BSD 1 42 #define DETECT_OS_POSIX 1 43 #endif 44 45 #if defined(__OpenBSD__) 46 #define DETECT_OS_OPENBSD 1 47 #define DETECT_OS_BSD 1 48 #define DETECT_OS_POSIX 1 49 #endif 50 51 #if defined(__NetBSD__) 52 #define DETECT_OS_NETBSD 1 53 #define DETECT_OS_BSD 1 54 #define DETECT_OS_POSIX 1 55 #endif 56 57 #if defined(__DragonFly__) 58 #define DETECT_OS_DRAGONFLY 1 59 #define DETECT_OS_BSD 1 60 #define DETECT_OS_POSIX 1 61 #endif 62 63 #if defined(__Fuchsia__) 64 #define DETECT_OS_FUCHSIA 1 65 #define DETECT_OS_POSIX_LITE 1 66 #endif 67 68 #if defined(__GNU__) 69 #define DETECT_OS_HURD 1 70 #define DETECT_OS_POSIX 1 71 #endif 72 73 #if defined(__sun) 74 #define DETECT_OS_SOLARIS 1 75 #define DETECT_OS_POSIX 1 76 #endif 77 78 #if defined(__APPLE__) 79 #define DETECT_OS_APPLE 1 80 #define DETECT_OS_POSIX 1 81 #endif 82 83 #if defined(_WIN32) || defined(WIN32) 84 #define DETECT_OS_WINDOWS 1 85 #endif 86 87 #if defined(__HAIKU__) 88 #define DETECT_OS_HAIKU 1 89 #define DETECT_OS_POSIX 1 90 #endif 91 92 #if defined(__CYGWIN__) 93 #define DETECT_OS_CYGWIN 1 94 #define DETECT_OS_POSIX 1 95 #endif 96 97 #if defined(__managarm__) 98 #define DETECT_OS_MANAGARM 1 99 #define DETECT_OS_POSIX 1 100 #endif 101 102 103 /* 104 * Make sure DETECT_OS_* are always defined, so that they can be used with #if 105 */ 106 #ifndef DETECT_OS_ANDROID 107 #define DETECT_OS_ANDROID 0 108 #endif 109 #ifndef DETECT_OS_APPLE 110 #define DETECT_OS_APPLE 0 111 #endif 112 #ifndef DETECT_OS_BSD 113 #define DETECT_OS_BSD 0 114 #endif 115 #ifndef DETECT_OS_CYGWIN 116 #define DETECT_OS_CYGWIN 0 117 #endif 118 #ifndef DETECT_OS_DRAGONFLY 119 #define DETECT_OS_DRAGONFLY 0 120 #endif 121 #ifndef DETECT_OS_FREEBSD 122 #define DETECT_OS_FREEBSD 0 123 #endif 124 #ifndef DETECT_OS_HAIKU 125 #define DETECT_OS_HAIKU 0 126 #endif 127 #ifndef DETECT_OS_FUCHSIA 128 #define DETECT_OS_FUCHSIA 0 129 #endif 130 #ifndef DETECT_OS_HURD 131 #define DETECT_OS_HURD 0 132 #endif 133 #ifndef DETECT_OS_LINUX 134 #define DETECT_OS_LINUX 0 135 #endif 136 #ifndef DETECT_OS_NETBSD 137 #define DETECT_OS_NETBSD 0 138 #endif 139 #ifndef DETECT_OS_OPENBSD 140 #define DETECT_OS_OPENBSD 0 141 #endif 142 #ifndef DETECT_OS_SOLARIS 143 #define DETECT_OS_SOLARIS 0 144 #endif 145 #ifndef DETECT_OS_POSIX 146 #define DETECT_OS_POSIX 0 147 #endif 148 #ifndef DETECT_OS_POSIX_LITE 149 #define DETECT_OS_POSIX_LITE DETECT_OS_POSIX 150 #endif 151 #ifndef DETECT_OS_WINDOWS 152 #define DETECT_OS_WINDOWS 0 153 #endif 154 #ifndef DETECT_OS_MANAGARM 155 #define DETECT_OS_MANAGARM 0 156 #endif 157 #ifndef DETECT_OS_OHOS 158 #define DETECT_OS_OHOS 0 159 #endif 160 161 #endif /* DETECT_OS_H */ 162