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