SkPreConfig.h revision 8dbd5725c0a6681425c7a019c58c4cacdad2a238
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project
48a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
78a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com */
88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
9ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkPreConfig_DEFINED
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkPreConfig_DEFINED
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
13f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com#ifdef WEBKIT_VERSION_MIN_REQUIRED
14f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com    #include "config.h"
15f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com#endif
16f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1958629291bc145edca8fb303e465c8537bed65314djsollen@google.com#if !defined(SK_BUILD_FOR_ANDROID) && !defined(SK_BUILD_FOR_ANDROID_NDK) && !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_PALM) && !defined(SK_BUILD_FOR_WINCE) && !defined(SK_BUILD_FOR_WIN32) && !defined(SK_BUILD_FOR_SYMBIAN) && !defined(SK_BUILD_FOR_UNIX) && !defined(SK_BUILD_FOR_MAC) && !defined(SK_BUILD_FOR_SDL) && !defined(SK_BUILD_FOR_BREW)
20f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com
21f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com    #ifdef __APPLE__
22f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com        #include "TargetConditionals.h"
23f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com    #endif
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #if defined(PALMOS_SDK_VERSION)
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_BUILD_FOR_PALM
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #elif defined(UNDER_CE)
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_BUILD_FOR_WINCE
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #elif defined(WIN32)
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_BUILD_FOR_WIN32
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #elif defined(__SYMBIAN32__)
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_BUILD_FOR_WIN32
3360abb078e5597c9c6ceaba1ef495c4916ff4df0ddjsollen@google.com    #elif defined(ANDROID_NDK)
3460abb078e5597c9c6ceaba1ef495c4916ff4df0ddjsollen@google.com        #define SK_BUILD_FOR_ANDROID_NDK
3560abb078e5597c9c6ceaba1ef495c4916ff4df0ddjsollen@google.com    #elif defined(ANDROID)
3660abb078e5597c9c6ceaba1ef495c4916ff4df0ddjsollen@google.com        #define SK_BUILD_FOR_ANDROID
37ea6805d2224eaccfcd95f4a019cfcc57ac89afcereed@google.com    #elif defined(linux) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
383138d36f9843e62c18a0c57c553a830d74bae1a2reed@google.com          defined(__sun) || defined(__NetBSD__) || defined(__DragonFly__)
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_BUILD_FOR_UNIX
40f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com    #elif TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
41f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com        #define SK_BUILD_FOR_IOS
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #else
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_BUILD_FOR_MAC
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
4858629291bc145edca8fb303e465c8537bed65314djsollen@google.com/* Even if the user only defined the NDK variant we still need to build
4958629291bc145edca8fb303e465c8537bed65314djsollen@google.com * the default Android code. Therefore, when attempting to include/exclude
5058629291bc145edca8fb303e465c8537bed65314djsollen@google.com * something from the NDK variant check first that we are building for
5158629291bc145edca8fb303e465c8537bed65314djsollen@google.com * Android then check the status of the NDK define.
5258629291bc145edca8fb303e465c8537bed65314djsollen@google.com */
5358629291bc145edca8fb303e465c8537bed65314djsollen@google.com#if defined(SK_BUILD_FOR_ANDROID_NDK) && !defined(SK_BUILD_FOR_ANDROID)
5458629291bc145edca8fb303e465c8537bed65314djsollen@google.com    #define SK_BUILD_FOR_ANDROID
5558629291bc145edca8fb303e465c8537bed65314djsollen@google.com#endif
5658629291bc145edca8fb303e465c8537bed65314djsollen@google.com
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if !defined(SK_DEBUG) && !defined(SK_RELEASE)
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #ifdef NDEBUG
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_RELEASE
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #else
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_DEBUG
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
6763debae4c1020fa1e0ccd92ef3cbfdc8735acf8ereed@android.com#ifdef SK_BUILD_FOR_WIN32
68333d6cb2448d0febcbeb7c8c7310c0ff2d1a6104tomhudson@google.com    #if !defined(SK_RESTRICT)
69333d6cb2448d0febcbeb7c8c7310c0ff2d1a6104tomhudson@google.com        #define SK_RESTRICT __restrict
70333d6cb2448d0febcbeb7c8c7310c0ff2d1a6104tomhudson@google.com    #endif
71363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com    #if !defined(SK_WARN_UNUSED_RESULT)
72363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com        #define SK_WARN_UNUSED_RESULT
73363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com    #endif
7463debae4c1020fa1e0ccd92ef3cbfdc8735acf8ereed@android.com    #include "sk_stdint.h"
7563debae4c1020fa1e0ccd92ef3cbfdc8735acf8ereed@android.com#endif
7663debae4c1020fa1e0ccd92ef3cbfdc8735acf8ereed@android.com
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
795c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com#if !defined(SK_RESTRICT)
805c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com    #define SK_RESTRICT __restrict__
815c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com#endif
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
83363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com#if !defined(SK_WARN_UNUSED_RESULT)
84363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com    #define SK_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
85363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com#endif
86363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com
878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
895c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com#if !defined(SK_SCALAR_IS_FLOAT) && !defined(SK_SCALAR_IS_FIXED)
905c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com    #define SK_SCALAR_IS_FLOAT
918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if !defined(SK_CPU_BENDIAN) && !defined(SK_CPU_LENDIAN)
968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #if defined (__ppc__) || defined(__ppc64__)
978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_CPU_BENDIAN
988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #else
998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_CPU_LENDIAN
1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1054a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com/**
106126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com *  SK_CPU_SSE_LEVEL
107126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com *
108ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com *  If defined, SK_CPU_SSE_LEVEL should be set to the highest supported level.
109ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com *  On non-intel CPU this should be undefined.
1104a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com */
111126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com
1128dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com#define SK_CPU_SSE_LEVEL_SSE2     20
1138dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com#define SK_CPU_SSE_LEVEL_SSE3     30
1148dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com#define SK_CPU_SSE_LEVEL_SSSE3    31
115ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com
116126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com// Are we in GCC?
1174a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com#ifndef SK_CPU_SSE_LEVEL
118ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com    #if defined(__SSSE3__)
1198dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSE2
120ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com    #elif defined(__SSE3__)
1218dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSE3
1224a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com    #elif defined(__SSE2__)
1238dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSSE3
1244a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com    #endif
1254a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com#endif
1264a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com
127126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com// Are we in VisualStudio?
128126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com#ifndef SK_CPU_SSE_LEVEL
129126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com    #if _M_IX86_FP == 2
1308dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSE2
131126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com    #endif
132126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com#endif
133126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com
1344a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com//////////////////////////////////////////////////////////////////////
1354a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com
136ec10d21eb9a17639688188b0defce6d757331eb4reed@android.com#if (defined(__arm__) && !defined(__thumb__)) || defined(SK_BUILD_FOR_WINCE) || (defined(SK_BUILD_FOR_SYMBIAN) && !defined(__MARM_THUMB__))
1378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    /* e.g. the ARM instructions have conditional execution, making tiny branches cheap */
1388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SK_CPU_HAS_CONDITIONAL_INSTR
1398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1417ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org//////////////////////////////////////////////////////////////////////
1427ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org
1437ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org#if !defined(SKIA_IMPLEMENTATION)
1447ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org    #define SKIA_IMPLEMENTATION 0
1457ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org#endif
146c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com
147c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com#if defined(SKIA_DLL)
148c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com    #if defined(WIN32)
149c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com        #if SKIA_IMPLEMENTATION
150c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com            #define SK_API __declspec(dllexport)
151c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com        #else
152c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com            #define SK_API __declspec(dllimport)
153c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com        #endif
1547ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org    #else
155c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com        #define SK_API __attribute__((visibility("default")))
1567ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org    #endif
1577ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org#else
1587ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org    #define SK_API
1597ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org#endif
1607ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org
1618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
163