JavaScriptCore:
[WebKit-https.git] / JavaScriptCore / wtf / Platform.h
1 /* -*- mode: c++; c-basic-offset: 4 -*- */
2 /*
3  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
25  */
26
27 #ifndef WTF_Platform_h
28 #define WTF_Platform_h
29
30 /* PLATFORM handles OS, operating environment, graphics API, and CPU */
31 #define PLATFORM(WTF_FEATURE) (defined( WTF_PLATFORM_##WTF_FEATURE ) && WTF_PLATFORM_##WTF_FEATURE)
32 #define COMPILER(WTF_FEATURE) (defined( WTF_COMPILER_##WTF_FEATURE ) && WTF_COMPILER_##WTF_FEATURE)
33 #define HAVE(WTF_FEATURE) (defined( HAVE_##WTF_FEATURE ) && HAVE_##WTF_FEATURE)
34 #define USE(WTF_FEATURE) (defined( WTF_USE_##WTF_FEATURE ) && WTF_USE_##WTF_FEATURE)
35 #define ENABLE(WTF_FEATURE) (defined( ENABLE_##WTF_FEATURE ) && ENABLE_##WTF_FEATURE)
36
37 /* Operating systems - low-level dependencies */
38
39 /* PLATFORM(DARWIN) */
40 /* Operating system level dependencies for Mac OS X / Darwin that should */
41 /* be used regardless of operating environment */
42 #ifdef __APPLE__
43 #define WTF_PLATFORM_DARWIN 1
44 #endif
45
46 /* PLATFORM(WIN_OS) */
47 /* Operating system level dependencies for Windows that should be used */
48 /* regardless of operating environment */
49 #if defined(WIN32) || defined(_WIN32)
50 #define WTF_PLATFORM_WIN_OS 1
51 #endif
52
53 /* PLATFORM(UNIX) */
54 /* Operating system level dependencies for Unix-like systems that */
55 /* should be used regardless of operating environment */
56 /* (includes PLATFORM(DARWIN)) */
57 #if   defined(__APPLE__)   \
58    || defined(unix)        \
59    || defined(__unix)      \
60    || defined(__unix__)    \
61    || defined (__NetBSD__) \
62    || defined(_AIX)
63 #define WTF_PLATFORM_UNIX 1
64 #endif
65
66 /* Operating environments */
67
68 /* PLATFORM(QT) */
69 /* PLATFORM(GDK) */
70 /* PLATFORM(MAC) */
71 /* PLATFORM(WIN) */
72 #if defined(BUILDING_QT__)
73 #define WTF_PLATFORM_QT 1
74
75 /* PLATFORM(KDE) */
76 #if defined(BUILDING_KDE__)
77 #define WTF_PLATFORM_KDE 1
78 #endif
79
80 #elif defined(BUILDING_GDK__)
81 #define WTF_PLATFORM_GDK 1
82 #elif PLATFORM(DARWIN)
83 #define WTF_PLATFORM_MAC 1
84 #elif PLATFORM(WIN_OS)
85 #define WTF_PLATFORM_WIN 1
86 #endif
87
88 /* Graphics engines */
89
90 /* PLATFORM(CG) */
91 /* PLATFORM(CAIRO) */
92 #if PLATFORM(MAC)
93 #define WTF_PLATFORM_CG 1
94 #define WTF_PLATFORM_CI 1
95 #elif !PLATFORM(QT)
96 #define WTF_PLATFORM_CAIRO 1
97 #endif
98
99
100 #ifdef __S60__
101 // we are cross-compiling, it is not really windows
102 #undef WTF_PLATFORM_WIN_OS
103 #undef WTF_PLATFORM_WIN
104 #undef WTF_PLATFORM_CAIRO
105 #define WTF_PLATFORM_S60 1
106 #define WTF_PLATFORM_SYMBIAN 1
107 #endif
108
109 /* CPU */
110
111 /* PLATFORM(PPC) */
112 #if   defined(__ppc__)     \
113    || defined(__PPC__)     \
114    || defined(__powerpc__) \
115    || defined(__powerpc)   \
116    || defined(__POWERPC__) \
117    || defined(_M_PPC)      \
118    || defined(__PPC)
119 #define WTF_PLATFORM_PPC 1
120 #define WTF_PLATFORM_BIG_ENDIAN 1
121 #endif
122
123 /* PLATFORM(PPC64) */
124 #if   defined(__ppc64__) \
125    || defined(__PPC64__)
126 #define WTF_PLATFORM_PPC64 1
127 #define WTF_PLATFORM_BIG_ENDIAN 1
128 #endif
129
130 #if defined(arm)
131 #define WTF_PLATFORM_ARM 1
132 #define WTF_PLATFORM_MIDDLE_ENDIAN 1
133 #endif
134
135 /* PLATFORM(X86) */
136 #if   defined(__i386__) \
137    || defined(i386)     \
138    || defined(_M_IX86)  \
139    || defined(_X86_)    \
140    || defined(__THW_INTEL)
141 #define WTF_PLATFORM_X86 1
142 #endif
143
144 /* PLATFORM(X86_64) */
145 #if   defined(__x86_64__) \
146    || defined(__ia64__)
147 #define WTF_PLATFORM_X86_64 1
148 #endif
149
150 /* Compiler */
151
152 /* COMPILER(MSVC) */
153 #if defined(_MSC_VER)
154 #define WTF_COMPILER_MSVC 1
155 #endif
156
157 /* COMPILER(GCC) */
158 #if defined(__GNUC__)
159 #define WTF_COMPILER_GCC 1
160 #endif
161
162 /* COMPILER(BORLAND) */
163 /* not really fully supported - is this relevant any more? */
164 #if defined(__BORLANDC__)
165 #define WTF_COMPILER_BORLAND 1
166 #endif
167
168 /* COMPILER(CYGWIN) */
169 /* not really fully supported - is this relevant any more? */
170 #if defined(__CYGWIN__)
171 #define WTF_COMPILER_CYGWIN 1
172 #endif
173
174 /* multiple threads only supported on Mac for now */
175 #if PLATFORM(MAC) || PLATFORM(WIN)
176 #define WTF_USE_MULTIPLE_THREADS 1
177 #endif
178
179 /* for Unicode, KDE uses Qt, everything else uses ICU */
180 #if PLATFORM(KDE) || PLATFORM(QT)
181 #define WTF_USE_QT4_UNICODE 1
182 #elif PLATFORM(SYMBIAN)
183 #define WTF_USE_SYMBIAN_UNICODE 1
184 #else
185 #define WTF_USE_ICU_UNICODE 1
186 #endif
187
188 #if PLATFORM(MAC)
189 #define WTF_PLATFORM_CF 1
190 #endif
191
192 #if PLATFORM(WIN)
193 #define WTF_USE_WININET 1
194 #endif
195
196 #if PLATFORM(GDK)
197 #define WTF_USE_CURL 1
198 #endif
199
200 #if PLATFORM(QT)
201 #define USE_SYSTEM_MALLOC 1
202 #endif
203
204 #if !defined(ENABLE_ICONDATABASE)
205 #define ENABLE_ICONDATABASE 1
206 #endif
207
208 #if !defined(FTPDIR)
209 #define ENABLE_FTPDIR 1
210 #endif
211
212 #endif /* WTF_Platform_h */