blob: 90526b18a9c82227ac2e96a06c72919cb6ebec96 [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.
51 "src/gpu/gl/angle/*", # Requires SK_ANGLE define.
52 "src/gpu/gl/command_buffer/*", # unknown type name 'HMODULE'
53 "src/gpu/gl/mesa/*", # Requires SK_MESA define.
54 "src/svg/parser/*", # Missing SkSVG.h.
55
benjaminwagner6f6bef82015-10-15 08:09:44 -070056 # Not used.
57 "src/animator/**/*",
58 "src/views/**/*",
59 "src/xml/SkBML_Verbs.h",
60 "src/xml/SkBML_XMLParser.cpp",
61 "src/xml/SkXMLPullParser.cpp",
62 ],
63)
64
65# Platform-dependent SRCS for google3-default platform.
benjaminwagner86ea33e2015-10-26 10:46:25 -070066SRCS_UNIX = glob(
benjaminwagner6f6bef82015-10-15 08:09:44 -070067 [
benjaminwagner86ea33e2015-10-26 10:46:25 -070068 "src/gpu/gl/GrGLDefaultInterface_native.cpp",
69 "src/gpu/gl/glx/**/*.cpp",
70 "src/gpu/gl/glx/**/*.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -070071 "src/opts/**/*.cpp",
72 "src/opts/**/*.h",
73 "src/ports/**/*.cpp",
74 "src/ports/**/*.h",
75 ],
76 exclude = [
77 "src/opts/*arm*",
78 "src/opts/*mips*",
79 "src/opts/*NEON*",
80 "src/opts/*neon*",
benjaminwagner86ea33e2015-10-26 10:46:25 -070081 # Included in :opts_ssse3 library.
benjaminwagner6f6bef82015-10-15 08:09:44 -070082 "src/opts/*SSSE3*",
83 "src/opts/*ssse3*",
benjaminwagner86ea33e2015-10-26 10:46:25 -070084 # Included in :opts_sse4 library.
benjaminwagner6f6bef82015-10-15 08:09:44 -070085 "src/opts/*SSE4*",
86 "src/opts/*sse4*",
benjaminwagner6f6bef82015-10-15 08:09:44 -070087 "src/opts/SkBitmapProcState_opts_none.cpp",
benjaminwagner86ea33e2015-10-26 10:46:25 -070088 "src/opts/SkBlitMask_opts_none.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -070089 "src/opts/SkBlitRow_opts_none.cpp",
90 "src/ports/*android*",
91 "src/ports/*chromium*",
92 "src/ports/*CG*",
93 "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",
101 "src/ports/SkImageDecoder_WIC.cpp",
102 "src/ports/SkImageDecoder_empty.cpp",
103 "src/ports/SkImageGenerator_none.cpp",
104 "src/ports/SkTLS_none.cpp",
mtkleind55d13a2015-08-18 08:51:49 -0700105 ],
106)
107
benjaminwagner86ea33e2015-10-26 10:46:25 -0700108# Platform-dependent SRCS for google3-default Android.
109SRCS_ANDROID = glob(
110 [
111 # TODO(benjaminwagner): Figure out how to compile with EGL.
112 "src/gpu/gl/GrGLDefaultInterface_none.cpp",
113 "src/gpu/gl/nacl/SkCreatePlatformGLContext_nacl.cpp",
114 "src/opts/**/*.cpp",
115 "src/opts/**/*.h",
116 "src/ports/**/*.cpp",
117 "src/ports/**/*.h",
118 ],
119 exclude = [
120 "src/opts/*mips*",
121 "src/opts/*SSE2*",
122 "src/opts/*SSSE3*",
123 "src/opts/*ssse3*",
124 "src/opts/*SSE4*",
125 "src/opts/*sse4*",
126 "src/opts/*x86*",
127 "src/opts/SkBitmapProcState_opts_none.cpp",
128 "src/opts/SkBlitMask_opts_none.cpp",
129 "src/opts/SkBlitRow_opts_none.cpp",
130 "src/ports/*chromium*",
131 "src/ports/*CG*",
132 "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",
142 "src/ports/SkImageDecoder_WIC.cpp",
143 "src/ports/SkImageDecoder_empty.cpp",
144 "src/ports/SkImageGenerator_none.cpp",
145 "src/ports/SkTLS_none.cpp",
146 ],
147)
148
149PLATFORM_SRCS = select({
150 CONDITION_ANDROID: SRCS_ANDROID,
151 "//conditions:default": SRCS_UNIX,
152})
153
mtkleind55d13a2015-08-18 08:51:49 -0700154SRCS_SSSE3 = glob(
155 [
156 "src/opts/*SSSE3*.cpp",
157 "src/opts/*ssse3*.cpp",
158 ],
159)
160
161SRCS_SSE4 = glob(
162 [
163 "src/opts/*SSE4*.cpp",
164 "src/opts/*sse4*.cpp",
benjaminwagner787ca872015-08-17 12:58:10 -0700165 ],
166)
167
168HDRS = glob(
169 [
170 "include/**/*.h",
171 ],
mtkleind55d13a2015-08-18 08:51:49 -0700172 exclude = [
benjaminwagner6f6bef82015-10-15 08:09:44 -0700173 "include/private/**/*",
174
175 # Not used.
176 "include/animator/**/*",
177 "include/views/**/*",
178 "include/xml/SkBML_WXMLParser.h",
179 "include/xml/SkBML_XMLParser.h",
mtkleind55d13a2015-08-18 08:51:49 -0700180 ],
benjaminwagner787ca872015-08-17 12:58:10 -0700181)
182
183# Includes needed by Skia implementation. Not public includes.
184INCLUDES = [
benjaminwagner787ca872015-08-17 12:58:10 -0700185 "include/c",
186 "include/codec",
187 "include/config",
188 "include/core",
benjaminwagner787ca872015-08-17 12:58:10 -0700189 "include/effects",
190 "include/gpu",
191 "include/images",
192 "include/pathops",
benjaminwagner787ca872015-08-17 12:58:10 -0700193 "include/pipe",
194 "include/ports",
195 "include/private",
196 "include/utils",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700197 "include/svg",
benjaminwagner787ca872015-08-17 12:58:10 -0700198 "include/xml",
199 "src/core",
benjaminwagner787ca872015-08-17 12:58:10 -0700200 "src/gpu",
201 "src/image",
202 "src/lazy",
203 "src/opts",
204 "src/pdf",
benjaminwagner787ca872015-08-17 12:58:10 -0700205 "src/sfnt",
206 "src/utils",
207 "third_party/etc1",
208 "third_party/ktx",
209]
210
benjaminwagner86ea33e2015-10-26 10:46:25 -0700211DEPS_UNIX = [
212 ":opts_sse4",
213 ":opts_ssse3",
214]
215
216DEPS_ANDROID = []
217
218DEPS = select({
219 CONDITION_ANDROID: DEPS_ANDROID + EXTERNAL_DEPS_ANDROID,
220 "//conditions:default": DEPS_UNIX + EXTERNAL_DEPS_UNIX,
221})
222
223# Platform-independent SRCS for DM.
benjaminwagner6f6bef82015-10-15 08:09:44 -0700224DM_SRCS = glob(
225 [
226 "dm/*.cpp",
227 "dm/*.h",
228 "gm/*.c",
229 "gm/*.cpp",
230 "gm/*.h",
231 "tests/*.cpp",
232 "tests/*.h",
233 "tools/CrashHandler.cpp",
234 "tools/CrashHandler.h",
235 "tools/LazyDecodeBitmap.cpp",
236 "tools/LazyDecodeBitmap.h",
237 "tools/ProcStats.cpp",
238 "tools/ProcStats.h",
239 "tools/Resources.cpp",
240 "tools/Resources.h",
benjaminwagner32885142015-10-24 07:55:31 -0700241 "tools/SkBitmapRegionCanvas.cpp",
242 "tools/SkBitmapRegionCanvas.h",
243 "tools/SkBitmapRegionCodec.cpp",
244 "tools/SkBitmapRegionCodec.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700245 "tools/SkBitmapRegionDecoderInterface.cpp",
246 "tools/SkBitmapRegionDecoderInterface.h",
247 "tools/SkBitmapRegionSampler.cpp",
248 "tools/SkBitmapRegionSampler.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700249 "tools/flags/*.cpp",
250 "tools/flags/*.h",
benjaminwagner32885142015-10-24 07:55:31 -0700251 "tools/sk_tool_utils.cpp",
252 "tools/sk_tool_utils.h",
253 "tools/sk_tool_utils_font.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700254 "tools/timer/*.cpp",
255 "tools/timer/*.h",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700256 ],
257 exclude = [
benjaminwagner86ea33e2015-10-26 10:46:25 -0700258 "dm/DMSrcSinkAndroid.cpp", # Android-only.
259 "tests/FontMgrAndroidParserTest.cpp", # Android-only.
260 "tests/PathOpsSkpClipTest.cpp", # Alternate main.
benjaminwagner6f6bef82015-10-15 08:09:44 -0700261 "tests/skia_test.cpp", # Old main.
262 "tests/SkpSkGrTest.cpp", # Alternate main.
benjaminwagner6f6bef82015-10-15 08:09:44 -0700263 "tools/timer/SysTimer_mach.cpp",
benjaminwagner86ea33e2015-10-26 10:46:25 -0700264 "tools/timer/SysTimer_windows.cpp",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700265 ],
266)
267
benjaminwagner86ea33e2015-10-26 10:46:25 -0700268DM_SRCS_UNIX = []
269
270DM_SRCS_ANDROID = glob(
271 [
272 # Depends on Android HWUI library that is not available in google3.
273 #"dm/DMSrcSinkAndroid.cpp",
274 "tests/FontMgrAndroidParserTest.cpp",
275 ],
276)
277
278DM_PLATFORM_SRCS = select({
279 CONDITION_ANDROID: DM_SRCS_ANDROID,
280 "//conditions:default": DM_SRCS_UNIX,
281})
282
benjaminwagner6f6bef82015-10-15 08:09:44 -0700283DM_INCLUDES = [
284 "gm",
285 "src/codec",
286 "src/effects",
287 "src/fonts",
288 "src/pathops",
289 "src/pipe/utils",
benjaminwagner86ea33e2015-10-26 10:46:25 -0700290 "src/ports",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700291 "src/utils/debugger",
292 "tests",
293 "tools",
294 "tools/flags",
295 "tools/timer",
296]
297
benjaminwagner86ea33e2015-10-26 10:46:25 -0700298COPTS_ANDROID = [
299 "-mfpu=neon",
300]
301
302COPTS_UNIX = [
benjaminwagner787ca872015-08-17 12:58:10 -0700303 "-Wno-implicit-fallthrough", # Some intentional fallthrough.
benjaminwagner7d974f52015-10-19 13:55:55 -0700304 "-Wno-deprecated-declarations", # Internal use of deprecated methods. :(
benjaminwagner787ca872015-08-17 12:58:10 -0700305]
306
benjaminwagner86ea33e2015-10-26 10:46:25 -0700307COPTS = select({
308 CONDITION_ANDROID: COPTS_ANDROID,
309 "//conditions:default": COPTS_UNIX,
310})
311
312DEFINES_ANDROID = [
313 "SK_BUILD_FOR_ANDROID",
314 # TODO(benjaminwagner): Try to get png library updated?
315 "SK_PNG_NO_INDEX_SUPPORTED",
316]
317
318DEFINES_UNIX = [
319 "SK_BUILD_FOR_UNIX",
320 "SK_SAMPLES_FOR_X",
321]
322
323DEFINES_ALL = [
benjaminwagner787ca872015-08-17 12:58:10 -0700324 # It'd be nice for fastbuild, dbg -> SK_DEBUG, opt -> SK_RELEASE.
325 "SK_RELEASE",
326 # Chrome DEFINES.
327 "SK_USE_FLOATBITS",
328 "SK_USE_FREETYPE_EMBOLDEN",
329 # Turn on a few Google3-specific build fixes.
330 "GOOGLE3",
benjaminwagner787ca872015-08-17 12:58:10 -0700331]
332
benjaminwagner86ea33e2015-10-26 10:46:25 -0700333DEFINES = select({
334 CONDITION_ANDROID: DEFINES_ANDROID,
335 "//conditions:default": DEFINES_UNIX,
336}) + DEFINES_ALL
337
338LINKOPTS = select({
339 CONDITION_ANDROID: [
340 "-ldl",
341 "-lEGL",
342 ],
343 "//conditions:default": ["-ldl"],
344})
benjaminwagner6f6bef82015-10-15 08:09:44 -0700345
346cc_library(
347 name = "opts_ssse3",
348 srcs = SRCS_SSSE3,
349 copts = COPTS + ["-mssse3"],
350 defines = DEFINES,
351 includes = INCLUDES,
352)
353
354cc_library(
355 name = "opts_sse4",
356 srcs = SRCS_SSE4,
357 copts = COPTS + ["-msse4"],
358 defines = DEFINES,
359 includes = INCLUDES,
360)
361
362cc_library(
363 name = "skia",
364 srcs = SRCS + PLATFORM_SRCS,
365 hdrs = HDRS,
366 copts = COPTS,
367 defines = DEFINES,
368 includes = INCLUDES,
369 linkopts = LINKOPTS,
370 visibility = [":skia_clients"],
benjaminwagner86ea33e2015-10-26 10:46:25 -0700371 deps = DEPS,
benjaminwagner6f6bef82015-10-15 08:09:44 -0700372)
373
374cc_test(
375 name = "dm",
376 size = "large",
benjaminwagner86ea33e2015-10-26 10:46:25 -0700377 srcs = DM_SRCS + DM_PLATFORM_SRCS,
benjaminwagner6f6bef82015-10-15 08:09:44 -0700378 args = [
379 "--nogpu",
380 "--verbose",
381 # TODO(mtklein): maybe investigate why these fail?
benjaminwagner4d5de042015-10-21 13:07:07 -0700382 "--match ~FontMgr ~Scalar ~Canvas ~Codec_stripes ~Codec_Dimensions ~Codec ~Stream ~skps ~Math",
benjaminwagner6f6bef82015-10-15 08:09:44 -0700383 "--resourcePath %s/resources" % BASE_DIR,
384 "--images %s/resources" % BASE_DIR,
385 ],
386 copts = COPTS,
benjaminwagner964eeba2015-10-20 13:00:48 -0700387 data = glob(["resources/**/*"]),
benjaminwagner6f6bef82015-10-15 08:09:44 -0700388 defines = DEFINES,
389 includes = DM_INCLUDES,
390 deps = DM_EXTERNAL_DEPS + [
391 ":skia",
392 ],
393)