SkPreConfig.h revision 536079b2099e986853c82c874059a6bcd7602742
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
19e9fdfb545d8e6af89f5b91cd55e44dfefc21d923reed@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_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__) || \
3879c865a5c8f585880d48771194c8cd82ab8cda98george@mozilla.com          defined(__sun) || defined(__NetBSD__) || defined(__DragonFly__) || \
3979c865a5c8f585880d48771194c8cd82ab8cda98george@mozilla.com          defined(__GLIBC__) || defined(__GNU__)
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_BUILD_FOR_UNIX
41f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com    #elif TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
42f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com        #define SK_BUILD_FOR_IOS
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #else
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_BUILD_FOR_MAC
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
4958629291bc145edca8fb303e465c8537bed65314djsollen@google.com/* Even if the user only defined the NDK variant we still need to build
5058629291bc145edca8fb303e465c8537bed65314djsollen@google.com * the default Android code. Therefore, when attempting to include/exclude
51fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com * something from the NDK variant check first that we are building for
5258629291bc145edca8fb303e465c8537bed65314djsollen@google.com * Android then check the status of the NDK define.
5358629291bc145edca8fb303e465c8537bed65314djsollen@google.com */
5458629291bc145edca8fb303e465c8537bed65314djsollen@google.com#if defined(SK_BUILD_FOR_ANDROID_NDK) && !defined(SK_BUILD_FOR_ANDROID)
5558629291bc145edca8fb303e465c8537bed65314djsollen@google.com    #define SK_BUILD_FOR_ANDROID
5658629291bc145edca8fb303e465c8537bed65314djsollen@google.com#endif
5758629291bc145edca8fb303e465c8537bed65314djsollen@google.com
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if !defined(SK_DEBUG) && !defined(SK_RELEASE)
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #ifdef NDEBUG
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_RELEASE
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #else
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_DEBUG
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
6863debae4c1020fa1e0ccd92ef3cbfdc8735acf8ereed@android.com#ifdef SK_BUILD_FOR_WIN32
69333d6cb2448d0febcbeb7c8c7310c0ff2d1a6104tomhudson@google.com    #if !defined(SK_RESTRICT)
70333d6cb2448d0febcbeb7c8c7310c0ff2d1a6104tomhudson@google.com        #define SK_RESTRICT __restrict
71333d6cb2448d0febcbeb7c8c7310c0ff2d1a6104tomhudson@google.com    #endif
72363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com    #if !defined(SK_WARN_UNUSED_RESULT)
73363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com        #define SK_WARN_UNUSED_RESULT
74363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com    #endif
7563debae4c1020fa1e0ccd92ef3cbfdc8735acf8ereed@android.com    #include "sk_stdint.h"
7663debae4c1020fa1e0ccd92ef3cbfdc8735acf8ereed@android.com#endif
7763debae4c1020fa1e0ccd92ef3cbfdc8735acf8ereed@android.com
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
805c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com#if !defined(SK_RESTRICT)
815c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com    #define SK_RESTRICT __restrict__
825c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com#endif
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
84363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com#if !defined(SK_WARN_UNUSED_RESULT)
85363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com    #define SK_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
86363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com#endif
87363a4c22af71b8afedc00050ee5cc97fe4bd6f76bungeman@google.com
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
905c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com#if !defined(SK_SCALAR_IS_FLOAT) && !defined(SK_SCALAR_IS_FIXED)
915c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com    #define SK_SCALAR_IS_FLOAT
928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if !defined(SK_CPU_BENDIAN) && !defined(SK_CPU_LENDIAN)
978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #if defined (__ppc__) || defined(__ppc64__)
988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_CPU_BENDIAN
998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #else
1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_CPU_LENDIAN
1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////
1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1064a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com/**
107126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com *  SK_CPU_SSE_LEVEL
108126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com *
109ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com *  If defined, SK_CPU_SSE_LEVEL should be set to the highest supported level.
110ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com *  On non-intel CPU this should be undefined.
1114a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com */
112126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com
11300aad94f01a9078d26363db3116f8005d84440f2reed@google.com#define SK_CPU_SSE_LEVEL_SSE1     10
1148dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com#define SK_CPU_SSE_LEVEL_SSE2     20
1158dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com#define SK_CPU_SSE_LEVEL_SSE3     30
1168dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com#define SK_CPU_SSE_LEVEL_SSSE3    31
117ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com
118126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com// Are we in GCC?
1194a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com#ifndef SK_CPU_SSE_LEVEL
12000aad94f01a9078d26363db3116f8005d84440f2reed@google.com    #if defined(__SSE2__)
1218dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSE2
122ab69788571ed968dc0bcc934b9979195c6a28310reed@google.com    #elif defined(__SSE3__)
1238dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSE3
12400aad94f01a9078d26363db3116f8005d84440f2reed@google.com    #elif defined(__SSSE3__)
1258dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSSE3
1264a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com    #endif
1274a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com#endif
1284a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com
129126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com// Are we in VisualStudio?
130126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com#ifndef SK_CPU_SSE_LEVEL
13100aad94f01a9078d26363db3116f8005d84440f2reed@google.com    #if _M_IX86_FP == 1
13200aad94f01a9078d26363db3116f8005d84440f2reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSE1
13300aad94f01a9078d26363db3116f8005d84440f2reed@google.com    #elif _M_IX86_FP >= 2
13400aad94f01a9078d26363db3116f8005d84440f2reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSE2
13500aad94f01a9078d26363db3116f8005d84440f2reed@google.com    #endif
13600aad94f01a9078d26363db3116f8005d84440f2reed@google.com#endif
13700aad94f01a9078d26363db3116f8005d84440f2reed@google.com
13800aad94f01a9078d26363db3116f8005d84440f2reed@google.com// 64bit intel guarantees at least SSE2
13900aad94f01a9078d26363db3116f8005d84440f2reed@google.com#if defined(__x86_64__) || defined(_WIN64)
14000aad94f01a9078d26363db3116f8005d84440f2reed@google.com    #if !defined(SK_CPU_SSE_LEVEL) || (SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSE2)
14100aad94f01a9078d26363db3116f8005d84440f2reed@google.com        #undef SK_CPU_SSE_LEVEL
1428dbd5725c0a6681425c7a019c58c4cacdad2a238reed@google.com        #define SK_CPU_SSE_LEVEL    SK_CPU_SSE_LEVEL_SSE2
143126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com    #endif
144126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com#endif
145126b4362be3bb43ef8f7a10df710b40e8bba869dreed@google.com
1464a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com//////////////////////////////////////////////////////////////////////
1474a2cb30accbd5f9b0b60904a55e0bfecf706255areed@google.com
148e9fdfb545d8e6af89f5b91cd55e44dfefc21d923reed@google.com/**
149e9fdfb545d8e6af89f5b91cd55e44dfefc21d923reed@google.com *  THUMB is the only known config where we avoid small branches in
150e9fdfb545d8e6af89f5b91cd55e44dfefc21d923reed@google.com *  favor of more complex math.
151e9fdfb545d8e6af89f5b91cd55e44dfefc21d923reed@google.com */
152e9fdfb545d8e6af89f5b91cd55e44dfefc21d923reed@google.com#if !(defined(__arm__) && defined(__thumb__))
1538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SK_CPU_HAS_CONDITIONAL_INSTR
1548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1567ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org//////////////////////////////////////////////////////////////////////
1577ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org
1587ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org#if !defined(SKIA_IMPLEMENTATION)
1597ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org    #define SKIA_IMPLEMENTATION 0
1607ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org#endif
161c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com
162c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com#if defined(SKIA_DLL)
163c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com    #if defined(WIN32)
164c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com        #if SKIA_IMPLEMENTATION
165c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com            #define SK_API __declspec(dllexport)
166c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com        #else
167c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com            #define SK_API __declspec(dllimport)
168c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com        #endif
1697ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org    #else
170c0091114461339c7e6a78a0f1669cecad1e22146reed@google.com        #define SK_API __attribute__((visibility("default")))
1717ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org    #endif
1727ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org#else
1737ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org    #define SK_API
1747ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org#endif
1757ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org
176157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com//////////////////////////////////////////////////////////////////////
177157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com
178157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com/**
179157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com * Use SK_PURE_FUNC as an attribute to indicate that a function's
180157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com * return value only depends on the value of its parameters. This
181157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com * can help the compiler optimize out successive calls.
182157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com *
183157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com * Usage:
184157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com *      void  function(int params)  SK_PURE_FUNC;
185157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com */
186157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com#if defined(__GNUC__)
187157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com#  define  SK_PURE_FUNC  __attribute__((pure))
188157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com#else
189157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com#  define  SK_PURE_FUNC  /* nothing */
190157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com#endif
191157d94465a47a57e30e5cf49cd57dccd903e27e2digit@google.com
192536079b2099e986853c82c874059a6bcd7602742digit@google.com//////////////////////////////////////////////////////////////////////
193536079b2099e986853c82c874059a6bcd7602742digit@google.com
194536079b2099e986853c82c874059a6bcd7602742digit@google.com/**
195536079b2099e986853c82c874059a6bcd7602742digit@google.com * SK_HAS_ATTRIBUTE(<name>) should return true iff the compiler
196536079b2099e986853c82c874059a6bcd7602742digit@google.com * supports __attribute__((<name>)). Mostly important because
197536079b2099e986853c82c874059a6bcd7602742digit@google.com * Clang doesn't support all of GCC attributes.
198536079b2099e986853c82c874059a6bcd7602742digit@google.com */
199536079b2099e986853c82c874059a6bcd7602742digit@google.com#if defined(__has_attribute)
200536079b2099e986853c82c874059a6bcd7602742digit@google.com#   define SK_HAS_ATTRIBUTE(x) __has_attribute(x)
201536079b2099e986853c82c874059a6bcd7602742digit@google.com#elif defined(__GNUC__)
202536079b2099e986853c82c874059a6bcd7602742digit@google.com#   define SK_HAS_ATTRIBUTE(x) 1
203536079b2099e986853c82c874059a6bcd7602742digit@google.com#else
204536079b2099e986853c82c874059a6bcd7602742digit@google.com#   define SK_HAS_ATTRIBUTE(x) 0
205536079b2099e986853c82c874059a6bcd7602742digit@google.com#endif
206536079b2099e986853c82c874059a6bcd7602742digit@google.com
207536079b2099e986853c82c874059a6bcd7602742digit@google.com/**
208536079b2099e986853c82c874059a6bcd7602742digit@google.com * SK_ATTRIBUTE_OPTIMIZE_O1 can be used as a function attribute
209536079b2099e986853c82c874059a6bcd7602742digit@google.com * to specify individual optimization level of -O1, if the compiler
210536079b2099e986853c82c874059a6bcd7602742digit@google.com * supports it.
211536079b2099e986853c82c874059a6bcd7602742digit@google.com *
212536079b2099e986853c82c874059a6bcd7602742digit@google.com * NOTE: Clang/ARM (r161757) does not support the 'optimize' attribute.
213536079b2099e986853c82c874059a6bcd7602742digit@google.com */
214536079b2099e986853c82c874059a6bcd7602742digit@google.com#if SK_HAS_ATTRIBUTE(optimize)
215536079b2099e986853c82c874059a6bcd7602742digit@google.com#   define SK_ATTRIBUTE_OPTIMIZE_O1 __attribute__((optimize("O1")))
216536079b2099e986853c82c874059a6bcd7602742digit@google.com#else
217536079b2099e986853c82c874059a6bcd7602742digit@google.com#   define SK_ATTRIBUTE_OPTIMIZE_O1 /* nothing */
2188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
220536079b2099e986853c82c874059a6bcd7602742digit@google.com#endif
221