106f32e7eSjoerg // Copyright 2015, Google Inc.
206f32e7eSjoerg // All rights reserved.
306f32e7eSjoerg //
406f32e7eSjoerg // Redistribution and use in source and binary forms, with or without
506f32e7eSjoerg // modification, are permitted provided that the following conditions are
606f32e7eSjoerg // met:
706f32e7eSjoerg //
806f32e7eSjoerg //     * Redistributions of source code must retain the above copyright
906f32e7eSjoerg // notice, this list of conditions and the following disclaimer.
1006f32e7eSjoerg //     * Redistributions in binary form must reproduce the above
1106f32e7eSjoerg // copyright notice, this list of conditions and the following disclaimer
1206f32e7eSjoerg // in the documentation and/or other materials provided with the
1306f32e7eSjoerg // distribution.
1406f32e7eSjoerg //     * Neither the name of Google Inc. nor the names of its
1506f32e7eSjoerg // contributors may be used to endorse or promote products derived from
1606f32e7eSjoerg // this software without specific prior written permission.
1706f32e7eSjoerg //
1806f32e7eSjoerg // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1906f32e7eSjoerg // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2006f32e7eSjoerg // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2106f32e7eSjoerg // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2206f32e7eSjoerg // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2306f32e7eSjoerg // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2406f32e7eSjoerg // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2506f32e7eSjoerg // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2606f32e7eSjoerg // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2706f32e7eSjoerg // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2806f32e7eSjoerg // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2906f32e7eSjoerg //
30*da58b97aSjoerg // The Google C++ Testing and Mocking Framework (Google Test)
3106f32e7eSjoerg //
3206f32e7eSjoerg // This header file defines the GTEST_OS_* macro.
3306f32e7eSjoerg // It is separate from gtest-port.h so that custom/gtest-port.h can include it.
3406f32e7eSjoerg 
3506f32e7eSjoerg #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
3606f32e7eSjoerg #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
3706f32e7eSjoerg 
3806f32e7eSjoerg // Determines the platform on which Google Test is compiled.
3906f32e7eSjoerg #ifdef __CYGWIN__
4006f32e7eSjoerg # define GTEST_OS_CYGWIN 1
41*da58b97aSjoerg # elif defined(__MINGW__) || defined(__MINGW32__) || defined(__MINGW64__)
42*da58b97aSjoerg #  define GTEST_OS_WINDOWS_MINGW 1
43*da58b97aSjoerg #  define GTEST_OS_WINDOWS 1
4406f32e7eSjoerg #elif defined _WIN32
4506f32e7eSjoerg # define GTEST_OS_WINDOWS 1
4606f32e7eSjoerg # ifdef _WIN32_WCE
4706f32e7eSjoerg #  define GTEST_OS_WINDOWS_MOBILE 1
4806f32e7eSjoerg # elif defined(WINAPI_FAMILY)
4906f32e7eSjoerg #  include <winapifamily.h>
5006f32e7eSjoerg #  if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
5106f32e7eSjoerg #   define GTEST_OS_WINDOWS_DESKTOP 1
5206f32e7eSjoerg #  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
5306f32e7eSjoerg #   define GTEST_OS_WINDOWS_PHONE 1
5406f32e7eSjoerg #  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
5506f32e7eSjoerg #   define GTEST_OS_WINDOWS_RT 1
56*da58b97aSjoerg #  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_TV_TITLE)
57*da58b97aSjoerg #   define GTEST_OS_WINDOWS_PHONE 1
58*da58b97aSjoerg #   define GTEST_OS_WINDOWS_TV_TITLE 1
5906f32e7eSjoerg #  else
6006f32e7eSjoerg     // WINAPI_FAMILY defined but no known partition matched.
6106f32e7eSjoerg     // Default to desktop.
6206f32e7eSjoerg #   define GTEST_OS_WINDOWS_DESKTOP 1
6306f32e7eSjoerg #  endif
6406f32e7eSjoerg # else
6506f32e7eSjoerg #  define GTEST_OS_WINDOWS_DESKTOP 1
6606f32e7eSjoerg # endif  // _WIN32_WCE
67*da58b97aSjoerg #elif defined __OS2__
68*da58b97aSjoerg # define GTEST_OS_OS2 1
6906f32e7eSjoerg #elif defined __APPLE__
7006f32e7eSjoerg # define GTEST_OS_MAC 1
7106f32e7eSjoerg # if TARGET_OS_IPHONE
7206f32e7eSjoerg #  define GTEST_OS_IOS 1
7306f32e7eSjoerg # endif
74*da58b97aSjoerg #elif defined __DragonFly__
75*da58b97aSjoerg # define GTEST_OS_DRAGONFLY 1
7606f32e7eSjoerg #elif defined __FreeBSD__
7706f32e7eSjoerg # define GTEST_OS_FREEBSD 1
78*da58b97aSjoerg #elif defined __Fuchsia__
79*da58b97aSjoerg # define GTEST_OS_FUCHSIA 1
80*da58b97aSjoerg #elif defined(__GLIBC__) && defined(__FreeBSD_kernel__)
81*da58b97aSjoerg # define GTEST_OS_GNU_KFREEBSD 1
8206f32e7eSjoerg #elif defined __linux__
8306f32e7eSjoerg # define GTEST_OS_LINUX 1
8406f32e7eSjoerg # if defined __ANDROID__
8506f32e7eSjoerg #  define GTEST_OS_LINUX_ANDROID 1
8606f32e7eSjoerg # endif
8706f32e7eSjoerg #elif defined __MVS__
8806f32e7eSjoerg # define GTEST_OS_ZOS 1
8906f32e7eSjoerg #elif defined(__sun) && defined(__SVR4)
9006f32e7eSjoerg # define GTEST_OS_SOLARIS 1
9106f32e7eSjoerg #elif defined(_AIX)
9206f32e7eSjoerg # define GTEST_OS_AIX 1
9306f32e7eSjoerg #elif defined(__hpux)
9406f32e7eSjoerg # define GTEST_OS_HPUX 1
9506f32e7eSjoerg #elif defined __native_client__
9606f32e7eSjoerg # define GTEST_OS_NACL 1
9706f32e7eSjoerg #elif defined __NetBSD__
9806f32e7eSjoerg # define GTEST_OS_NETBSD 1
9906f32e7eSjoerg #elif defined __OpenBSD__
10006f32e7eSjoerg # define GTEST_OS_OPENBSD 1
10106f32e7eSjoerg #elif defined __QNX__
10206f32e7eSjoerg # define GTEST_OS_QNX 1
10306f32e7eSjoerg #elif defined(__HAIKU__)
10406f32e7eSjoerg #define GTEST_OS_HAIKU 1
10506f32e7eSjoerg #endif  // __CYGWIN__
10606f32e7eSjoerg 
10706f32e7eSjoerg #endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
108