public.bzl 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  1. ################################################################################
  2. # Skylark macros
  3. ################################################################################
  4. is_bazel = not hasattr(native, "genmpm")
  5. def portable_select(select_dict, bazel_condition, default_condition):
  6. """Replaces select() with a Bazel-friendly wrapper.
  7. Args:
  8. select_dict: Dictionary in the same format as select().
  9. Returns:
  10. If Blaze platform, returns select() using select_dict.
  11. If Bazel platform, returns dependencies for condition
  12. bazel_condition, or empty list if none specified.
  13. """
  14. if is_bazel:
  15. return select_dict.get(bazel_condition, select_dict[default_condition])
  16. else:
  17. return select(select_dict)
  18. def skia_select(conditions, results):
  19. """Replaces select() for conditions [UNIX, ANDROID, IOS]
  20. Args:
  21. conditions: [CONDITION_UNIX, CONDITION_ANDROID, CONDITION_IOS]
  22. results: [RESULT_UNIX, RESULT_ANDROID, RESULT_IOS]
  23. Returns:
  24. The result matching the platform condition.
  25. """
  26. if len(conditions) != 3 or len(results) != 3:
  27. fail("Must provide exactly 3 conditions and 3 results")
  28. selector = {}
  29. for i in range(3):
  30. selector[conditions[i]] = results[i]
  31. return portable_select(selector, conditions[2], conditions[0])
  32. def skia_glob(srcs):
  33. """Replaces glob() with a version that accepts a struct.
  34. Args:
  35. srcs: struct(include=[], exclude=[])
  36. Returns:
  37. Equivalent of glob(srcs.include, exclude=srcs.exclude)
  38. """
  39. if hasattr(srcs, "include"):
  40. if hasattr(srcs, "exclude"):
  41. return native.glob(srcs.include, exclude = srcs.exclude)
  42. else:
  43. return native.glob(srcs.include)
  44. return []
  45. ################################################################################
  46. ## skia_{all,public}_hdrs()
  47. ################################################################################
  48. def skia_all_hdrs():
  49. return native.glob([
  50. "src/**/*.h",
  51. "include/**/*.h",
  52. "third_party/**/*.h",
  53. ])
  54. def skia_public_hdrs():
  55. return native.glob(
  56. ["include/**/*.h"],
  57. exclude = [
  58. "include/private/**/*",
  59. ],
  60. )
  61. ################################################################################
  62. ## skia_opts_srcs()
  63. ################################################################################
  64. # Intel
  65. SKIA_OPTS_SSE2 = "SSE2"
  66. SKIA_OPTS_SSSE3 = "SSSE3"
  67. SKIA_OPTS_SSE41 = "SSE41"
  68. SKIA_OPTS_SSE42 = "SSE42"
  69. SKIA_OPTS_AVX = "AVX"
  70. SKIA_OPTS_HSW = "HSW"
  71. # Arm
  72. SKIA_OPTS_NEON = "NEON"
  73. SKIA_OPTS_CRC32 = "CRC32" # arm64
  74. def opts_srcs(opts):
  75. if opts == SKIA_OPTS_SSE2:
  76. return native.glob([
  77. "src/opts/*_SSE2.cpp",
  78. "src/opts/*_sse2.cpp", # No matches currently.
  79. ])
  80. elif opts == SKIA_OPTS_SSSE3:
  81. return native.glob([
  82. "src/opts/*_SSSE3.cpp",
  83. "src/opts/*_ssse3.cpp",
  84. ])
  85. elif opts == SKIA_OPTS_SSE41:
  86. return native.glob([
  87. "src/opts/*_sse41.cpp",
  88. ])
  89. elif opts == SKIA_OPTS_SSE42:
  90. return native.glob([
  91. "src/opts/*_sse42.cpp",
  92. ])
  93. elif opts == SKIA_OPTS_AVX:
  94. return native.glob([
  95. "src/opts/*_avx.cpp",
  96. ])
  97. elif opts == SKIA_OPTS_HSW:
  98. return native.glob([
  99. "src/opts/*_hsw.cpp",
  100. ])
  101. elif opts == SKIA_OPTS_NEON:
  102. return native.glob([
  103. "src/opts/*_neon.cpp",
  104. ])
  105. elif opts == SKIA_OPTS_CRC32:
  106. return native.glob([
  107. "src/opts/*_crc32.cpp",
  108. ])
  109. else:
  110. fail("skia_opts_srcs parameter 'opts' must be one of SKIA_OPTS_*.")
  111. def opts_cflags(opts):
  112. if opts == SKIA_OPTS_SSE2:
  113. return ["-msse2"]
  114. elif opts == SKIA_OPTS_SSSE3:
  115. return ["-mssse3"]
  116. elif opts == SKIA_OPTS_SSE41:
  117. return ["-msse4.1"]
  118. elif opts == SKIA_OPTS_SSE42:
  119. return ["-msse4.2"]
  120. elif opts == SKIA_OPTS_AVX:
  121. return ["-mavx"]
  122. elif opts == SKIA_OPTS_HSW:
  123. return ["-mavx2", "-mf16c", "-mfma"]
  124. elif opts == SKIA_OPTS_NEON:
  125. return ["-mfpu=neon"]
  126. elif opts == SKIA_OPTS_CRC32:
  127. # NDK r11's Clang (3.8) doesn't pass along this -march setting correctly to an external
  128. # assembler, so we do it manually with -Wa. This is just a bug, fixed in later Clangs.
  129. return ["-march=armv8-a+crc", "-Wa,-march=armv8-a+crc"]
  130. else:
  131. return []
  132. SKIA_CPU_ARM = "ARM"
  133. SKIA_CPU_ARM64 = "ARM64"
  134. SKIA_CPU_X86 = "X86"
  135. SKIA_CPU_OTHER = "OTHER"
  136. def opts_rest_srcs(cpu):
  137. srcs = []
  138. if cpu == SKIA_CPU_ARM or cpu == SKIA_CPU_ARM64:
  139. srcs += native.glob([
  140. "src/opts/*_arm.cpp",
  141. "src/opts/SkBitmapProcState_opts_none.cpp",
  142. ])
  143. if cpu == SKIA_CPU_ARM64:
  144. # NEON doesn't need special flags to compile on ARM64.
  145. srcs += native.glob([
  146. "src/opts/*_neon.cpp",
  147. ])
  148. elif cpu == SKIA_CPU_X86:
  149. srcs += native.glob([
  150. "src/opts/*_x86.cpp",
  151. ])
  152. elif cpu == SKIA_CPU_OTHER:
  153. srcs += native.glob([
  154. "src/opts/*_none.cpp",
  155. ])
  156. else:
  157. fail("opts_rest_srcs parameter 'cpu' must be one of " +
  158. "SKIA_CPU_{ARM,ARM64,X86,OTHER}.")
  159. return srcs
  160. def skia_opts_deps(cpu):
  161. res = [":opts_rest"]
  162. if cpu == SKIA_CPU_ARM:
  163. res += [":opts_neon"]
  164. if cpu == SKIA_CPU_ARM64:
  165. res += [":opts_crc32"]
  166. if cpu == SKIA_CPU_X86:
  167. res += [
  168. ":opts_sse2",
  169. ":opts_ssse3",
  170. ":opts_sse41",
  171. ":opts_sse42",
  172. ":opts_avx",
  173. ":opts_hsw",
  174. ]
  175. return res
  176. ################################################################################
  177. ## BASE_SRCS
  178. ################################################################################
  179. # All platform-independent SRCS.
  180. BASE_SRCS_ALL = struct(
  181. include = [
  182. "include/private/**/*.h",
  183. "src/**/*.h",
  184. "src/**/*.cpp",
  185. "src/**/*.inc",
  186. ],
  187. exclude = [
  188. # Exclude platform-dependent files.
  189. "src/codec/*",
  190. "src/device/xps/*", # Windows-only. Move to ports?
  191. "src/doc/*_XPS.cpp", # Windows-only. Move to ports?
  192. "src/gpu/gl/android/*",
  193. "src/gpu/gl/egl/*",
  194. "src/gpu/gl/glfw/*",
  195. "src/gpu/gl/glx/*",
  196. "src/gpu/gl/iOS/*",
  197. "src/gpu/gl/mac/*",
  198. "src/gpu/gl/win/*",
  199. "src/opts/**/*",
  200. "src/ports/**/*",
  201. "src/utils/android/**/*",
  202. "src/utils/mac/**/*",
  203. "src/utils/win/**/*",
  204. # Exclude multiple definitions.
  205. "src/core/SkPicture_none.cpp",
  206. "src/gpu/GrPathRendering_none.cpp",
  207. "src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp",
  208. "src/gpu/gl/GrGLMakeNativeInterface_none.cpp",
  209. "src/pdf/SkDocument_PDF_None.cpp", # We use src/pdf/SkPDFDocument.cpp.
  210. # Exclude files that don't compile everywhere.
  211. "src/svg/**/*", # Depends on xml, SkJpegCodec, and SkPngCodec.
  212. "src/xml/**/*", # Avoid dragging in expat when not needed.
  213. # Conflicting dependencies among Lua versions. See cl/107087297.
  214. "src/utils/SkLua*",
  215. # Currently exclude all vulkan specific files
  216. "src/gpu/vk/*",
  217. # Currently exclude all Dawn-specific files
  218. "src/gpu/dawn/*",
  219. # Defines main.
  220. "src/sksl/SkSLMain.cpp",
  221. # Only used to regenerate the lexer
  222. "src/sksl/lex/*",
  223. # Atlas text
  224. "src/atlastext/*",
  225. ],
  226. )
  227. def codec_srcs(limited):
  228. """Sources for the codecs. Excludes Raw, and Ico, Webp, and Png if limited."""
  229. # TODO: Enable wuffs in Google3
  230. exclude = ["src/codec/SkWuffsCodec.cpp", "src/codec/*Raw*.cpp"]
  231. if limited:
  232. exclude += [
  233. "src/codec/*Ico*.cpp",
  234. "src/codec/*Webp*.cpp",
  235. "src/codec/*Png*",
  236. ]
  237. return native.glob(["src/codec/*.cpp", "third_party/gif/*.cpp"], exclude = exclude)
  238. GL_SRCS_UNIX = struct(
  239. include = [
  240. "src/gpu/gl/GrGLMakeNativeInterface_none.cpp",
  241. ],
  242. exclude = [],
  243. )
  244. PORTS_SRCS_UNIX = struct(
  245. include = [
  246. "src/ports/**/*.cpp",
  247. "src/ports/**/*.h",
  248. ],
  249. exclude = [
  250. "src/ports/*CG*",
  251. "src/ports/*WIC*",
  252. "src/ports/*android*",
  253. "src/ports/*chromium*",
  254. "src/ports/*mac*",
  255. "src/ports/*mozalloc*",
  256. "src/ports/*nacl*",
  257. "src/ports/*win*",
  258. "src/ports/SkFontMgr_custom_directory_factory.cpp",
  259. "src/ports/SkFontMgr_custom_embedded_factory.cpp",
  260. "src/ports/SkFontMgr_custom_empty_factory.cpp",
  261. "src/ports/SkFontMgr_empty_factory.cpp",
  262. "src/ports/SkFontMgr_fontconfig_factory.cpp",
  263. "src/ports/SkFontMgr_fuchsia.cpp",
  264. "src/ports/SkImageGenerator_none.cpp",
  265. "src/ports/SkTLS_none.cpp",
  266. ],
  267. )
  268. GL_SRCS_ANDROID = struct(
  269. include = [
  270. "src/gpu/gl/android/*.cpp",
  271. ],
  272. exclude = [],
  273. )
  274. PORTS_SRCS_ANDROID = struct(
  275. include = [
  276. "src/ports/**/*.cpp",
  277. "src/ports/**/*.h",
  278. ],
  279. exclude = [
  280. "src/ports/*CG*",
  281. "src/ports/*FontConfig*",
  282. "src/ports/*WIC*",
  283. "src/ports/*chromium*",
  284. "src/ports/*fontconfig*",
  285. "src/ports/*mac*",
  286. "src/ports/*mozalloc*",
  287. "src/ports/*nacl*",
  288. "src/ports/*win*",
  289. "src/ports/SkDebug_stdio.cpp",
  290. "src/ports/SkFontMgr_custom_directory_factory.cpp",
  291. "src/ports/SkFontMgr_custom_embedded_factory.cpp",
  292. "src/ports/SkFontMgr_custom_empty_factory.cpp",
  293. "src/ports/SkFontMgr_empty_factory.cpp",
  294. "src/ports/SkFontMgr_fuchsia.cpp",
  295. "src/ports/SkImageGenerator_none.cpp",
  296. "src/ports/SkTLS_none.cpp",
  297. ],
  298. )
  299. GL_SRCS_IOS = struct(
  300. include = [
  301. "src/gpu/gl/iOS/GrGLMakeNativeInterface_iOS.cpp",
  302. ],
  303. exclude = [],
  304. )
  305. PORTS_SRCS_IOS = struct(
  306. include = [
  307. "src/ports/**/*.cpp",
  308. "src/ports/**/*.h",
  309. "src/utils/mac/*.cpp",
  310. ],
  311. exclude = [
  312. "src/ports/*FontConfig*",
  313. "src/ports/*FreeType*",
  314. "src/ports/*WIC*",
  315. "src/ports/*android*",
  316. "src/ports/*chromium*",
  317. "src/ports/*fontconfig*",
  318. "src/ports/*mozalloc*",
  319. "src/ports/*nacl*",
  320. "src/ports/*win*",
  321. "src/ports/SkFontMgr_custom.cpp",
  322. "src/ports/SkFontMgr_custom_directory.cpp",
  323. "src/ports/SkFontMgr_custom_embedded.cpp",
  324. "src/ports/SkFontMgr_custom_empty.cpp",
  325. "src/ports/SkFontMgr_custom_directory_factory.cpp",
  326. "src/ports/SkFontMgr_custom_embedded_factory.cpp",
  327. "src/ports/SkFontMgr_custom_empty_factory.cpp",
  328. "src/ports/SkFontMgr_empty_factory.cpp",
  329. "src/ports/SkFontMgr_fuchsia.cpp",
  330. "src/ports/SkImageGenerator_none.cpp",
  331. "src/ports/SkTLS_none.cpp",
  332. ],
  333. )
  334. def base_srcs():
  335. return skia_glob(BASE_SRCS_ALL)
  336. def ports_srcs(os_conditions):
  337. return skia_select(
  338. os_conditions,
  339. [
  340. skia_glob(PORTS_SRCS_UNIX),
  341. skia_glob(PORTS_SRCS_ANDROID),
  342. skia_glob(PORTS_SRCS_IOS),
  343. ],
  344. )
  345. def gl_srcs(os_conditions):
  346. return skia_select(
  347. os_conditions,
  348. [
  349. skia_glob(GL_SRCS_UNIX),
  350. skia_glob(GL_SRCS_ANDROID),
  351. skia_glob(GL_SRCS_IOS),
  352. ],
  353. )
  354. def skia_srcs(os_conditions):
  355. return base_srcs() + ports_srcs(os_conditions) + gl_srcs(os_conditions)
  356. ################################################################################
  357. ## INCLUDES
  358. ################################################################################
  359. # Includes needed by Skia implementation. Not public includes.
  360. INCLUDES = [
  361. ".",
  362. "include/android",
  363. "include/c",
  364. "include/codec",
  365. "include/config",
  366. "include/core",
  367. "include/docs",
  368. "include/effects",
  369. "include/encode",
  370. "include/gpu",
  371. "include/pathops",
  372. "include/ports",
  373. "include/private",
  374. "include/third_party/skcms",
  375. "include/utils",
  376. "include/utils/mac",
  377. "src/codec",
  378. "src/core",
  379. "src/gpu",
  380. "src/image",
  381. "src/images",
  382. "src/lazy",
  383. "src/opts",
  384. "src/pdf",
  385. "src/ports",
  386. "src/sfnt",
  387. "src/shaders",
  388. "src/shaders/gradients",
  389. "src/sksl",
  390. "src/utils",
  391. "third_party/gif",
  392. ]
  393. ################################################################################
  394. ## DM_SRCS
  395. ################################################################################
  396. DM_SRCS_ALL = struct(
  397. include = [
  398. "dm/*.cpp",
  399. "dm/*.h",
  400. "experimental/pipe/*.cpp",
  401. "experimental/pipe/*.h",
  402. "experimental/svg/model/*.cpp",
  403. "experimental/svg/model/*.h",
  404. "gm/*.cpp",
  405. "gm/*.h",
  406. "src/utils/SkMultiPictureDocument.cpp",
  407. "src/xml/*.cpp",
  408. "tests/*.cpp",
  409. "tests/*.h",
  410. "tools/AutoreleasePool.h",
  411. "tools/BigPathBench.inc",
  412. "tools/BinaryAsset.h",
  413. "tools/CrashHandler.cpp",
  414. "tools/CrashHandler.h",
  415. "tools/DDLPromiseImageHelper.cpp",
  416. "tools/DDLPromiseImageHelper.h",
  417. "tools/DDLTileHelper.cpp",
  418. "tools/DDLTileHelper.h",
  419. "tools/HashAndEncode.cpp",
  420. "tools/HashAndEncode.h",
  421. "tools/ProcStats.cpp",
  422. "tools/ProcStats.h",
  423. "tools/Registry.h",
  424. "tools/ResourceFactory.h",
  425. "tools/Resources.cpp",
  426. "tools/Resources.h",
  427. "tools/SkMetaData.cpp",
  428. "tools/SkMetaData.h",
  429. "tools/SkSharingProc.cpp",
  430. "tools/SkVMBuilders.cpp",
  431. "tools/SkVMBuilders.h",
  432. "tools/ToolUtils.cpp",
  433. "tools/ToolUtils.h",
  434. "tools/UrlDataManager.cpp",
  435. "tools/UrlDataManager.h",
  436. "tools/debugger/*.cpp",
  437. "tools/debugger/*.h",
  438. "tools/flags/*.cpp",
  439. "tools/flags/*.h",
  440. "tools/fonts/RandomScalerContext.cpp",
  441. "tools/fonts/RandomScalerContext.h",
  442. "tools/fonts/TestFontMgr.cpp",
  443. "tools/fonts/TestFontMgr.h",
  444. "tools/fonts/TestSVGTypeface.cpp",
  445. "tools/fonts/TestSVGTypeface.h",
  446. "tools/fonts/TestTypeface.cpp",
  447. "tools/fonts/TestTypeface.h",
  448. "tools/fonts/ToolUtilsFont.cpp",
  449. "tools/fonts/test_font_index.inc",
  450. "tools/fonts/test_font_monospace.inc",
  451. "tools/fonts/test_font_sans_serif.inc",
  452. "tools/fonts/test_font_serif.inc",
  453. "tools/gpu/**/*.cpp",
  454. "tools/gpu/**/*.h",
  455. "tools/ios_utils.h",
  456. "tools/random_parse_path.cpp",
  457. "tools/random_parse_path.h",
  458. "tools/timer/*.cpp",
  459. "tools/timer/*.h",
  460. "tools/trace/*.cpp",
  461. "tools/trace/*.h",
  462. ],
  463. exclude = [
  464. "gm/cgms.cpp",
  465. "gm/video_decoder.cpp",
  466. "tests/FontMgrAndroidParserTest.cpp", # Android-only.
  467. "tests/FontMgrFontConfigTest.cpp", # FontConfig-only.
  468. "tests/skia_test.cpp", # Old main.
  469. "tools/gpu/atlastext/*",
  470. "tools/gpu/dawn/*",
  471. "tools/gpu/gl/angle/*",
  472. "tools/gpu/gl/egl/*",
  473. "tools/gpu/gl/glx/*",
  474. "tools/gpu/gl/iOS/*",
  475. "tools/gpu/gl/mac/*",
  476. "tools/gpu/gl/win/*",
  477. "tools/timer/SysTimer_mach.cpp",
  478. "tools/timer/SysTimer_windows.cpp",
  479. ],
  480. )
  481. ################################################################################
  482. ## dm_srcs()
  483. ################################################################################
  484. def dm_srcs(os_conditions):
  485. """Sources for the dm binary for the specified os."""
  486. return skia_glob(DM_SRCS_ALL) + skia_select(
  487. os_conditions,
  488. [
  489. ["tests/FontMgrFontConfigTest.cpp"],
  490. ["tests/FontMgrAndroidParserTest.cpp"],
  491. [],
  492. ],
  493. )
  494. ################################################################################
  495. ## DM_ARGS
  496. ################################################################################
  497. def DM_ARGS(asan):
  498. source = ["gm", "image", "lottie"]
  499. # TODO(benjaminwagner): f16, pic-8888, serialize-8888, and tiles_rt-8888 fail.
  500. config = ["565", "8888", "pdf"]
  501. match = ["~Codec_78329453"]
  502. return (["--src"] + source + ["--config"] + config + ["--nonativeFonts"] +
  503. ["--match"] + match)
  504. ################################################################################
  505. ## COPTS
  506. ################################################################################
  507. def base_copts(os_conditions):
  508. return skia_select(
  509. os_conditions,
  510. [
  511. # UNIX
  512. [
  513. "-Wno-implicit-fallthrough", # Some intentional fallthrough.
  514. # Internal use of deprecated methods. :(
  515. "-Wno-deprecated-declarations",
  516. # TODO(kjlubick)
  517. "-Wno-self-assign", # Spurious warning in tests/PathOpsDVectorTest.cpp?
  518. ],
  519. # ANDROID
  520. [
  521. "-Wno-implicit-fallthrough", # Some intentional fallthrough.
  522. # 'GrResourceCache' declared with greater visibility than the
  523. # type of its field 'GrResourceCache::fPurgeableQueue'... bogus.
  524. "-Wno-error=attributes",
  525. ],
  526. # IOS
  527. [
  528. "-Wno-implicit-fallthrough", # Some intentional fallthrough.
  529. ],
  530. ],
  531. )
  532. ################################################################################
  533. ## DEFINES
  534. ################################################################################
  535. def base_defines(os_conditions):
  536. return [
  537. # Chrome DEFINES.
  538. "SK_USE_FREETYPE_EMBOLDEN",
  539. # Turn on a few Google3-specific build fixes.
  540. "SK_BUILD_FOR_GOOGLE3",
  541. # Required for building dm.
  542. "GR_TEST_UTILS",
  543. # Google3 probably doesn't want this feature yet
  544. "SK_DISABLE_REDUCE_OPLIST_SPLITTING",
  545. # Staging flags for API changes
  546. # Should remove after we update golden images
  547. "SK_WEBP_ENCODER_USE_DEFAULT_METHOD",
  548. # Experiment to diagnose image diffs in Google3
  549. "SK_DISABLE_LOWP_RASTER_PIPELINE",
  550. # JPEG is in codec_limited
  551. "SK_HAS_JPEG_LIBRARY",
  552. # Needed for some tests in dm
  553. "SK_ENABLE_SKSL_INTERPRETER",
  554. ] + skia_select(
  555. os_conditions,
  556. [
  557. # UNIX
  558. [
  559. "PNG_SKIP_SETJMP_CHECK",
  560. "SK_BUILD_FOR_UNIX",
  561. "SK_R32_SHIFT=16",
  562. "SK_PDF_USE_SFNTLY",
  563. "SK_HAS_PNG_LIBRARY",
  564. "SK_HAS_WEBP_LIBRARY",
  565. ],
  566. # ANDROID
  567. [
  568. "SK_BUILD_FOR_ANDROID",
  569. "SK_HAS_PNG_LIBRARY",
  570. "SK_HAS_WEBP_LIBRARY",
  571. ],
  572. # IOS
  573. [
  574. "SK_BUILD_FOR_IOS",
  575. "SK_BUILD_NO_OPTS",
  576. "SKNX_NO_SIMD",
  577. ],
  578. ],
  579. )
  580. ################################################################################
  581. ## LINKOPTS
  582. ################################################################################
  583. def base_linkopts(os_conditions):
  584. return [
  585. "-ldl",
  586. ] + skia_select(
  587. os_conditions,
  588. [
  589. # UNIX
  590. [],
  591. # ANDROID
  592. [
  593. "-lEGL",
  594. "-lGLESv2",
  595. ],
  596. # IOS
  597. [
  598. "-framework CoreFoundation",
  599. "-framework CoreGraphics",
  600. "-framework CoreText",
  601. "-framework ImageIO",
  602. "-framework MobileCoreServices",
  603. ],
  604. ],
  605. )
  606. ################################################################################
  607. ## sksg_lib
  608. ################################################################################
  609. def sksg_lib_hdrs():
  610. return native.glob(["modules/sksg/include/*.h"])
  611. def sksg_lib_srcs():
  612. return native.glob([
  613. "modules/sksg/src/*.cpp",
  614. "modules/sksg/src/*.h",
  615. ])
  616. ################################################################################
  617. ## skparagraph_lib
  618. ################################################################################
  619. def skparagraph_lib_hdrs():
  620. return native.glob(["modules/skparagraph/include/*.h"])
  621. def skparagraph_lib_srcs():
  622. return native.glob(["modules/skparagraph/src/*.cpp"])
  623. ################################################################################
  624. ## experimental xform
  625. ################################################################################
  626. def exp_xform_lib_hdrs():
  627. return native.glob(["experimental/xform/*.h"])
  628. def exp_xform_lib_srcs():
  629. return native.glob(["experimental/xform/*.cpp"])
  630. ################################################################################
  631. ## skottie_lib
  632. ################################################################################
  633. def skottie_lib_hdrs():
  634. return native.glob(["modules/skottie/include/*.h"])
  635. def skottie_lib_srcs():
  636. return native.glob(
  637. [
  638. "modules/skottie/src/*.cpp",
  639. "modules/skottie/src/*.h",
  640. "modules/skottie/src/effects/*.cpp",
  641. "modules/skottie/src/effects/*.h",
  642. "modules/skottie/src/layers/*.cpp",
  643. "modules/skottie/src/layers/*.h",
  644. "modules/skottie/src/text/*.cpp",
  645. "modules/skottie/src/text/*.h",
  646. ],
  647. exclude = [
  648. "modules/skottie/src/SkottieTest.cpp",
  649. "modules/skottie/src/SkottieTool.cpp",
  650. ],
  651. )
  652. ################################################################################
  653. ## skottie_shaper
  654. ################################################################################
  655. SKOTTIE_SHAPER_HDRS = [
  656. "modules/skottie/src/text/SkottieShaper.h",
  657. ]
  658. SKOTTIE_SHAPER_SRCS = [
  659. "modules/skottie/src/text/SkottieShaper.cpp",
  660. ]
  661. ################################################################################
  662. ## skottie_tool
  663. ################################################################################
  664. SKOTTIE_TOOL_SRCS = [
  665. "modules/skottie/src/SkottieTool.cpp",
  666. "modules/skottie/utils/SkottieUtils.cpp",
  667. "modules/skottie/utils/SkottieUtils.h",
  668. # TODO(benjaminwagner): Add "flags" target.
  669. "tools/flags/CommandLineFlags.cpp",
  670. "tools/flags/CommandLineFlags.h",
  671. ]
  672. ################################################################################
  673. ## SkShaper
  674. ################################################################################
  675. SKSHAPER_HARFBUZZ_SRCS = [
  676. "modules/skshaper/include/SkShaper.h",
  677. "modules/skshaper/src/SkShaper.cpp",
  678. "modules/skshaper/src/SkShaper_harfbuzz.cpp",
  679. "modules/skshaper/src/SkShaper_primitive.cpp",
  680. ]
  681. SKSHAPER_PRIMITIVE_SRCS = [
  682. "modules/skshaper/include/SkShaper.h",
  683. "modules/skshaper/src/SkShaper.cpp",
  684. "modules/skshaper/src/SkShaper_primitive.cpp",
  685. ]