sanitizer_platform.h revision b8a141f3783d796eabf45fabff82f3e08244e338
1f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//===-- sanitizer_platform.h ------------------------------------*- C++ -*-===//
2a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//
3a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//                     The LLVM Compiler Infrastructure
4a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//
5a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// This file is distributed under the University of Illinois Open Source
6a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// License. See LICENSE.TXT for details.
7a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//
8a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//===----------------------------------------------------------------------===//
9a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//
10a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// Common platform macros.
11a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//===----------------------------------------------------------------------===//
12a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
13a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#ifndef SANITIZER_PLATFORM_H
14a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#define SANITIZER_PLATFORM_H
15a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
16a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#if !defined(__linux__) && !defined(__APPLE__) && !defined(_WIN32)
17a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# error "This operating system is not supported"
18a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif
19a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
20a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#if defined(__linux__)
21a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# define SANITIZER_LINUX   1
22a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#else
23a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# define SANITIZER_LINUX   0
24a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif
25a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
26a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#if defined(__APPLE__)
27a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# define SANITIZER_MAC     1
28a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# include <TargetConditionals.h>
29a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# if TARGET_OS_IPHONE
30a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#  define SANITIZER_IOS    1
31a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# else
327979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org#  define SANITIZER_IOS    0
331c09276ce2ac5214e81ca554360b9f101187893blrn@chromium.org# endif
34a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#else
35fb144a0716afe7ab8bf245f2391a9e53b3db3c89fschneider@chromium.org# define SANITIZER_MAC     0
367979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org# define SANITIZER_IOS     0
37a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif
38ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org
39ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org#if defined(_WIN32)
40a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# define SANITIZER_WINDOWS 1
41a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#else
42a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# define SANITIZER_WINDOWS 0
43a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif
44a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
45a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#if defined(__ANDROID__) || defined(ANDROID)
46a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org# define SANITIZER_ANDROID 1
47a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#else
48fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org# define SANITIZER_ANDROID 0
49a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif
50a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
51a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#define SANITIZER_POSIX (SANITIZER_LINUX || SANITIZER_MAC)
52a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
53a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif // SANITIZER_PLATFORM_H
54a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org