|
Packit |
1fb8d4 |
/**
|
|
Packit |
1fb8d4 |
* WinPR: Windows Portable Runtime
|
|
Packit |
1fb8d4 |
* Platform-Specific Definitions
|
|
Packit |
1fb8d4 |
*
|
|
Packit |
1fb8d4 |
* Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
|
Packit |
1fb8d4 |
*
|
|
Packit |
1fb8d4 |
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
Packit |
1fb8d4 |
* you may not use this file except in compliance with the License.
|
|
Packit |
1fb8d4 |
* You may obtain a copy of the License at
|
|
Packit |
1fb8d4 |
*
|
|
Packit |
1fb8d4 |
* http://www.apache.org/licenses/LICENSE-2.0
|
|
Packit |
1fb8d4 |
*
|
|
Packit |
1fb8d4 |
* Unless required by applicable law or agreed to in writing, software
|
|
Packit |
1fb8d4 |
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
Packit |
1fb8d4 |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
Packit |
1fb8d4 |
* See the License for the specific language governing permissions and
|
|
Packit |
1fb8d4 |
* limitations under the License.
|
|
Packit |
1fb8d4 |
*/
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#ifndef WINPR_PLATFORM_H
|
|
Packit |
1fb8d4 |
#define WINPR_PLATFORM_H
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#include <stdlib.h>
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#include <winpr/wtypes.h>
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/*
|
|
Packit |
1fb8d4 |
* Processor Architectures:
|
|
Packit |
1fb8d4 |
* http://sourceforge.net/p/predef/wiki/Architectures/
|
|
Packit |
1fb8d4 |
*
|
|
Packit |
1fb8d4 |
* Visual Studio Predefined Macros:
|
|
Packit |
1fb8d4 |
* http://msdn.microsoft.com/en-ca/library/vstudio/b0084kay.aspx
|
|
Packit |
1fb8d4 |
*/
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Intel x86 (_M_IX86) */
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(i386) || defined(__i386) || defined(__i386__) || defined(__i486__) || \
|
|
Packit Service |
5a9772 |
defined(__i586__) || defined(__i686__) || defined(__X86__) || defined(_X86_) || \
|
|
Packit Service |
5a9772 |
defined(__I86__) || defined(__IA32__) || defined(__THW_INTEL__) || defined(__INTEL__)
|
|
Packit |
1fb8d4 |
#ifndef _M_IX86
|
|
Packit Service |
5a9772 |
#define _M_IX86 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* AMD64 (_M_AMD64) */
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(__amd64) || defined(__amd64__) || defined(__x86_64) || defined(__x86_64__) || \
|
|
Packit Service |
5a9772 |
defined(_M_X64)
|
|
Packit |
1fb8d4 |
#ifndef _M_AMD64
|
|
Packit Service |
5a9772 |
#define _M_AMD64 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Intel x86 or AMD64 (_M_IX86_AMD64) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(_M_IX86) || defined(_M_AMD64)
|
|
Packit |
1fb8d4 |
#ifndef _M_IX86_AMD64
|
|
Packit Service |
5a9772 |
#define _M_IX86_AMD64 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* ARM (_M_ARM) */
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(__arm__) || defined(__thumb__) || defined(__TARGET_ARCH_ARM) || \
|
|
Packit Service |
5a9772 |
defined(__TARGET_ARCH_THUMB)
|
|
Packit |
1fb8d4 |
#ifndef _M_ARM
|
|
Packit Service |
5a9772 |
#define _M_ARM 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* ARM64 (_M_ARM64) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(__aarch64__)
|
|
Packit |
1fb8d4 |
#ifndef _M_ARM64
|
|
Packit Service |
5a9772 |
#define _M_ARM64 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* MIPS (_M_MIPS) */
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(mips) || defined(__mips) || defined(__mips__) || defined(__MIPS__)
|
|
Packit |
1fb8d4 |
#ifndef _M_MIPS
|
|
Packit Service |
5a9772 |
#define _M_MIPS 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* MIPS64 (_M_MIPS64) */
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(mips64) || defined(__mips64) || defined(__mips64__) || defined(__MIPS64__)
|
|
Packit |
1fb8d4 |
#ifndef _M_MIPS64
|
|
Packit Service |
5a9772 |
#define _M_MIPS64 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* PowerPC (_M_PPC) */
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(__ppc__) || defined(__powerpc) || defined(__powerpc__) || defined(__POWERPC__) || \
|
|
Packit Service |
5a9772 |
defined(_ARCH_PPC)
|
|
Packit |
1fb8d4 |
#ifndef _M_PPC
|
|
Packit Service |
5a9772 |
#define _M_PPC 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Intel Itanium (_M_IA64) */
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(__ia64) || defined(__ia64__) || defined(_IA64) || defined(__IA64__)
|
|
Packit |
1fb8d4 |
#ifndef _M_IA64
|
|
Packit Service |
5a9772 |
#define _M_IA64 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Alpha (_M_ALPHA) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(__alpha) || defined(__alpha__)
|
|
Packit |
1fb8d4 |
#ifndef _M_ALPHA
|
|
Packit Service |
5a9772 |
#define _M_ALPHA 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* SPARC (_M_SPARC) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(__sparc) || defined(__sparc__)
|
|
Packit |
1fb8d4 |
#ifndef _M_SPARC
|
|
Packit Service |
5a9772 |
#define _M_SPARC 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/**
|
|
Packit |
1fb8d4 |
* Operating Systems:
|
|
Packit |
1fb8d4 |
* http://sourceforge.net/p/predef/wiki/OperatingSystems/
|
|
Packit |
1fb8d4 |
*/
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Windows (_WIN32) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* WinRT (_WINRT) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(WINAPI_FAMILY)
|
|
Packit |
1fb8d4 |
#if (WINAPI_FAMILY == WINAPI_FAMILY_APP)
|
|
Packit |
1fb8d4 |
#ifndef _WINRT
|
|
Packit Service |
5a9772 |
#define _WINRT 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(__cplusplus_winrt)
|
|
Packit |
1fb8d4 |
#ifndef _WINRT
|
|
Packit Service |
5a9772 |
#define _WINRT 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Linux (__linux__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(linux) || defined(__linux)
|
|
Packit |
1fb8d4 |
#ifndef __linux__
|
|
Packit Service |
5a9772 |
#define __linux__ 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* GNU/Linux (__gnu_linux__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Apple Platforms (iOS, Mac OS X) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if (defined(__APPLE__) && defined(__MACH__))
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#include <TargetConditionals.h>
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if (TARGET_OS_IPHONE == 1) || (TARGET_IPHONE_SIMULATOR == 1)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* iOS (__IOS__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#ifndef __IOS__
|
|
Packit Service |
5a9772 |
#define __IOS__ 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#elif (TARGET_OS_MAC == 1)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Mac OS X (__MACOSX__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#ifndef __MACOSX__
|
|
Packit Service |
5a9772 |
#define __MACOSX__ 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Android (__ANDROID__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Cygwin (__CYGWIN__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* FreeBSD (__FreeBSD__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* NetBSD (__NetBSD__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* OpenBSD (__OpenBSD__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* DragonFly (__DragonFly__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Solaris (__sun) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(sun)
|
|
Packit |
1fb8d4 |
#ifndef __sun
|
|
Packit Service |
5a9772 |
#define __sun 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* IRIX (__sgi) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(sgi)
|
|
Packit |
1fb8d4 |
#ifndef __sgi
|
|
Packit Service |
5a9772 |
#define __sgi 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* AIX (_AIX) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(__TOS_AIX__)
|
|
Packit |
1fb8d4 |
#ifndef _AIX
|
|
Packit Service |
5a9772 |
#define _AIX 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* HP-UX (__hpux) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(hpux) || defined(_hpux)
|
|
Packit |
1fb8d4 |
#ifndef __hpux
|
|
Packit Service |
5a9772 |
#define __hpux 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* BeOS (__BEOS__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* QNX (__QNXNTO__) */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/**
|
|
Packit |
1fb8d4 |
* Endianness:
|
|
Packit |
1fb8d4 |
* http://sourceforge.net/p/predef/wiki/Endianness/
|
|
Packit |
1fb8d4 |
*/
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if defined(__gnu_linux__)
|
|
Packit |
1fb8d4 |
#include <endian.h>
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \
|
|
Packit Service |
5a9772 |
defined(__DragonFly__) || defined(__APPLE__)
|
|
Packit |
1fb8d4 |
#include <sys/param.h>
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Big-Endian */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#ifdef __BYTE_ORDER
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if (__BYTE_ORDER == __BIG_ENDIAN)
|
|
Packit |
1fb8d4 |
#ifndef __BIG_ENDIAN__
|
|
Packit Service |
5a9772 |
#define __BIG_ENDIAN__ 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#else
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || defined(_MIPSEB) || \
|
|
Packit Service |
5a9772 |
defined(__MIPSEB) || defined(__MIPSEB__)
|
|
Packit |
1fb8d4 |
#ifndef __BIG_ENDIAN__
|
|
Packit Service |
5a9772 |
#define __BIG_ENDIAN__ 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#endif /* __BYTE_ORDER */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
/* Little-Endian */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#ifdef __BYTE_ORDER
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
|
Packit |
1fb8d4 |
#ifndef __LITTLE_ENDIAN__
|
|
Packit Service |
5a9772 |
#define __LITTLE_ENDIAN__ 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#else
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
#if defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || defined(_MIPSEL) || \
|
|
Packit Service |
5a9772 |
defined(__MIPSEL) || defined(__MIPSEL__)
|
|
Packit |
1fb8d4 |
#ifndef __LITTLE_ENDIAN__
|
|
Packit Service |
5a9772 |
#define __LITTLE_ENDIAN__ 1
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
#endif
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#endif /* __BYTE_ORDER */
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#endif /* WINPR_PLATFORM_H */
|