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_UNIX 1
21 #endif
22 
23 /*
24  * Android defines __linux__, so DETECT_OS_LINUX and DETECT_OS_UNIX 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_UNIX 1
35 #endif
36 
37 #if defined(__OpenBSD__)
38 #define DETECT_OS_OPENBSD 1
39 #define DETECT_OS_BSD 1
40 #define DETECT_OS_UNIX 1
41 #endif
42 
43 #if defined(__NetBSD__)
44 #define DETECT_OS_NETBSD 1
45 #define DETECT_OS_BSD 1
46 #define DETECT_OS_UNIX 1
47 #endif
48 
49 #if defined(__DragonFly__)
50 #define DETECT_OS_DRAGONFLY 1
51 #define DETECT_OS_BSD 1
52 #define DETECT_OS_UNIX 1
53 #endif
54 
55 #if defined(__GNU__)
56 #define DETECT_OS_HURD 1
57 #define DETECT_OS_UNIX 1
58 #endif
59 
60 #if defined(__sun)
61 #define DETECT_OS_SOLARIS 1
62 #define DETECT_OS_UNIX 1
63 #endif
64 
65 #if defined(__APPLE__)
66 #define DETECT_OS_APPLE 1
67 #define DETECT_OS_UNIX 1
68 #endif
69 
70 #if defined(_WIN32) || defined(WIN32)
71 #define DETECT_OS_WINDOWS 1
72 #endif
73 
74 #if defined(__HAIKU__)
75 #define DETECT_OS_HAIKU 1
76 #define DETECT_OS_UNIX 1
77 #endif
78 
79 #if defined(__CYGWIN__)
80 #define DETECT_OS_CYGWIN 1
81 #define DETECT_OS_UNIX 1
82 #endif
83 
84 
85 /*
86  * Make sure DETECT_OS_* are always defined, so that they can be used with #if
87  */
88 #ifndef DETECT_OS_ANDROID
89 #define DETECT_OS_ANDROID 0
90 #endif
91 #ifndef DETECT_OS_APPLE
92 #define DETECT_OS_APPLE 0
93 #endif
94 #ifndef DETECT_OS_BSD
95 #define DETECT_OS_BSD 0
96 #endif
97 #ifndef DETECT_OS_CYGWIN
98 #define DETECT_OS_CYGWIN 0
99 #endif
100 #ifndef DETECT_OS_DRAGONFLY
101 #define DETECT_OS_DRAGONFLY 0
102 #endif
103 #ifndef DETECT_OS_FREEBSD
104 #define DETECT_OS_FREEBSD 0
105 #endif
106 #ifndef DETECT_OS_HAIKU
107 #define DETECT_OS_HAIKU 0
108 #endif
109 #ifndef DETECT_OS_HURD
110 #define DETECT_OS_HURD 0
111 #endif
112 #ifndef DETECT_OS_LINUX
113 #define DETECT_OS_LINUX 0
114 #endif
115 #ifndef DETECT_OS_NETBSD
116 #define DETECT_OS_NETBSD 0
117 #endif
118 #ifndef DETECT_OS_OPENBSD
119 #define DETECT_OS_OPENBSD 0
120 #endif
121 #ifndef DETECT_OS_SOLARIS
122 #define DETECT_OS_SOLARIS 0
123 #endif
124 #ifndef DETECT_OS_UNIX
125 #define DETECT_OS_UNIX 0
126 #endif
127 #ifndef DETECT_OS_WINDOWS
128 #define DETECT_OS_WINDOWS 0
129 #endif
130 
131 #endif /* DETECT_OS_H */
132