17ec681f3Smrg/* SPDX-License-Identifier: MIT */
27ec681f3Smrg/* Copyright 2008 VMware, Inc. */
37ec681f3Smrg
47ec681f3Smrg/**
57ec681f3Smrg * Auto-detect the operating system family.
67ec681f3Smrg *
77ec681f3Smrg * See also:
87ec681f3Smrg * - http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
97ec681f3Smrg * - echo | gcc -dM -E - | sort
107ec681f3Smrg * - http://msdn.microsoft.com/en-us/library/b0084kay.aspx
117ec681f3Smrg *
127ec681f3Smrg * @author José Fonseca <jfonseca@vmware.com>
137ec681f3Smrg */
147ec681f3Smrg
157ec681f3Smrg#ifndef DETECT_OS_H
167ec681f3Smrg#define DETECT_OS_H
177ec681f3Smrg
187ec681f3Smrg#if defined(__linux__)
197ec681f3Smrg#define DETECT_OS_LINUX 1
207ec681f3Smrg#define DETECT_OS_UNIX 1
217ec681f3Smrg#endif
227ec681f3Smrg
237ec681f3Smrg/*
247ec681f3Smrg * Android defines __linux__, so DETECT_OS_LINUX and DETECT_OS_UNIX will
257ec681f3Smrg * also be defined.
267ec681f3Smrg */
277ec681f3Smrg#if defined(ANDROID)
287ec681f3Smrg#define DETECT_OS_ANDROID 1
297ec681f3Smrg#endif
307ec681f3Smrg
317ec681f3Smrg#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
327ec681f3Smrg#define DETECT_OS_FREEBSD 1
337ec681f3Smrg#define DETECT_OS_BSD 1
347ec681f3Smrg#define DETECT_OS_UNIX 1
357ec681f3Smrg#endif
367ec681f3Smrg
377ec681f3Smrg#if defined(__OpenBSD__)
387ec681f3Smrg#define DETECT_OS_OPENBSD 1
397ec681f3Smrg#define DETECT_OS_BSD 1
407ec681f3Smrg#define DETECT_OS_UNIX 1
417ec681f3Smrg#endif
427ec681f3Smrg
437ec681f3Smrg#if defined(__NetBSD__)
447ec681f3Smrg#define DETECT_OS_NETBSD 1
457ec681f3Smrg#define DETECT_OS_BSD 1
467ec681f3Smrg#define DETECT_OS_UNIX 1
477ec681f3Smrg#endif
487ec681f3Smrg
497ec681f3Smrg#if defined(__DragonFly__)
507ec681f3Smrg#define DETECT_OS_DRAGONFLY 1
517ec681f3Smrg#define DETECT_OS_BSD 1
527ec681f3Smrg#define DETECT_OS_UNIX 1
537ec681f3Smrg#endif
547ec681f3Smrg
557ec681f3Smrg#if defined(__GNU__)
567ec681f3Smrg#define DETECT_OS_HURD 1
577ec681f3Smrg#define DETECT_OS_UNIX 1
587ec681f3Smrg#endif
597ec681f3Smrg
607ec681f3Smrg#if defined(__sun)
617ec681f3Smrg#define DETECT_OS_SOLARIS 1
627ec681f3Smrg#define DETECT_OS_UNIX 1
637ec681f3Smrg#endif
647ec681f3Smrg
657ec681f3Smrg#if defined(__APPLE__)
667ec681f3Smrg#define DETECT_OS_APPLE 1
677ec681f3Smrg#define DETECT_OS_UNIX 1
687ec681f3Smrg#endif
697ec681f3Smrg
707ec681f3Smrg#if defined(_WIN32) || defined(WIN32)
717ec681f3Smrg#define DETECT_OS_WINDOWS 1
727ec681f3Smrg#endif
737ec681f3Smrg
747ec681f3Smrg#if defined(__HAIKU__)
757ec681f3Smrg#define DETECT_OS_HAIKU 1
767ec681f3Smrg#define DETECT_OS_UNIX 1
777ec681f3Smrg#endif
787ec681f3Smrg
797ec681f3Smrg#if defined(__CYGWIN__)
807ec681f3Smrg#define DETECT_OS_CYGWIN 1
817ec681f3Smrg#define DETECT_OS_UNIX 1
827ec681f3Smrg#endif
837ec681f3Smrg
847ec681f3Smrg
857ec681f3Smrg/*
867ec681f3Smrg * Make sure DETECT_OS_* are always defined, so that they can be used with #if
877ec681f3Smrg */
887ec681f3Smrg#ifndef DETECT_OS_ANDROID
897ec681f3Smrg#define DETECT_OS_ANDROID 0
907ec681f3Smrg#endif
917ec681f3Smrg#ifndef DETECT_OS_APPLE
927ec681f3Smrg#define DETECT_OS_APPLE 0
937ec681f3Smrg#endif
947ec681f3Smrg#ifndef DETECT_OS_BSD
957ec681f3Smrg#define DETECT_OS_BSD 0
967ec681f3Smrg#endif
977ec681f3Smrg#ifndef DETECT_OS_CYGWIN
987ec681f3Smrg#define DETECT_OS_CYGWIN 0
997ec681f3Smrg#endif
1007ec681f3Smrg#ifndef DETECT_OS_DRAGONFLY
1017ec681f3Smrg#define DETECT_OS_DRAGONFLY 0
1027ec681f3Smrg#endif
1037ec681f3Smrg#ifndef DETECT_OS_FREEBSD
1047ec681f3Smrg#define DETECT_OS_FREEBSD 0
1057ec681f3Smrg#endif
1067ec681f3Smrg#ifndef DETECT_OS_HAIKU
1077ec681f3Smrg#define DETECT_OS_HAIKU 0
1087ec681f3Smrg#endif
1097ec681f3Smrg#ifndef DETECT_OS_HURD
1107ec681f3Smrg#define DETECT_OS_HURD 0
1117ec681f3Smrg#endif
1127ec681f3Smrg#ifndef DETECT_OS_LINUX
1137ec681f3Smrg#define DETECT_OS_LINUX 0
1147ec681f3Smrg#endif
1157ec681f3Smrg#ifndef DETECT_OS_NETBSD
1167ec681f3Smrg#define DETECT_OS_NETBSD 0
1177ec681f3Smrg#endif
1187ec681f3Smrg#ifndef DETECT_OS_OPENBSD
1197ec681f3Smrg#define DETECT_OS_OPENBSD 0
1207ec681f3Smrg#endif
1217ec681f3Smrg#ifndef DETECT_OS_SOLARIS
1227ec681f3Smrg#define DETECT_OS_SOLARIS 0
1237ec681f3Smrg#endif
1247ec681f3Smrg#ifndef DETECT_OS_UNIX
1257ec681f3Smrg#define DETECT_OS_UNIX 0
1267ec681f3Smrg#endif
1277ec681f3Smrg#ifndef DETECT_OS_WINDOWS
1287ec681f3Smrg#define DETECT_OS_WINDOWS 0
1297ec681f3Smrg#endif
1307ec681f3Smrg
1317ec681f3Smrg#endif /* DETECT_OS_H */
132