1*3ac0a46fSAndroid Build Coastguard Worker /* 2*3ac0a46fSAndroid Build Coastguard Worker * Copyright 2006 The PDFium Authors 3*3ac0a46fSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 4*3ac0a46fSAndroid Build Coastguard Worker * found in the LICENSE file. 5*3ac0a46fSAndroid Build Coastguard Worker */ 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef SKIA_CONFIG_SKUSERCONFIG_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define SKIA_CONFIG_SKUSERCONFIG_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker /* SkTypes.h, the root of the public header files, does the following trick: 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker #include "SkPreConfig.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "SkUserConfig.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "SkPostConfig.h" 15*3ac0a46fSAndroid Build Coastguard Worker 16*3ac0a46fSAndroid Build Coastguard Worker SkPreConfig.h runs first, and it is responsible for initializing certain 17*3ac0a46fSAndroid Build Coastguard Worker skia defines. 18*3ac0a46fSAndroid Build Coastguard Worker 19*3ac0a46fSAndroid Build Coastguard Worker SkPostConfig.h runs last, and its job is to just check that the final 20*3ac0a46fSAndroid Build Coastguard Worker defines are consistent (i.e. that we don't have mutually conflicting 21*3ac0a46fSAndroid Build Coastguard Worker defines). 22*3ac0a46fSAndroid Build Coastguard Worker 23*3ac0a46fSAndroid Build Coastguard Worker SkUserConfig.h (this file) runs in the middle. It gets to change or augment 24*3ac0a46fSAndroid Build Coastguard Worker the list of flags initially set in preconfig, and then postconfig checks 25*3ac0a46fSAndroid Build Coastguard Worker that everything still makes sense. 26*3ac0a46fSAndroid Build Coastguard Worker 27*3ac0a46fSAndroid Build Coastguard Worker Below are optional defines that add, subtract, or change default behavior 28*3ac0a46fSAndroid Build Coastguard Worker in Skia. Your port can locally edit this file to enable/disable flags as 29*3ac0a46fSAndroid Build Coastguard Worker you choose, or these can be delared on your command line (i.e. -Dfoo). 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker By default, this include file will always default to having all of the flags 32*3ac0a46fSAndroid Build Coastguard Worker commented out, so including it will have no effect. 33*3ac0a46fSAndroid Build Coastguard Worker */ 34*3ac0a46fSAndroid Build Coastguard Worker 35*3ac0a46fSAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////// 36*3ac0a46fSAndroid Build Coastguard Worker 37*3ac0a46fSAndroid Build Coastguard Worker /* Skia has lots of debug-only code. Often this is just null checks or other 38*3ac0a46fSAndroid Build Coastguard Worker parameter checking, but sometimes it can be quite intrusive (e.g. check that 39*3ac0a46fSAndroid Build Coastguard Worker each 32bit pixel is in premultiplied form). This code can be very useful 40*3ac0a46fSAndroid Build Coastguard Worker during development, but will slow things down in a shipping product. 41*3ac0a46fSAndroid Build Coastguard Worker 42*3ac0a46fSAndroid Build Coastguard Worker By default, these mutually exclusive flags are defined in SkPreConfig.h, 43*3ac0a46fSAndroid Build Coastguard Worker based on the presence or absence of NDEBUG, but that decision can be changed 44*3ac0a46fSAndroid Build Coastguard Worker here. 45*3ac0a46fSAndroid Build Coastguard Worker */ 46*3ac0a46fSAndroid Build Coastguard Worker // #define SK_DEBUG 47*3ac0a46fSAndroid Build Coastguard Worker // #define SK_RELEASE 48*3ac0a46fSAndroid Build Coastguard Worker 49*3ac0a46fSAndroid Build Coastguard Worker /* Skia has certain debug-only code that is extremely intensive even for debug 50*3ac0a46fSAndroid Build Coastguard Worker builds. This code is useful for diagnosing specific issues, but is not 51*3ac0a46fSAndroid Build Coastguard Worker generally applicable, therefore it must be explicitly enabled to avoid 52*3ac0a46fSAndroid Build Coastguard Worker the performance impact. By default these flags are undefined, but can be 53*3ac0a46fSAndroid Build Coastguard Worker enabled by uncommenting them below. 54*3ac0a46fSAndroid Build Coastguard Worker */ 55*3ac0a46fSAndroid Build Coastguard Worker // #define SK_DEBUG_GLYPH_CACHE 56*3ac0a46fSAndroid Build Coastguard Worker // #define SK_DEBUG_PATH 57*3ac0a46fSAndroid Build Coastguard Worker 58*3ac0a46fSAndroid Build Coastguard Worker /* preconfig will have attempted to determine the endianness of the system, 59*3ac0a46fSAndroid Build Coastguard Worker but you can change these mutually exclusive flags here. 60*3ac0a46fSAndroid Build Coastguard Worker */ 61*3ac0a46fSAndroid Build Coastguard Worker // #define SK_CPU_BENDIAN 62*3ac0a46fSAndroid Build Coastguard Worker // #define SK_CPU_LENDIAN 63*3ac0a46fSAndroid Build Coastguard Worker 64*3ac0a46fSAndroid Build Coastguard Worker /* Most compilers use the same bit endianness for bit flags in a byte as the 65*3ac0a46fSAndroid Build Coastguard Worker system byte endianness, and this is the default. If for some reason this 66*3ac0a46fSAndroid Build Coastguard Worker needs to be overridden, specify which of the mutually exclusive flags to 67*3ac0a46fSAndroid Build Coastguard Worker use. For example, some atom processors in certain configurations have big 68*3ac0a46fSAndroid Build Coastguard Worker endian byte order but little endian bit orders. 69*3ac0a46fSAndroid Build Coastguard Worker */ 70*3ac0a46fSAndroid Build Coastguard Worker // #define SK_UINT8_BITFIELD_BENDIAN 71*3ac0a46fSAndroid Build Coastguard Worker // #define SK_UINT8_BITFIELD_LENDIAN 72*3ac0a46fSAndroid Build Coastguard Worker 73*3ac0a46fSAndroid Build Coastguard Worker 74*3ac0a46fSAndroid Build Coastguard Worker /* To write debug messages to a console, skia will call SkDebugf(...) following 75*3ac0a46fSAndroid Build Coastguard Worker printf conventions (e.g. const char* format, ...). If you want to redirect 76*3ac0a46fSAndroid Build Coastguard Worker this to something other than printf, define yours here 77*3ac0a46fSAndroid Build Coastguard Worker */ 78*3ac0a46fSAndroid Build Coastguard Worker // #define SkDebugf(...) MyFunction(__VA_ARGS__) 79*3ac0a46fSAndroid Build Coastguard Worker 80*3ac0a46fSAndroid Build Coastguard Worker /* 81*3ac0a46fSAndroid Build Coastguard Worker * To specify a different default font cache limit, define this. If this is 82*3ac0a46fSAndroid Build Coastguard Worker * undefined, skia will use a built-in value. 83*3ac0a46fSAndroid Build Coastguard Worker */ 84*3ac0a46fSAndroid Build Coastguard Worker // #define SK_DEFAULT_FONT_CACHE_LIMIT (1024 * 1024) 85*3ac0a46fSAndroid Build Coastguard Worker 86*3ac0a46fSAndroid Build Coastguard Worker /* 87*3ac0a46fSAndroid Build Coastguard Worker * To specify the default size of the image cache, undefine this and set it to 88*3ac0a46fSAndroid Build Coastguard Worker * the desired value (in bytes). SkGraphics.h as a runtime API to set this 89*3ac0a46fSAndroid Build Coastguard Worker * value as well. If this is undefined, a built-in value will be used. 90*3ac0a46fSAndroid Build Coastguard Worker */ 91*3ac0a46fSAndroid Build Coastguard Worker // #define SK_DEFAULT_IMAGE_CACHE_LIMIT (1024 * 1024) 92*3ac0a46fSAndroid Build Coastguard Worker 93*3ac0a46fSAndroid Build Coastguard Worker /* Define this to set the upper limit for text to support LCD. Values that 94*3ac0a46fSAndroid Build Coastguard Worker are very large increase the cost in the font cache and draw slower, without 95*3ac0a46fSAndroid Build Coastguard Worker improving readability. If this is undefined, Skia will use its default 96*3ac0a46fSAndroid Build Coastguard Worker value (e.g. 48) 97*3ac0a46fSAndroid Build Coastguard Worker */ 98*3ac0a46fSAndroid Build Coastguard Worker // #define SK_MAX_SIZE_FOR_LCDTEXT 48 99*3ac0a46fSAndroid Build Coastguard Worker 100*3ac0a46fSAndroid Build Coastguard Worker /* Change the ordering to work in X windows. 101*3ac0a46fSAndroid Build Coastguard Worker */ 102*3ac0a46fSAndroid Build Coastguard Worker // #ifdef SK_SAMPLES_FOR_X 103*3ac0a46fSAndroid Build Coastguard Worker // #define SK_R32_SHIFT 16 104*3ac0a46fSAndroid Build Coastguard Worker // #define SK_G32_SHIFT 8 105*3ac0a46fSAndroid Build Coastguard Worker // #define SK_B32_SHIFT 0 106*3ac0a46fSAndroid Build Coastguard Worker // #define SK_A32_SHIFT 24 107*3ac0a46fSAndroid Build Coastguard Worker // #endif 108*3ac0a46fSAndroid Build Coastguard Worker 109*3ac0a46fSAndroid Build Coastguard Worker 110*3ac0a46fSAndroid Build Coastguard Worker /* Determines whether to build code that supports the Ganesh GPU backend. Some classes 111*3ac0a46fSAndroid Build Coastguard Worker that are not GPU-specific, such as SkShader subclasses, have optional code 112*3ac0a46fSAndroid Build Coastguard Worker that is used to interact with this GPU backend. If you'd like to 113*3ac0a46fSAndroid Build Coastguard Worker include this code, include -DSK_GANESH in your cflags or uncomment below. 114*3ac0a46fSAndroid Build Coastguard Worker Defaults to not set (No Ganesh GPU backend). 115*3ac0a46fSAndroid Build Coastguard Worker This define affects the ABI of Skia, so make sure it matches the client which uses 116*3ac0a46fSAndroid Build Coastguard Worker the compiled version of Skia. 117*3ac0a46fSAndroid Build Coastguard Worker */ 118*3ac0a46fSAndroid Build Coastguard Worker // #define SK_GANESH 119*3ac0a46fSAndroid Build Coastguard Worker 120*3ac0a46fSAndroid Build Coastguard Worker /* Skia makes use of histogram logging macros to trace the frequency of 121*3ac0a46fSAndroid Build Coastguard Worker * events. By default, Skia provides no-op versions of these macros. 122*3ac0a46fSAndroid Build Coastguard Worker * Skia consumers can provide their own definitions of these macros to 123*3ac0a46fSAndroid Build Coastguard Worker * integrate with their histogram collection backend. 124*3ac0a46fSAndroid Build Coastguard Worker */ 125*3ac0a46fSAndroid Build Coastguard Worker // #define SK_HISTOGRAM_BOOLEAN(name, value) 126*3ac0a46fSAndroid Build Coastguard Worker // #define SK_HISTOGRAM_ENUMERATION(name, value, boundary_value) 127*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/base/component_export.h" 128*3ac0a46fSAndroid Build Coastguard Worker 129*3ac0a46fSAndroid Build Coastguard Worker // ===== Begin Chrome-specific definitions ===== 130*3ac0a46fSAndroid Build Coastguard Worker 131*3ac0a46fSAndroid Build Coastguard Worker #define SK_MSCALAR_IS_FLOAT 132*3ac0a46fSAndroid Build Coastguard Worker #undef SK_MSCALAR_IS_DOUBLE 133*3ac0a46fSAndroid Build Coastguard Worker 134*3ac0a46fSAndroid Build Coastguard Worker #define GR_MAX_OFFSCREEN_AA_DIM 512 135*3ac0a46fSAndroid Build Coastguard Worker 136*3ac0a46fSAndroid Build Coastguard Worker // Handle exporting using base/component_export.h 137*3ac0a46fSAndroid Build Coastguard Worker #define SK_API COMPONENT_EXPORT(SKIA) 138*3ac0a46fSAndroid Build Coastguard Worker 139*3ac0a46fSAndroid Build Coastguard Worker // Log the file and line number for assertions. 140*3ac0a46fSAndroid Build Coastguard Worker #if defined(SK_BUILD_FOR_WIN) && !defined(__clang__) 141*3ac0a46fSAndroid Build Coastguard Worker // String formatting with this toolchain not supported. 142*3ac0a46fSAndroid Build Coastguard Worker #define SkDebugf(...) SkDebugf_FileLineOnly(__FILE__, __LINE__) 143*3ac0a46fSAndroid Build Coastguard Worker SK_API void SkDebugf_FileLineOnly(const char* file, int line); 144*3ac0a46fSAndroid Build Coastguard Worker #else 145*3ac0a46fSAndroid Build Coastguard Worker #define SkDebugf(...) SkDebugf_FileLine(__FILE__, __LINE__, __VA_ARGS__) 146*3ac0a46fSAndroid Build Coastguard Worker SK_API void SkDebugf_FileLine(const char* file, 147*3ac0a46fSAndroid Build Coastguard Worker int line, 148*3ac0a46fSAndroid Build Coastguard Worker const char* format, 149*3ac0a46fSAndroid Build Coastguard Worker ...); 150*3ac0a46fSAndroid Build Coastguard Worker #endif 151*3ac0a46fSAndroid Build Coastguard Worker 152*3ac0a46fSAndroid Build Coastguard Worker #if !defined(ANDROID) // On Android, we use the skia default settings. 153*3ac0a46fSAndroid Build Coastguard Worker #define SK_A32_SHIFT 24 154*3ac0a46fSAndroid Build Coastguard Worker #define SK_R32_SHIFT 16 155*3ac0a46fSAndroid Build Coastguard Worker #define SK_G32_SHIFT 8 156*3ac0a46fSAndroid Build Coastguard Worker #define SK_B32_SHIFT 0 157*3ac0a46fSAndroid Build Coastguard Worker #endif 158*3ac0a46fSAndroid Build Coastguard Worker 159*3ac0a46fSAndroid Build Coastguard Worker #if defined(SK_BUILD_FOR_WIN32) 160*3ac0a46fSAndroid Build Coastguard Worker 161*3ac0a46fSAndroid Build Coastguard Worker #define SK_BUILD_FOR_WIN 162*3ac0a46fSAndroid Build Coastguard Worker 163*3ac0a46fSAndroid Build Coastguard Worker // Skia uses this deprecated bzero function to fill zeros into a string. 164*3ac0a46fSAndroid Build Coastguard Worker #define bzero(str, len) memset(str, 0, len) 165*3ac0a46fSAndroid Build Coastguard Worker 166*3ac0a46fSAndroid Build Coastguard Worker #elif defined(SK_BUILD_FOR_MAC) 167*3ac0a46fSAndroid Build Coastguard Worker 168*3ac0a46fSAndroid Build Coastguard Worker #define SK_CPU_LENDIAN 169*3ac0a46fSAndroid Build Coastguard Worker #undef SK_CPU_BENDIAN 170*3ac0a46fSAndroid Build Coastguard Worker 171*3ac0a46fSAndroid Build Coastguard Worker #elif defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_ANDROID) 172*3ac0a46fSAndroid Build Coastguard Worker 173*3ac0a46fSAndroid Build Coastguard Worker // Prefer FreeType's emboldening algorithm to Skia's 174*3ac0a46fSAndroid Build Coastguard Worker // TODO: skia used to just use hairline, but has improved since then, so 175*3ac0a46fSAndroid Build Coastguard Worker // we should revisit this choice... 176*3ac0a46fSAndroid Build Coastguard Worker #define SK_USE_FREETYPE_EMBOLDEN 177*3ac0a46fSAndroid Build Coastguard Worker 178*3ac0a46fSAndroid Build Coastguard Worker #if defined(SK_BUILD_FOR_UNIX) && defined(SK_CPU_BENDIAN) 179*3ac0a46fSAndroid Build Coastguard Worker // Above we set the order for ARGB channels in registers. I suspect that, on 180*3ac0a46fSAndroid Build Coastguard Worker // big endian machines, you can keep this the same and everything will work. 181*3ac0a46fSAndroid Build Coastguard Worker // The in-memory order will be different, of course, but as long as everything 182*3ac0a46fSAndroid Build Coastguard Worker // is reading memory as words rather than bytes, it will all work. However, if 183*3ac0a46fSAndroid Build Coastguard Worker // you find that colours are messed up I thought that I would leave a helpful 184*3ac0a46fSAndroid Build Coastguard Worker // locator for you. Also see the comments in 185*3ac0a46fSAndroid Build Coastguard Worker // base/gfx/bitmap_platform_device_linux.h 186*3ac0a46fSAndroid Build Coastguard Worker #error Read the comment at this location 187*3ac0a46fSAndroid Build Coastguard Worker #endif 188*3ac0a46fSAndroid Build Coastguard Worker 189*3ac0a46fSAndroid Build Coastguard Worker #endif 190*3ac0a46fSAndroid Build Coastguard Worker 191*3ac0a46fSAndroid Build Coastguard Worker // These flags are no longer defined in Skia, but we have them (temporarily) 192*3ac0a46fSAndroid Build Coastguard Worker // until we update our call-sites (typically these are for API changes). 193*3ac0a46fSAndroid Build Coastguard Worker // 194*3ac0a46fSAndroid Build Coastguard Worker // Remove these as we update our sites. 195*3ac0a46fSAndroid Build Coastguard Worker // 196*3ac0a46fSAndroid Build Coastguard Worker #ifndef SK_SUPPORT_LEGACY_GETTOPDEVICE 197*3ac0a46fSAndroid Build Coastguard Worker #define SK_SUPPORT_LEGACY_GETTOPDEVICE 198*3ac0a46fSAndroid Build Coastguard Worker #endif 199*3ac0a46fSAndroid Build Coastguard Worker 200*3ac0a46fSAndroid Build Coastguard Worker #ifndef SK_SUPPORT_EXOTIC_CLIPOPS 201*3ac0a46fSAndroid Build Coastguard Worker #define SK_SUPPORT_EXOTIC_CLIPOPS 202*3ac0a46fSAndroid Build Coastguard Worker #endif 203*3ac0a46fSAndroid Build Coastguard Worker 204*3ac0a46fSAndroid Build Coastguard Worker #ifndef SK_SUPPORT_LEGACY_GETDEVICE 205*3ac0a46fSAndroid Build Coastguard Worker #define SK_SUPPORT_LEGACY_GETDEVICE 206*3ac0a46fSAndroid Build Coastguard Worker #endif 207*3ac0a46fSAndroid Build Coastguard Worker 208*3ac0a46fSAndroid Build Coastguard Worker // Workaround for poor anisotropic mipmap quality, 209*3ac0a46fSAndroid Build Coastguard Worker // pending Skia ripmap support. 210*3ac0a46fSAndroid Build Coastguard Worker // (https://bugs.chromium.org/p/skia/issues/detail?id=4863) 211*3ac0a46fSAndroid Build Coastguard Worker #ifndef SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAP_SCALE 212*3ac0a46fSAndroid Build Coastguard Worker #define SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAP_SCALE 213*3ac0a46fSAndroid Build Coastguard Worker #endif 214*3ac0a46fSAndroid Build Coastguard Worker 215*3ac0a46fSAndroid Build Coastguard Worker #ifndef SK_SUPPORT_LEGACY_REFENCODEDDATA_NOCTX 216*3ac0a46fSAndroid Build Coastguard Worker #define SK_SUPPORT_LEGACY_REFENCODEDDATA_NOCTX 217*3ac0a46fSAndroid Build Coastguard Worker #endif 218*3ac0a46fSAndroid Build Coastguard Worker 219*3ac0a46fSAndroid Build Coastguard Worker #ifndef SK_IGNORE_ETC1_SUPPORT 220*3ac0a46fSAndroid Build Coastguard Worker #define SK_IGNORE_ETC1_SUPPORT 221*3ac0a46fSAndroid Build Coastguard Worker #endif 222*3ac0a46fSAndroid Build Coastguard Worker 223*3ac0a46fSAndroid Build Coastguard Worker #ifndef SK_IGNORE_GPU_DITHER 224*3ac0a46fSAndroid Build Coastguard Worker #define SK_IGNORE_GPU_DITHER 225*3ac0a46fSAndroid Build Coastguard Worker #endif 226*3ac0a46fSAndroid Build Coastguard Worker 227*3ac0a46fSAndroid Build Coastguard Worker #ifndef SK_SUPPORT_LEGACY_EVAL_CUBIC 228*3ac0a46fSAndroid Build Coastguard Worker #define SK_SUPPORT_LEGACY_EVAL_CUBIC 229*3ac0a46fSAndroid Build Coastguard Worker #endif 230*3ac0a46fSAndroid Build Coastguard Worker 231*3ac0a46fSAndroid Build Coastguard Worker ///////////////////////// Imported from BUILD.gn 232*3ac0a46fSAndroid Build Coastguard Worker 233*3ac0a46fSAndroid Build Coastguard Worker /* In some places Skia can use static initializers for global initialization, 234*3ac0a46fSAndroid Build Coastguard Worker * or fall back to lazy runtime initialization. Chrome always wants the latter. 235*3ac0a46fSAndroid Build Coastguard Worker */ 236*3ac0a46fSAndroid Build Coastguard Worker #define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0 237*3ac0a46fSAndroid Build Coastguard Worker 238*3ac0a46fSAndroid Build Coastguard Worker /* This flag forces Skia not to use typographic metrics with GDI. 239*3ac0a46fSAndroid Build Coastguard Worker */ 240*3ac0a46fSAndroid Build Coastguard Worker #define SK_GDI_ALWAYS_USE_TEXTMETRICS_FOR_FONT_METRICS 241*3ac0a46fSAndroid Build Coastguard Worker 242*3ac0a46fSAndroid Build Coastguard Worker #define SK_IGNORE_BLURRED_RRECT_OPT 243*3ac0a46fSAndroid Build Coastguard Worker #define SK_USE_DISCARDABLE_SCALEDIMAGECACHE 244*3ac0a46fSAndroid Build Coastguard Worker #define SK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT 245*3ac0a46fSAndroid Build Coastguard Worker 246*3ac0a46fSAndroid Build Coastguard Worker #define SK_ATTR_DEPRECATED SK_NOTHING_ARG1 247*3ac0a46fSAndroid Build Coastguard Worker #define SK_ENABLE_INST_COUNT 0 248*3ac0a46fSAndroid Build Coastguard Worker #define GR_GL_CUSTOM_SETUP_HEADER "GrGLConfig_chrome.h" 249*3ac0a46fSAndroid Build Coastguard Worker 250*3ac0a46fSAndroid Build Coastguard Worker // Blink layout tests are baselined to Clang optimizing through the UB in 251*3ac0a46fSAndroid Build Coastguard Worker // SkDivBits. 252*3ac0a46fSAndroid Build Coastguard Worker #define SK_SUPPORT_LEGACY_DIVBITS_UB 253*3ac0a46fSAndroid Build Coastguard Worker 254*3ac0a46fSAndroid Build Coastguard Worker // mtklein's fiddling with Src / SrcOver. Will rebaseline these only once when 255*3ac0a46fSAndroid Build Coastguard Worker // done. 256*3ac0a46fSAndroid Build Coastguard Worker #define SK_SUPPORT_LEGACY_X86_BLITS 257*3ac0a46fSAndroid Build Coastguard Worker 258*3ac0a46fSAndroid Build Coastguard Worker #define SK_DISABLE_TILE_IMAGE_FILTER_OPTIMIZATION 259*3ac0a46fSAndroid Build Coastguard Worker 260*3ac0a46fSAndroid Build Coastguard Worker #if defined(SK_BUILD_FOR_WIN) && !defined(__clang__) 261*3ac0a46fSAndroid Build Coastguard Worker #define SK_ABORT(format, ...) \ 262*3ac0a46fSAndroid Build Coastguard Worker SkAbort_FileLine(__FILE__, __LINE__, format, ##__VA_ARGS__) 263*3ac0a46fSAndroid Build Coastguard Worker [[noreturn]] SK_API void SkAbort_FileLine(const char* file, 264*3ac0a46fSAndroid Build Coastguard Worker int line, 265*3ac0a46fSAndroid Build Coastguard Worker const char* format, 266*3ac0a46fSAndroid Build Coastguard Worker ...); 267*3ac0a46fSAndroid Build Coastguard Worker #endif 268*3ac0a46fSAndroid Build Coastguard Worker 269*3ac0a46fSAndroid Build Coastguard Worker // ===== End Chrome-specific definitions ===== 270*3ac0a46fSAndroid Build Coastguard Worker 271*3ac0a46fSAndroid Build Coastguard Worker #endif // SKIA_CONFIG_SKUSERCONFIG_H_ 272