1################################################################################ 2# Skylark macros 3################################################################################ 4 5def skia_select(conditions, results): 6 """select() for conditions provided externally. 7 8 Instead of {"conditionA": resultA, "conditionB": resultB}, 9 this takes two arrays, ["conditionA", "conditionB"] and [resultA, resultB]. 10 11 This allows the exact targets of the conditions to be provided externally while 12 the results can live here, hiding the structure of those conditions in Google3. 13 14 Maybe this is too much paranoia? 15 16 Args: 17 conditions: [CONDITION_UNIX, CONDITION_ANDROID, CONDITION_IOS, CONDITION_WASM, ...] 18 results: [RESULT_UNIX, RESULT_ANDROID, RESULT_IOS, RESULT_WASM, ....] 19 Returns: 20 The result matching the active condition. 21 """ 22 selector = {} 23 for i in range(len(conditions)): 24 selector[conditions[i]] = results[i] 25 return select(selector) 26 27def skia_glob(srcs): 28 """Replaces glob() with a version that accepts a struct. 29 30 Args: 31 srcs: struct(include=[], exclude=[]) 32 Returns: 33 Equivalent of glob(srcs.include, exclude=srcs.exclude) 34 """ 35 if hasattr(srcs, "include"): 36 if hasattr(srcs, "exclude"): 37 return native.glob(srcs.include, exclude = srcs.exclude) 38 else: 39 return native.glob(srcs.include) 40 return [] 41 42################################################################################ 43## skia_{all,public}_hdrs() 44################################################################################ 45def skia_all_hdrs(): 46 return native.glob([ 47 "src/**/*.h", 48 "include/**/*.h", 49 "third_party/**/*.h", 50 ]) 51 52def skia_public_hdrs(): 53 return native.glob( 54 ["include/**/*.h"], 55 exclude = [ 56 "include/private/**/*", 57 ], 58 ) 59 60################################################################################ 61## skia_opts_srcs() 62################################################################################ 63# Intel 64SKIA_OPTS_SSE2 = "SSE2" 65 66SKIA_OPTS_SSSE3 = "SSSE3" 67 68SKIA_OPTS_SSE41 = "SSE41" 69 70SKIA_OPTS_SSE42 = "SSE42" 71 72SKIA_OPTS_AVX = "AVX" 73 74SKIA_OPTS_HSW = "HSW" 75 76# Arm 77SKIA_OPTS_NEON = "NEON" 78 79SKIA_OPTS_CRC32 = "CRC32" # arm64 80 81def opts_srcs(opts): 82 if opts == SKIA_OPTS_SSE2: 83 return native.glob([ 84 "src/opts/*_SSE2.cpp", 85 "src/opts/*_sse2.cpp", # No matches currently. 86 ]) 87 elif opts == SKIA_OPTS_SSSE3: 88 return native.glob([ 89 "src/opts/*_SSSE3.cpp", 90 "src/opts/*_ssse3.cpp", 91 ]) 92 elif opts == SKIA_OPTS_SSE41: 93 return native.glob([ 94 "src/opts/*_sse41.cpp", 95 ]) 96 elif opts == SKIA_OPTS_SSE42: 97 return native.glob([ 98 "src/opts/*_sse42.cpp", 99 ]) 100 elif opts == SKIA_OPTS_AVX: 101 return native.glob([ 102 "src/opts/*_avx.cpp", 103 ]) 104 elif opts == SKIA_OPTS_HSW: 105 return native.glob([ 106 "src/opts/*_hsw.cpp", 107 ]) 108 elif opts == SKIA_OPTS_NEON: 109 return native.glob([ 110 "src/opts/*_neon.cpp", 111 ]) 112 elif opts == SKIA_OPTS_CRC32: 113 return native.glob([ 114 "src/opts/*_crc32.cpp", 115 ]) 116 else: 117 fail("skia_opts_srcs parameter 'opts' must be one of SKIA_OPTS_*.") 118 119def opts_cflags(opts): 120 if opts == SKIA_OPTS_SSE2: 121 return ["-msse2"] 122 elif opts == SKIA_OPTS_SSSE3: 123 return ["-mssse3"] 124 elif opts == SKIA_OPTS_SSE41: 125 return ["-msse4.1"] 126 elif opts == SKIA_OPTS_SSE42: 127 return ["-msse4.2"] 128 elif opts == SKIA_OPTS_AVX: 129 return ["-mavx"] 130 elif opts == SKIA_OPTS_HSW: 131 return ["-mavx2", "-mf16c", "-mfma"] 132 elif opts == SKIA_OPTS_NEON: 133 return ["-mfpu=neon"] 134 elif opts == SKIA_OPTS_CRC32: 135 # NDK r11's Clang (3.8) doesn't pass along this -march setting correctly to an external 136 # assembler, so we do it manually with -Wa. This is just a bug, fixed in later Clangs. 137 return ["-march=armv8-a+crc", "-Wa,-march=armv8-a+crc"] 138 else: 139 return [] 140 141SKIA_CPU_ARM = "ARM" 142 143SKIA_CPU_ARM64 = "ARM64" 144 145SKIA_CPU_X86 = "X86" 146 147SKIA_CPU_OTHER = "OTHER" 148 149def opts_rest_srcs(cpu): 150 srcs = [] 151 if cpu == SKIA_CPU_ARM or cpu == SKIA_CPU_ARM64: 152 srcs += native.glob([ 153 "src/opts/*_arm.cpp", 154 "src/opts/SkBitmapProcState_opts_none.cpp", 155 ]) 156 if cpu == SKIA_CPU_ARM64: 157 # NEON doesn't need special flags to compile on ARM64. 158 srcs += native.glob([ 159 "src/opts/*_neon.cpp", 160 ]) 161 elif cpu == SKIA_CPU_X86: 162 srcs += native.glob([ 163 "src/opts/*_x86.cpp", 164 ]) 165 elif cpu == SKIA_CPU_OTHER: 166 srcs += native.glob([ 167 "src/opts/*_none.cpp", 168 ]) 169 else: 170 fail("opts_rest_srcs parameter 'cpu' must be one of " + 171 "SKIA_CPU_{ARM,ARM64,X86,OTHER}.") 172 return srcs 173 174def skia_opts_deps(cpu): 175 res = [":opts_rest"] 176 177 if cpu == SKIA_CPU_ARM: 178 res += [":opts_neon"] 179 180 if cpu == SKIA_CPU_ARM64: 181 res += [":opts_crc32"] 182 183 if cpu == SKIA_CPU_X86: 184 res += [ 185 ":opts_sse2", 186 ":opts_ssse3", 187 ":opts_sse41", 188 ":opts_sse42", 189 ":opts_avx", 190 ":opts_hsw", 191 ] 192 193 return res 194 195################################################################################ 196## BASE_SRCS 197################################################################################ 198 199# All platform-independent SRCS. 200BASE_SRCS_ALL = struct( 201 include = [ 202 "include/private/**/*.h", 203 "src/**/*.h", 204 "src/**/*.cpp", 205 "src/**/*.inc", 206 ], 207 exclude = [ 208 # Exclude platform-dependent files. 209 "src/codec/*", 210 "src/device/xps/*", # Windows-only. Move to ports? 211 "src/doc/*_XPS.cpp", # Windows-only. Move to ports? 212 "src/gpu/gl/android/*", 213 "src/gpu/gl/egl/*", 214 "src/gpu/gl/glfw/*", 215 "src/gpu/gl/glx/*", 216 "src/gpu/gl/iOS/*", 217 "src/gpu/gl/mac/*", 218 "src/gpu/gl/win/*", 219 "src/opts/**/*", 220 "src/ports/**/*", 221 "src/utils/android/**/*", 222 "src/utils/mac/**/*", 223 "src/utils/win/**/*", 224 225 # Exclude multiple definitions. 226 "src/gpu/gl/GrGLMakeNativeInterface_none.cpp", 227 "src/pdf/SkDocument_PDF_None.cpp", # We use src/pdf/SkPDFDocument.cpp. 228 229 # Exclude files that don't compile everywhere. 230 "src/svg/**/*", # Depends on xml, SkJpegCodec, and SkPngCodec. 231 "src/xml/**/*", # Avoid dragging in expat when not needed. 232 233 # Exclude all GL specific files 234 "src/gpu/gl/*", 235 "src/gpu/gl/builders/*", 236 237 # Exclude all WebGL specific files 238 "src/gpu/gl/webgl/*", 239 240 # Currently exclude all vulkan specific files 241 "src/gpu/vk/*", 242 243 # Currently exclude all Direct3D specific files 244 "src/gpu/d3d/*", 245 246 # Currently exclude all Dawn-specific files 247 "src/gpu/dawn/*", 248 249 # Defines main. 250 "src/sksl/SkSLMain.cpp", 251 252 # Only used to regenerate the lexer 253 "src/sksl/lex/*", 254 ], 255) 256 257def codec_srcs(limited): 258 """Sources for the codecs. Excludes Raw, and Ico, Webp, and Png if limited.""" 259 260 exclude = ["src/codec/*Raw*.cpp"] 261 if limited: 262 exclude += [ 263 "src/codec/*Ico*.cpp", 264 "src/codec/*Webp*.cpp", 265 "src/codec/*Png*", 266 ] 267 return native.glob(["src/codec/*.cpp"], exclude = exclude) 268 269GL_SRCS_UNIX = struct( 270 include = [ 271 "src/gpu/gl/*", 272 "src/gpu/gl/builders/*", 273 ], 274 exclude = [], 275) 276PORTS_SRCS_UNIX = struct( 277 include = [ 278 "src/ports/**/*.cpp", 279 "src/ports/**/*.h", 280 ], 281 exclude = [ 282 "src/ports/*CG*", 283 "src/ports/*WIC*", 284 "src/ports/*android*", 285 "src/ports/*chromium*", 286 "src/ports/*mac*", 287 "src/ports/*mozalloc*", 288 "src/ports/*nacl*", 289 "src/ports/*win*", 290 "src/ports/*NDK*", 291 "src/ports/SkFontMgr_custom_directory_factory.cpp", 292 "src/ports/SkFontMgr_custom_embedded_factory.cpp", 293 "src/ports/SkFontMgr_custom_empty_factory.cpp", 294 "src/ports/SkFontMgr_empty_factory.cpp", 295 "src/ports/SkFontMgr_fontconfig_factory.cpp", 296 "src/ports/SkFontMgr_fuchsia.cpp", 297 "src/ports/SkImageGenerator_none.cpp", 298 ], 299) 300 301GL_SRCS_ANDROID = struct( 302 include = [ 303 "src/gpu/gl/*", 304 "src/gpu/gl/builders/*", 305 "src/gpu/gl/android/*.cpp", 306 ], 307 exclude = [ 308 "src/gpu/gl/GrGLMakeNativeInterface_none.cpp", 309 ], 310) 311PORTS_SRCS_ANDROID = struct( 312 include = [ 313 "src/ports/**/*.cpp", 314 "src/ports/**/*.h", 315 ], 316 exclude = [ 317 "src/ports/*CG*", 318 "src/ports/*FontConfig*", 319 "src/ports/*WIC*", 320 "src/ports/*chromium*", 321 "src/ports/*fontconfig*", 322 "src/ports/*mac*", 323 "src/ports/*mozalloc*", 324 "src/ports/*nacl*", 325 "src/ports/*win*", 326 "src/ports/*NDK*", # TODO (scroggo): enable NDK decoding/encoding in Google3 327 "src/ports/SkDebug_stdio.cpp", 328 "src/ports/SkFontMgr_custom_directory_factory.cpp", 329 "src/ports/SkFontMgr_custom_embedded_factory.cpp", 330 "src/ports/SkFontMgr_custom_empty_factory.cpp", 331 "src/ports/SkFontMgr_empty_factory.cpp", 332 "src/ports/SkFontMgr_fuchsia.cpp", 333 "src/ports/SkImageGenerator_none.cpp", 334 ], 335) 336 337GL_SRCS_IOS = struct( 338 include = [ 339 "src/gpu/gl/*", 340 "src/gpu/gl/builders/*", 341 "src/gpu/gl/iOS/GrGLMakeNativeInterface_iOS.cpp", 342 ], 343 exclude = [ 344 "src/gpu/gl/GrGLMakeNativeInterface_none.cpp", 345 ], 346) 347PORTS_SRCS_IOS = struct( 348 include = [ 349 "src/ports/**/*.cpp", 350 "src/ports/**/*.h", 351 "src/utils/mac/*.cpp", 352 ], 353 exclude = [ 354 "src/ports/*FontConfig*", 355 "src/ports/*FreeType*", 356 "src/ports/*WIC*", 357 "src/ports/*android*", 358 "src/ports/*chromium*", 359 "src/ports/*fontconfig*", 360 "src/ports/*mozalloc*", 361 "src/ports/*nacl*", 362 "src/ports/*win*", 363 "src/ports/*NDK*", 364 "src/ports/SkFontMgr_custom.cpp", 365 "src/ports/SkFontMgr_custom_directory.cpp", 366 "src/ports/SkFontMgr_custom_embedded.cpp", 367 "src/ports/SkFontMgr_custom_empty.cpp", 368 "src/ports/SkFontMgr_custom_directory_factory.cpp", 369 "src/ports/SkFontMgr_custom_embedded_factory.cpp", 370 "src/ports/SkFontMgr_custom_empty_factory.cpp", 371 "src/ports/SkFontMgr_empty_factory.cpp", 372 "src/ports/SkFontMgr_fuchsia.cpp", 373 "src/ports/SkImageGenerator_none.cpp", 374 ], 375) 376 377GL_SRCS_WASM = struct( 378 include = [ 379 "src/gpu/gl/*", 380 "src/gpu/gl/builders/*", 381 "src/gpu/gl/egl/GrGLMakeEGLInterface.cpp", 382 "src/gpu/gl/egl/GrGLMakeNativeInterface_egl.cpp", 383 ], 384 exclude = [ 385 "src/gpu/gl/GrGLMakeNativeInterface_none.cpp", 386 ], 387) 388PORTS_SRCS_WASM = struct( 389 include = [ 390 "src/ports/**/*.cpp", 391 "src/ports/**/*.h", 392 ], 393 exclude = [ 394 # commented lines below left in because they indicate specifically what is 395 # included here and not in other PORTS_SRCS lists. 396 "src/ports/*FontConfig*", 397 #"src/ports/*FreeType*", 398 "src/ports/*WIC*", 399 "src/ports/*CG*", 400 "src/ports/*android*", 401 "src/ports/*chromium*", 402 "src/ports/*fontconfig*", 403 "src/ports/*mac*", 404 "src/ports/*mozalloc*", 405 "src/ports/*nacl*", 406 "src/ports/*win*", 407 "src/ports/*NDK*", 408 #"src/ports/SkDebug_stdio.cpp", 409 #"src/ports/SkFontMgr_custom.cpp", 410 "src/ports/SkFontMgr_custom_directory.cpp", 411 "src/ports/SkFontMgr_custom_directory_factory.cpp", 412 "src/ports/SkFontMgr_custom_embedded.cpp", 413 "src/ports/SkFontMgr_custom_embedded_factory.cpp", 414 "src/ports/SkFontMgr_custom_empty.cpp", 415 "src/ports/SkFontMgr_custom_empty_factory.cpp", 416 # "src/ports/SkFontMgr_empty_factory.cpp", 417 "src/ports/SkFontMgr_fontconfig_factory.cpp", 418 "src/ports/SkFontMgr_fuchsia.cpp", 419 "src/ports/SkImageGenerator_none.cpp", 420 ], 421) 422 423GL_SRCS_FUCHSIA = struct( 424 include = [ 425 "src/gpu/vk/*", 426 ], 427 exclude = [], 428) 429PORTS_SRCS_FUCHSIA = struct( 430 include = [ 431 "src/ports/**/*.cpp", 432 "src/ports/**/*.h", 433 ], 434 exclude = [ 435 "src/ports/*FontConfig*", 436 #"src/ports/*FreeType*", 437 "src/ports/*WIC*", 438 "src/ports/*CG*", 439 "src/ports/*android*", 440 "src/ports/*chromium*", 441 "src/ports/*fontconfig*", 442 "src/ports/*mac*", 443 "src/ports/*mozalloc*", 444 "src/ports/*nacl*", 445 "src/ports/*win*", 446 "src/ports/*NDK*", 447 #"src/ports/SkDebug_stdio.cpp", 448 #"src/ports/SkFontMgr_custom.cpp", 449 "src/ports/SkFontMgr_custom_directory.cpp", 450 "src/ports/SkFontMgr_custom_directory_factory.cpp", 451 "src/ports/SkFontMgr_custom_embedded.cpp", 452 "src/ports/SkFontMgr_custom_embedded_factory.cpp", 453 "src/ports/SkFontMgr_custom_empty.cpp", 454 "src/ports/SkFontMgr_custom_empty_factory.cpp", 455 #"src/ports/SkFontMgr_empty_factory.cpp", 456 "src/ports/SkFontMgr_fontconfig_factory.cpp", 457 #"src/ports/SkFontMgr_fuchsia.cpp", 458 "src/ports/SkImageGenerator_none.cpp", 459 ], 460) 461 462GL_SRCS_MACOS = struct( 463 include = [ 464 "src/gpu/gl/*", 465 "src/gpu/gl/builders/*", 466 "src/gpu/gl/mac/GrGLMakeNativeInterface_mac.cpp", 467 ], 468 exclude = [ 469 "src/gpu/gl/GrGLMakeNativeInterface_none.cpp", 470 ], 471) 472PORTS_SRCS_MACOS = PORTS_SRCS_IOS 473 474def base_srcs(): 475 return skia_glob(BASE_SRCS_ALL) 476 477def ports_srcs(os_conditions): 478 return skia_select( 479 os_conditions, 480 [ 481 skia_glob(PORTS_SRCS_UNIX), 482 skia_glob(PORTS_SRCS_ANDROID), 483 skia_glob(PORTS_SRCS_IOS), 484 skia_glob(PORTS_SRCS_WASM), 485 skia_glob(PORTS_SRCS_FUCHSIA), 486 skia_glob(PORTS_SRCS_MACOS), 487 ], 488 ) 489 490def gl_srcs(os_conditions): 491 return skia_select( 492 os_conditions, 493 [ 494 skia_glob(GL_SRCS_UNIX), 495 skia_glob(GL_SRCS_ANDROID), 496 skia_glob(GL_SRCS_IOS), 497 skia_glob(GL_SRCS_WASM), 498 skia_glob(GL_SRCS_FUCHSIA), 499 skia_glob(GL_SRCS_MACOS), 500 ], 501 ) 502 503def skia_srcs(os_conditions): 504 return base_srcs() + ports_srcs(os_conditions) + gl_srcs(os_conditions) 505 506def metal_objc_srcs(): 507 return native.glob( 508 [ 509 "include/**/*.h", 510 "src/**/*.h", 511 "src/gpu/mtl/**/*.mm", 512 "third_party/**/*.h", 513 ], 514 ) + [ 515 "src/image/SkSurface_GpuMtl.mm", 516 ] 517 518################################################################################ 519## INCLUDES 520################################################################################ 521 522# Includes needed by Skia implementation. Not public includes. 523INCLUDES = [ 524 ".", 525 "include/android", 526 "include/c", 527 "include/codec", 528 "include/config", 529 "include/core", 530 "include/docs", 531 "include/effects", 532 "include/encode", 533 "include/gpu", 534 "include/pathops", 535 "include/ports", 536 "include/private", 537 "include/third_party/skcms", 538 "include/utils", 539 "include/utils/mac", 540 "src/codec", 541 "src/core", 542 "src/gpu", 543 "src/image", 544 "src/images", 545 "src/lazy", 546 "src/opts", 547 "src/pdf", 548 "src/ports", 549 "src/sfnt", 550 "src/shaders", 551 "src/shaders/gradients", 552 "src/sksl", 553 "src/utils", 554 "third_party/gif", 555] 556 557################################################################################ 558## DM_SRCS 559################################################################################ 560 561DM_SRCS_ALL = struct( 562 include = [ 563 "dm/*.cpp", 564 "dm/*.h", 565 "experimental/pipe/*.cpp", 566 "experimental/pipe/*.h", 567 "gm/*.cpp", 568 "gm/*.h", 569 "gm/verifiers/*.cpp", 570 "gm/verifiers/*.h", 571 # TODO(fmalita): SVG sources should not be included here 572 "modules/svg/include/*.h", 573 "modules/svg/src/*.cpp", 574 "src/utils/SkMultiPictureDocument.cpp", 575 "src/xml/*.cpp", 576 "tests/*.cpp", 577 "tests/*.h", 578 "tools/AutoreleasePool.h", 579 "tools/BinaryAsset.h", 580 "tools/CrashHandler.cpp", 581 "tools/CrashHandler.h", 582 "tools/DDLPromiseImageHelper.cpp", 583 "tools/DDLPromiseImageHelper.h", 584 "tools/DDLTileHelper.cpp", 585 "tools/DDLTileHelper.h", 586 "tools/HashAndEncode.cpp", 587 "tools/HashAndEncode.h", 588 "tools/ProcStats.cpp", 589 "tools/ProcStats.h", 590 "tools/Registry.h", 591 "tools/ResourceFactory.h", 592 "tools/Resources.cpp", 593 "tools/Resources.h", 594 "tools/RuntimeBlendUtils.cpp", 595 "tools/RuntimeBlendUtils.h", 596 "tools/SkMetaData.cpp", 597 "tools/SkMetaData.h", 598 "tools/SkSharingProc.cpp", 599 "tools/ToolUtils.cpp", 600 "tools/ToolUtils.h", 601 "tools/UrlDataManager.cpp", 602 "tools/UrlDataManager.h", 603 "tools/debugger/*.cpp", 604 "tools/debugger/*.h", 605 "tools/flags/*.cpp", 606 "tools/flags/*.h", 607 "tools/fonts/RandomScalerContext.cpp", 608 "tools/fonts/RandomScalerContext.h", 609 "tools/fonts/TestFontMgr.cpp", 610 "tools/fonts/TestFontMgr.h", 611 "tools/fonts/TestSVGTypeface.cpp", 612 "tools/fonts/TestSVGTypeface.h", 613 "tools/fonts/TestTypeface.cpp", 614 "tools/fonts/TestTypeface.h", 615 "tools/fonts/ToolUtilsFont.cpp", 616 "tools/fonts/test_font_index.inc", 617 "tools/fonts/test_font_monospace.inc", 618 "tools/fonts/test_font_sans_serif.inc", 619 "tools/fonts/test_font_serif.inc", 620 "tools/gpu/**/*.cpp", 621 "tools/gpu/**/*.h", 622 "tools/ios_utils.h", 623 "tools/random_parse_path.cpp", 624 "tools/random_parse_path.h", 625 "tools/timer/*.cpp", 626 "tools/timer/*.h", 627 "tools/trace/*.cpp", 628 "tools/trace/*.h", 629 ], 630 exclude = [ 631 "gm/cgms.cpp", 632 "gm/fiddle.cpp", 633 "gm/video_decoder.cpp", 634 "tests/FontMgrAndroidParserTest.cpp", # Android-only. 635 "tests/FontMgrFontConfigTest.cpp", # FontConfig-only. 636 "tests/TypefaceMacTest.cpp", # CoreText-only. 637 "tests/SkParagraphTest.cpp", # Skipping tests for now. 638 "tests/skia_test.cpp", # Old main. 639 "tools/gpu/d3d/*", 640 "tools/gpu/dawn/*", 641 "tools/gpu/gl/angle/*", 642 "tools/gpu/gl/egl/*", 643 "tools/gpu/gl/glx/*", 644 "tools/gpu/gl/iOS/*", 645 "tools/gpu/gl/mac/*", 646 "tools/gpu/gl/win/*", 647 "tools/timer/SysTimer_mach.cpp", 648 "tools/timer/SysTimer_windows.cpp", 649 ], 650) 651 652################################################################################ 653## dm_srcs() 654################################################################################ 655 656def dm_srcs(os_conditions): 657 """Sources for the dm binary for the specified os.""" 658 return skia_glob(DM_SRCS_ALL) + skia_select( 659 os_conditions, 660 [ 661 ["tests/FontMgrFontConfigTest.cpp"], # Unix 662 ["tests/FontMgrAndroidParserTest.cpp"], # Android 663 ["tests/TypefaceMacTest.cpp"], # iOS 664 [], # WASM 665 [], # Fuchsia 666 ["tests/TypefaceMacTest.cpp"], # macOS 667 ], 668 ) 669 670################################################################################ 671## DM_ARGS 672################################################################################ 673 674def DM_ARGS(asan): 675 source = ["gm", "image", "lottie"] 676 677 # TODO(benjaminwagner): f16, pic-8888, serialize-8888, and tiles_rt-8888 fail. 678 config = ["565", "8888", "pdf"] 679 match = ["~Codec_78329453"] 680 return (["--src"] + source + ["--config"] + config + ["--nonativeFonts"] + 681 ["--match"] + match) 682 683################################################################################ 684## COPTS 685################################################################################ 686 687def base_copts(os_conditions): 688 return ["-Wno-implicit-fallthrough"] + skia_select( 689 os_conditions, 690 [ 691 # UNIX 692 [ 693 # Internal use of deprecated methods. :( 694 "-Wno-deprecated-declarations", 695 # TODO(kjlubick) 696 "-Wno-self-assign", # Spurious warning in tests/PathOpsDVectorTest.cpp? 697 ], 698 # ANDROID 699 [ 700 # 'GrResourceCache' declared with greater visibility than the 701 # type of its field 'GrResourceCache::fPurgeableQueue'... bogus. 702 "-Wno-error=attributes", 703 ], 704 [], # iOS 705 [], # wasm 706 [], # Fuchsia 707 [], # macOS 708 ], 709 ) 710 711################################################################################ 712## DEFINES 713################################################################################ 714 715def base_defines(os_conditions): 716 return [ 717 # Chrome DEFINES. 718 "SK_USE_FREETYPE_EMBOLDEN", 719 # Turn on a few Google3-specific build fixes. 720 "SK_BUILD_FOR_GOOGLE3", 721 # Required for building dm. 722 "GR_TEST_UTILS", 723 # Staging flags for API changes 724 "SK_PARAGRAPH_GRAPHEME_EDGES", 725 # Should remove after we update golden images 726 "SK_WEBP_ENCODER_USE_DEFAULT_METHOD", 727 # Experiment to diagnose image diffs in Google3 728 "SK_DISABLE_LOWP_RASTER_PIPELINE", 729 # JPEG is in codec_limited 730 "SK_CODEC_DECODES_JPEG", 731 "SK_ENCODE_JPEG", 732 "SK_HAS_ANDROID_CODEC", 733 ] + skia_select( 734 os_conditions, 735 [ 736 # UNIX 737 [ 738 "PNG_SKIP_SETJMP_CHECK", 739 "SK_BUILD_FOR_UNIX", 740 "SK_CODEC_DECODES_PNG", 741 "SK_CODEC_DECODES_WEBP", 742 "SK_ENCODE_PNG", 743 "SK_ENCODE_WEBP", 744 "SK_R32_SHIFT=16", 745 "SK_GL", 746 ], 747 # ANDROID 748 [ 749 "SK_BUILD_FOR_ANDROID", 750 "SK_CODEC_DECODES_PNG", 751 "SK_CODEC_DECODES_WEBP", 752 "SK_ENCODE_PNG", 753 "SK_ENCODE_WEBP", 754 "SK_GL", 755 ], 756 # IOS 757 [ 758 "SK_BUILD_FOR_IOS", 759 "SKNX_NO_SIMD", 760 "SK_NO_COMMAND_BUFFER", # Test tools that use thread_local. 761 "SK_GL", 762 ], 763 # WASM 764 [ 765 "SK_DISABLE_LEGACY_SHADERCONTEXT", 766 "SK_DISABLE_TRACING", 767 "SK_GL", 768 "SK_SUPPORT_GPU=1", 769 "SK_DISABLE_AAA", 770 "SK_DISABLE_EFFECT_DESERIALIZATION", 771 "SK_FORCE_8_BYTE_ALIGNMENT", 772 "SKNX_NO_SIMD", 773 ], 774 # FUCHSIA 775 [ 776 "SK_BUILD_FOR_UNIX", 777 "SK_CODEC_DECODES_PNG", 778 "SK_CODEC_DECODES_WEBP", 779 "SK_ENCODE_PNG", 780 "SK_ENCODE_WEBP", 781 "SK_R32_SHIFT=16", 782 "SK_VULKAN", 783 ], 784 # MACOS 785 [ 786 "SK_BUILD_FOR_MAC", 787 "SK_GL", 788 ], 789 ], 790 ) 791 792################################################################################ 793## LINKOPTS 794################################################################################ 795 796def base_linkopts(os_conditions): 797 return [ 798 "-ldl", 799 ] + skia_select( 800 os_conditions, 801 [ 802 [], # Unix 803 # ANDROID 804 [ 805 "-lEGL", 806 "-lGLESv2", 807 ], 808 # IOS 809 [ 810 "-framework CoreFoundation", 811 "-framework CoreGraphics", 812 "-framework CoreText", 813 "-framework ImageIO", 814 "-framework MobileCoreServices", 815 ], 816 [], # wasm 817 [], # Fuchsia 818 # MACOS 819 [ 820 "-framework CoreFoundation", 821 "-framework CoreGraphics", 822 "-framework CoreText", 823 "-framework ImageIO", 824 "-framework ApplicationServices", 825 ], 826 ], 827 ) 828 829################################################################################ 830## sksg_lib 831################################################################################ 832 833def sksg_lib_hdrs(): 834 return native.glob(["modules/sksg/include/*.h"]) 835 836def sksg_lib_srcs(): 837 return native.glob([ 838 "modules/sksg/src/*.cpp", 839 "modules/sksg/src/*.h", 840 ]) 841 842################################################################################ 843## skparagraph_lib 844################################################################################ 845 846def skparagraph_lib_hdrs(): 847 return native.glob(["modules/skparagraph/include/*.h"]) 848 849def skparagraph_lib_srcs(): 850 return native.glob(["modules/skparagraph/src/*.cpp"]) 851 852################################################################################ 853## experimental xform 854################################################################################ 855 856def exp_xform_lib_hdrs(): 857 return native.glob(["experimental/xform/*.h"]) 858 859def exp_xform_lib_srcs(): 860 return native.glob(["experimental/xform/*.cpp"]) 861 862################################################################################ 863## skresources_lib 864################################################################################ 865 866def skresources_lib_hdrs(): 867 return ["modules/skresources/include/SkResources.h"] 868 869def skresources_lib_srcs(): 870 return ["modules/skresources/src/SkResources.cpp"] 871 872################################################################################ 873## skottie_lib 874################################################################################ 875 876def skottie_lib_hdrs(): 877 return native.glob(["modules/skottie/include/*.h"]) 878 879def skottie_lib_srcs(): 880 return native.glob( 881 [ 882 "modules/skottie/src/*.cpp", 883 "modules/skottie/src/*.h", 884 "modules/skottie/src/animator/*.cpp", 885 "modules/skottie/src/animator/*.h", 886 "modules/skottie/src/effects/*.cpp", 887 "modules/skottie/src/effects/*.h", 888 "modules/skottie/src/layers/*.cpp", 889 "modules/skottie/src/layers/*.h", 890 "modules/skottie/src/layers/shapelayer/*.cpp", 891 "modules/skottie/src/layers/shapelayer/*.h", 892 "modules/skottie/src/text/*.cpp", 893 "modules/skottie/src/text/*.h", 894 ], 895 exclude = [ 896 "modules/skottie/src/SkottieTest.cpp", 897 "modules/skottie/src/SkottieTool.cpp", 898 ], 899 ) 900 901################################################################################ 902## skottie_utils 903################################################################################ 904 905SKOTTIE_UTILS_HDRS = [ 906 "modules/skottie/utils/SkottieUtils.h", 907] 908 909SKOTTIE_UTILS_SRCS = [ 910 "modules/skottie/utils/SkottieUtils.cpp", 911] 912 913################################################################################ 914## skottie_shaper 915################################################################################ 916 917SKOTTIE_SHAPER_HDRS = [ 918 "modules/skottie/src/text/SkottieShaper.h", 919] 920 921SKOTTIE_SHAPER_SRCS = [ 922 "modules/skottie/src/text/SkottieShaper.cpp", 923] 924 925################################################################################ 926## skottie_tool 927################################################################################ 928 929SKOTTIE_TOOL_SRCS = [ 930 "modules/skottie/src/SkottieTool.cpp", 931 "modules/skresources/src/SkResources.cpp", 932 "modules/skresources/include/SkResources.h", 933 # TODO(benjaminwagner): Add "flags" target. 934 "tools/flags/CommandLineFlags.cpp", 935 "tools/flags/CommandLineFlags.h", 936] 937 938################################################################################ 939## SkShaper 940################################################################################ 941 942# Stubs, pending SkUnicode fission 943SKUNICODE_ICU_BUILTIN_SRCS = [ 944 "modules/skunicode/include/SkUnicode.h", 945 "modules/skunicode/src/SkUnicode_icu.cpp", 946 "modules/skunicode/src/SkUnicode_icu.h", 947 "modules/skunicode/src/SkUnicode_icu_builtin.cpp", 948] 949 950SKUNICODE_ICU_RUNTIME_SRCS = [ 951 "modules/skunicode/include/SkUnicode.h", 952 "modules/skunicode/src/SkUnicode_icu.cpp", 953 "modules/skunicode/src/SkUnicode_icu.h", 954 "modules/skunicode/src/SkUnicode_icu_runtime.cpp", 955] 956 957SKSHAPER_HARFBUZZ_SRCS = [ 958 "modules/skshaper/include/SkShaper.h", 959 "modules/skshaper/src/SkShaper.cpp", 960 "modules/skshaper/src/SkShaper_harfbuzz.cpp", 961 "modules/skshaper/src/SkShaper_primitive.cpp", 962] 963 964SKSHAPER_PRIMITIVE_SRCS = [ 965 "modules/skshaper/include/SkShaper.h", 966 "modules/skshaper/src/SkShaper.cpp", 967 "modules/skshaper/src/SkShaper_primitive.cpp", 968] 969 970################################################################################ 971## skottie_ios_lib 972################################################################################ 973 974SKOTTIE_IOS_LIB_SRCS = [ 975 "tools/skottie_ios_app/SkiaContext.mm", 976 "tools/skottie_ios_app/SkiaUIContext.mm", 977 "tools/skottie_ios_app/SkiaViewController.mm", 978 "tools/skottie_ios_app/SkottieViewController.mm", 979] 980 981SKOTTIE_IOS_LIB_HDRS = [ 982 "tools/skottie_ios_app/SkiaContext.h", 983 "tools/skottie_ios_app/SkiaViewController.h", 984 "tools/skottie_ios_app/SkottieViewController.h", 985] 986 987SKOTTIE_IOS_LIB_SDK_FRAMEWORKS = [ 988 "Foundation", 989 "UIKit", 990] 991 992################################################################################ 993## svg_lib 994################################################################################ 995 996def svg_lib_hdrs(): 997 return native.glob(["modules/svg/include/*.h"]) 998 999def svg_lib_srcs(): 1000 return native.glob(["modules/svg/src/*.cpp"]) 1001 1002################################################################################ 1003## svg_tool 1004################################################################################ 1005 1006SVG_TOOL_SRCS = [ 1007 "modules/svg/utils/SvgTool.cpp", 1008 # TODO(benjaminwagner): Add "flags" target. 1009 "tools/flags/CommandLineFlags.cpp", 1010 "tools/flags/CommandLineFlags.h", 1011] 1012