blob: 12c1a5dc69b7cc0ced49ff220d53d9a7b8ad901a [file] [log] [blame]
benjaminwagner787ca872015-08-17 12:58:10 -07001# Description:
2# Skia graphics library.
3#
4# Definitions for Google BUILD file.
5
6exports_files(["BUILD.public"])
7
8# Platform-independent SRCS
9SRCS = glob(
10 [
mtkleind55d13a2015-08-18 08:51:49 -070011 "include/private/*.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -070012 "src/**/*.h",
13 "src/**/*.cpp",
benjaminwagner787ca872015-08-17 12:58:10 -070014
mtkleind55d13a2015-08-18 08:51:49 -070015 # Third Party
benjaminwagner787ca872015-08-17 12:58:10 -070016 "third_party/etc1/*.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -070017 "third_party/etc1/*.h",
benjaminwagner787ca872015-08-17 12:58:10 -070018 "third_party/ktx/*.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -070019 "third_party/ktx/*.h",
benjaminwagner787ca872015-08-17 12:58:10 -070020 ],
21 exclude = [
benjaminwagner6f6bef82015-10-15 08:09:44 -070022 # Exclude platform-dependent files.
23 "src/device/xps/*", # Windows-only. Move to ports?
24 "src/doc/*_XPS.cpp", # Windows-only. Move to ports?
25 "src/gpu/gl/android/*",
benjaminwagner86ea33e2015-10-26 10:46:25 -070026 "src/gpu/gl/egl/*",
27 "src/gpu/gl/glx/*",
28 "src/gpu/gl/nacl/*",
benjaminwagner6f6bef82015-10-15 08:09:44 -070029 "src/gpu/gl/iOS/*",
30 "src/gpu/gl/mac/*",
31 "src/gpu/gl/win/*",
32 "src/opts/**/*",
33 "src/ports/**/*",
34 "src/utils/android/**/*",
35 "src/utils/mac/**/*",
benjaminwagner6f6bef82015-10-15 08:09:44 -070036 "src/utils/SkThreadUtils_win.cpp", # Windows-only. Move to ports?
37 "src/utils/win/**/*",
38 "src/views/sdl/*",
39 "src/views/win/*",
40 "src/views/unix/*",
41
42 # Exclude multiple definitions.
43 # TODO(mtklein): Move to opts?
mtkleind55d13a2015-08-18 08:51:49 -070044 "src/doc/SkDocument_PDF_None.cpp", # We use SkDocument_PDF.cpp.
benjaminwagner6f6bef82015-10-15 08:09:44 -070045 "src/fonts/*fontconfig*",
benjaminwagner86ea33e2015-10-26 10:46:25 -070046 "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
47 "src/gpu/gl/GrGLDefaultInterface_native.cpp",
48 "src/gpu/gl/GrGLDefaultInterface_none.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -070049
50 # Exclude files that don't compile with the current DEFINES.
benjaminwagneraada3e82015-10-27 09:14:29 -070051 "src/codec/SkJpegCodec.cpp", # libjpeg_turbo version mismatch.
benjaminwagner6f6bef82015-10-15 08:09:44 -070052 "src/gpu/gl/angle/*", # Requires SK_ANGLE define.
53 "src/gpu/gl/command_buffer/*", # unknown type name 'HMODULE'
54 "src/gpu/gl/mesa/*", # Requires SK_MESA define.
55 "src/svg/parser/*", # Missing SkSVG.h.
56
benjaminwagner6f6bef82015-10-15 08:09:44 -070057 # Not used.
58 "src/animator/**/*",
59 "src/views/**/*",
60 "src/xml/SkBML_Verbs.h",
61 "src/xml/SkBML_XMLParser.cpp",
62 "src/xml/SkXMLPullParser.cpp",
63 ],
64)
65
66# Platform-dependent SRCS for google3-default platform.
benjaminwagner86ea33e2015-10-26 10:46:25 -070067SRCS_UNIX = glob(
benjaminwagner6f6bef82015-10-15 08:09:44 -070068 [
benjaminwagner86ea33e2015-10-26 10:46:25 -070069 "src/gpu/gl/GrGLDefaultInterface_native.cpp",
70 "src/gpu/gl/glx/**/*.cpp",
71 "src/gpu/gl/glx/**/*.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -070072 "src/opts/**/*.cpp",
73 "src/opts/**/*.h",
74 "src/ports/**/*.cpp",
75 "src/ports/**/*.h",
76 ],
77 exclude = [
78 "src/opts/*arm*",
79 "src/opts/*mips*",
80 "src/opts/*NEON*",
81 "src/opts/*neon*",
benjaminwagner86ea33e2015-10-26 10:46:25 -070082 # Included in :opts_ssse3 library.
benjaminwagner6f6bef82015-10-15 08:09:44 -070083 "src/opts/*SSSE3*",
84 "src/opts/*ssse3*",
benjaminwagner86ea33e2015-10-26 10:46:25 -070085 # Included in :opts_sse4 library.
benjaminwagner6f6bef82015-10-15 08:09:44 -070086 "src/opts/*SSE4*",
87 "src/opts/*sse4*",
benjaminwagner6f6bef82015-10-15 08:09:44 -070088 "src/opts/SkBitmapProcState_opts_none.cpp",
benjaminwagner86ea33e2015-10-26 10:46:25 -070089 "src/opts/SkBlitMask_opts_none.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -070090 "src/opts/SkBlitRow_opts_none.cpp",
91 "src/ports/*android*",
92 "src/ports/*chromium*",
benjaminwagner6f6bef82015-10-15 08:09:44 -070093 "src/ports/*fontconfig*",
94 "src/ports/*FontConfig*",
95 "src/ports/*mac*",
96 "src/ports/*mozalloc*",
97 "src/ports/*nacl*",
98 "src/ports/*win*",
99 "src/ports/SkFontMgr_custom_embedded_factory.cpp",
100 "src/ports/SkFontMgr_empty_factory.cpp",
benjaminwagner9dbec092015-11-02 05:53:38 -0800101 "src/ports/SkImageDecoder_CG.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700102 "src/ports/SkImageDecoder_WIC.cpp",
103 "src/ports/SkImageDecoder_empty.cpp",
104 "src/ports/SkImageGenerator_none.cpp",
105 "src/ports/SkTLS_none.cpp",
mtkleind55d13a2015-08-18 08:51:49 -0700106 ],
107)
108
benjaminwagner86ea33e2015-10-26 10:46:25 -0700109# Platform-dependent SRCS for google3-default Android.
110SRCS_ANDROID = glob(
111 [
112 # TODO(benjaminwagner): Figure out how to compile with EGL.
113 "src/gpu/gl/GrGLDefaultInterface_none.cpp",
114 "src/gpu/gl/nacl/SkCreatePlatformGLContext_nacl.cpp",
115 "src/opts/**/*.cpp",
116 "src/opts/**/*.h",
117 "src/ports/**/*.cpp",
118 "src/ports/**/*.h",
119 ],
120 exclude = [
121 "src/opts/*mips*",
122 "src/opts/*SSE2*",
123 "src/opts/*SSSE3*",
124 "src/opts/*ssse3*",
125 "src/opts/*SSE4*",
126 "src/opts/*sse4*",
127 "src/opts/*x86*",
128 "src/opts/SkBitmapProcState_opts_none.cpp",
129 "src/opts/SkBlitMask_opts_none.cpp",
130 "src/opts/SkBlitRow_opts_none.cpp",
131 "src/ports/*chromium*",
benjaminwagner86ea33e2015-10-26 10:46:25 -0700132 "src/ports/*fontconfig*",
133 "src/ports/*FontConfig*",
134 "src/ports/*mac*",
135 "src/ports/*mozalloc*",
136 "src/ports/*nacl*",
137 "src/ports/*win*",
138 "src/ports/SkDebug_stdio.cpp",
139 "src/ports/SkFontMgr_custom_directory_factory.cpp",
140 "src/ports/SkFontMgr_custom_embedded_factory.cpp",
141 "src/ports/SkFontMgr_empty_factory.cpp",
benjaminwagner9dbec092015-11-02 05:53:38 -0800142 "src/ports/SkImageDecoder_CG.cpp",
benjaminwagner86ea33e2015-10-26 10:46:25 -0700143 "src/ports/SkImageDecoder_WIC.cpp",
144 "src/ports/SkImageDecoder_empty.cpp",
145 "src/ports/SkImageGenerator_none.cpp",
146 "src/ports/SkTLS_none.cpp",
147 ],
148)
149
iroth8b99ef42015-11-02 11:11:21 -0800150# Platform-dependent SRCS for google3-default iOS.
151SRCS_IOS = glob(
152 [
153 "src/gpu/gl/iOS/GrGLCreateNativeInterface_iOS.cpp",
154 "src/opts/**/*.cpp",
155 "src/opts/**/*.h",
156 "src/ports/**/*.cpp",
157 "src/ports/**/*.h",
158 ],
159 exclude = [
160 "src/opts/*mips*",
161 "src/opts/*NEON*",
162 "src/opts/*neon*",
163 "src/opts/*SSE2*",
164 "src/opts/*SSSE3*",
165 "src/opts/*ssse3*",
166 "src/opts/*SSE4*",
167 "src/opts/*sse4*",
168 "src/opts/*x86*",
169 "src/opts/SkBitmapProcState_opts_none.cpp",
170 "src/opts/SkBlitMask_opts_none.cpp",
171 "src/opts/SkBlitRow_opts_none.cpp",
172 "src/ports/*android*",
173 "src/ports/*chromium*",
174 "src/ports/*fontconfig*",
175 "src/ports/*FontConfig*",
176 "src/ports/*FreeType*",
177 "src/ports/*mozalloc*",
178 "src/ports/*nacl*",
179 "src/ports/*win*",
180 "src/ports/SkDebug_stdio.cpp",
181 "src/ports/SkFontMgr_custom.cpp",
182 "src/ports/SkFontMgr_custom_directory_factory.cpp",
183 "src/ports/SkFontMgr_custom_embedded_factory.cpp",
184 "src/ports/SkFontMgr_empty_factory.cpp",
185 "src/ports/SkImageDecoder_CG.cpp",
186 "src/ports/SkImageDecoder_WIC.cpp",
187 "src/ports/SkImageDecoder_empty.cpp",
188 "src/ports/SkImageGenerator_none.cpp",
189 "src/ports/SkTLS_none.cpp",
190 ],
191)
192
benjaminwagner86ea33e2015-10-26 10:46:25 -0700193PLATFORM_SRCS = select({
194 CONDITION_ANDROID: SRCS_ANDROID,
iroth8b99ef42015-11-02 11:11:21 -0800195 CONDITION_IOS: SRCS_IOS,
benjaminwagner86ea33e2015-10-26 10:46:25 -0700196 "//conditions:default": SRCS_UNIX,
197})
198
mtkleind55d13a2015-08-18 08:51:49 -0700199SRCS_SSSE3 = glob(
200 [
201 "src/opts/*SSSE3*.cpp",
202 "src/opts/*ssse3*.cpp",
203 ],
204)
205
206SRCS_SSE4 = glob(
207 [
208 "src/opts/*SSE4*.cpp",
209 "src/opts/*sse4*.cpp",
benjaminwagner787ca872015-08-17 12:58:10 -0700210 ],
211)
212
213HDRS = glob(
214 [
215 "include/**/*.h",
216 ],
mtkleind55d13a2015-08-18 08:51:49 -0700217 exclude = [
benjaminwagner6f6bef82015-10-15 08:09:44 -0700218 "include/private/**/*",
219
220 # Not used.
221 "include/animator/**/*",
222 "include/views/**/*",
223 "include/xml/SkBML_WXMLParser.h",
224 "include/xml/SkBML_XMLParser.h",
mtkleind55d13a2015-08-18 08:51:49 -0700225 ],
benjaminwagner787ca872015-08-17 12:58:10 -0700226)
227
228# Includes needed by Skia implementation. Not public includes.
229INCLUDES = [
benjaminwagnerfa7e1a02015-11-13 12:27:08 -0800230 "include/android",
benjaminwagner787ca872015-08-17 12:58:10 -0700231 "include/c",
232 "include/codec",
233 "include/config",
234 "include/core",
benjaminwagner787ca872015-08-17 12:58:10 -0700235 "include/effects",
236 "include/gpu",
237 "include/images",
238 "include/pathops",
benjaminwagner787ca872015-08-17 12:58:10 -0700239 "include/pipe",
240 "include/ports",
241 "include/private",
242 "include/utils",
iroth8b99ef42015-11-02 11:11:21 -0800243 "include/utils/mac",
244 "include/utils/win",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700245 "include/svg",
benjaminwagner787ca872015-08-17 12:58:10 -0700246 "include/xml",
benjaminwagnerfa7e1a02015-11-13 12:27:08 -0800247 "src/codec",
benjaminwagner787ca872015-08-17 12:58:10 -0700248 "src/core",
benjaminwagner787ca872015-08-17 12:58:10 -0700249 "src/gpu",
250 "src/image",
251 "src/lazy",
252 "src/opts",
253 "src/pdf",
benjaminwagner787ca872015-08-17 12:58:10 -0700254 "src/sfnt",
255 "src/utils",
256 "third_party/etc1",
257 "third_party/ktx",
258]
259
iroth8b99ef42015-11-02 11:11:21 -0800260# Dependencies.
benjaminwagner86ea33e2015-10-26 10:46:25 -0700261DEPS_UNIX = [
262 ":opts_sse4",
263 ":opts_ssse3",
264]
265
266DEPS_ANDROID = []
267
iroth8b99ef42015-11-02 11:11:21 -0800268DEPS_IOS = []
269
benjaminwagner86ea33e2015-10-26 10:46:25 -0700270DEPS = select({
iroth8b99ef42015-11-02 11:11:21 -0800271 CONDITION_ANDROID: DEPS_ANDROID + EXTERNAL_DEPS_ANDROID,
272 CONDITION_IOS: DEPS_IOS + EXTERNAL_DEPS_IOS,
273 "//conditions:default": DEPS_UNIX + EXTERNAL_DEPS_UNIX,
274}) + EXTERNAL_DEPS_ALL
benjaminwagner86ea33e2015-10-26 10:46:25 -0700275
276# Platform-independent SRCS for DM.
benjaminwagner6f6bef82015-10-15 08:09:44 -0700277DM_SRCS = glob(
278 [
279 "dm/*.cpp",
280 "dm/*.h",
281 "gm/*.c",
282 "gm/*.cpp",
283 "gm/*.h",
284 "tests/*.cpp",
285 "tests/*.h",
286 "tools/CrashHandler.cpp",
287 "tools/CrashHandler.h",
288 "tools/LazyDecodeBitmap.cpp",
289 "tools/LazyDecodeBitmap.h",
290 "tools/ProcStats.cpp",
291 "tools/ProcStats.h",
292 "tools/Resources.cpp",
293 "tools/Resources.h",
benjaminwagner32885142015-10-24 07:55:31 -0700294 "tools/SkBitmapRegionCanvas.cpp",
295 "tools/SkBitmapRegionCanvas.h",
296 "tools/SkBitmapRegionCodec.cpp",
297 "tools/SkBitmapRegionCodec.h",
msarett5cb48852015-11-06 08:56:32 -0800298 "tools/SkBitmapRegionDecoder.cpp",
299 "tools/SkBitmapRegionDecoder.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700300 "tools/SkBitmapRegionSampler.cpp",
301 "tools/SkBitmapRegionSampler.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700302 "tools/flags/*.cpp",
303 "tools/flags/*.h",
benjaminwagner32885142015-10-24 07:55:31 -0700304 "tools/sk_tool_utils.cpp",
305 "tools/sk_tool_utils.h",
306 "tools/sk_tool_utils_font.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700307 "tools/timer/*.cpp",
308 "tools/timer/*.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700309 ],
310 exclude = [
benjaminwagner86ea33e2015-10-26 10:46:25 -0700311 "dm/DMSrcSinkAndroid.cpp", # Android-only.
312 "tests/FontMgrAndroidParserTest.cpp", # Android-only.
313 "tests/PathOpsSkpClipTest.cpp", # Alternate main.
benjaminwagner6f6bef82015-10-15 08:09:44 -0700314 "tests/skia_test.cpp", # Old main.
315 "tests/SkpSkGrTest.cpp", # Alternate main.
benjaminwagner6f6bef82015-10-15 08:09:44 -0700316 "tools/timer/SysTimer_mach.cpp",
benjaminwagner86ea33e2015-10-26 10:46:25 -0700317 "tools/timer/SysTimer_windows.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700318 ],
319)
320
benjaminwagner86ea33e2015-10-26 10:46:25 -0700321DM_SRCS_UNIX = []
322
323DM_SRCS_ANDROID = glob(
324 [
325 # Depends on Android HWUI library that is not available in google3.
326 #"dm/DMSrcSinkAndroid.cpp",
327 "tests/FontMgrAndroidParserTest.cpp",
328 ],
329)
330
331DM_PLATFORM_SRCS = select({
332 CONDITION_ANDROID: DM_SRCS_ANDROID,
333 "//conditions:default": DM_SRCS_UNIX,
334})
335
benjaminwagner6f6bef82015-10-15 08:09:44 -0700336DM_INCLUDES = [
337 "gm",
338 "src/codec",
339 "src/effects",
340 "src/fonts",
341 "src/pathops",
342 "src/pipe/utils",
benjaminwagner86ea33e2015-10-26 10:46:25 -0700343 "src/ports",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700344 "src/utils/debugger",
345 "tests",
346 "tools",
347 "tools/flags",
348 "tools/timer",
349]
350
benjaminwagner86ea33e2015-10-26 10:46:25 -0700351COPTS_ANDROID = [
352 "-mfpu=neon",
353]
354
iroth8b99ef42015-11-02 11:11:21 -0800355COPTS_IOS = [
356]
357
benjaminwagner86ea33e2015-10-26 10:46:25 -0700358COPTS_UNIX = [
benjaminwagner787ca872015-08-17 12:58:10 -0700359 "-Wno-implicit-fallthrough", # Some intentional fallthrough.
benjaminwagner7d974f52015-10-19 13:55:55 -0700360 "-Wno-deprecated-declarations", # Internal use of deprecated methods. :(
benjaminwagner787ca872015-08-17 12:58:10 -0700361]
362
benjaminwagner86ea33e2015-10-26 10:46:25 -0700363COPTS = select({
364 CONDITION_ANDROID: COPTS_ANDROID,
iroth8b99ef42015-11-02 11:11:21 -0800365 CONDITION_IOS: COPTS_IOS,
benjaminwagner86ea33e2015-10-26 10:46:25 -0700366 "//conditions:default": COPTS_UNIX,
367})
368
369DEFINES_ANDROID = [
370 "SK_BUILD_FOR_ANDROID",
371 # TODO(benjaminwagner): Try to get png library updated?
372 "SK_PNG_NO_INDEX_SUPPORTED",
373]
374
iroth8b99ef42015-11-02 11:11:21 -0800375DEFINES_IOS = [
376 "SK_BUILD_FOR_IOS",
377 "SK_IGNORE_ETC1_SUPPORT",
378]
379
benjaminwagner86ea33e2015-10-26 10:46:25 -0700380DEFINES_UNIX = [
381 "SK_BUILD_FOR_UNIX",
382 "SK_SAMPLES_FOR_X",
383]
384
385DEFINES_ALL = [
benjaminwagner787ca872015-08-17 12:58:10 -0700386 # Chrome DEFINES.
387 "SK_USE_FLOATBITS",
388 "SK_USE_FREETYPE_EMBOLDEN",
389 # Turn on a few Google3-specific build fixes.
390 "GOOGLE3",
benjaminwagner787ca872015-08-17 12:58:10 -0700391]
392
benjaminwagner86ea33e2015-10-26 10:46:25 -0700393DEFINES = select({
394 CONDITION_ANDROID: DEFINES_ANDROID,
iroth8b99ef42015-11-02 11:11:21 -0800395 CONDITION_IOS: DEFINES_IOS,
benjaminwagner86ea33e2015-10-26 10:46:25 -0700396 "//conditions:default": DEFINES_UNIX,
397}) + DEFINES_ALL
398
399LINKOPTS = select({
400 CONDITION_ANDROID: [
401 "-ldl",
402 "-lEGL",
403 ],
404 "//conditions:default": ["-ldl"],
405})
benjaminwagner6f6bef82015-10-15 08:09:44 -0700406
407cc_library(
408 name = "opts_ssse3",
409 srcs = SRCS_SSSE3,
410 copts = COPTS + ["-mssse3"],
411 defines = DEFINES,
412 includes = INCLUDES,
benjaminwagner8a3760f2015-10-29 13:40:27 -0700413 deps = EXTERNAL_DEPS_ALL,
benjaminwagner6f6bef82015-10-15 08:09:44 -0700414)
415
416cc_library(
417 name = "opts_sse4",
418 srcs = SRCS_SSE4,
419 copts = COPTS + ["-msse4"],
420 defines = DEFINES,
421 includes = INCLUDES,
benjaminwagner8a3760f2015-10-29 13:40:27 -0700422 deps = EXTERNAL_DEPS_ALL,
benjaminwagner6f6bef82015-10-15 08:09:44 -0700423)
424
425cc_library(
426 name = "skia",
427 srcs = SRCS + PLATFORM_SRCS,
428 hdrs = HDRS,
429 copts = COPTS,
430 defines = DEFINES,
431 includes = INCLUDES,
432 linkopts = LINKOPTS,
433 visibility = [":skia_clients"],
benjaminwagner86ea33e2015-10-26 10:46:25 -0700434 deps = DEPS,
benjaminwagner9dbec092015-11-02 05:53:38 -0800435 alwayslink = 1,
benjaminwagner6f6bef82015-10-15 08:09:44 -0700436)
437
438cc_test(
439 name = "dm",
440 size = "large",
benjaminwagner86ea33e2015-10-26 10:46:25 -0700441 srcs = DM_SRCS + DM_PLATFORM_SRCS,
benjaminwagner6f6bef82015-10-15 08:09:44 -0700442 args = [
443 "--nogpu",
444 "--verbose",
445 # TODO(mtklein): maybe investigate why these fail?
benjaminwagner8a3760f2015-10-29 13:40:27 -0700446 "--match ~FontMgr ~Scalar ~Canvas ~Codec_stripes ~Codec_Dimensions ~Codec ~Stream ~skps ~Math ~RecordDraw_TextBounds",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700447 "--resourcePath %s/resources" % BASE_DIR,
448 "--images %s/resources" % BASE_DIR,
449 ],
450 copts = COPTS,
benjaminwagner964eeba2015-10-20 13:00:48 -0700451 data = glob(["resources/**/*"]),
benjaminwagner6f6bef82015-10-15 08:09:44 -0700452 defines = DEFINES,
453 includes = DM_INCLUDES,
454 deps = DM_EXTERNAL_DEPS + [
455 ":skia",
benjaminwagner8a3760f2015-10-29 13:40:27 -0700456 ] + EXTERNAL_DEPS_ALL,
benjaminwagner6f6bef82015-10-15 08:09:44 -0700457)