• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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