1# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
2# vim: set filetype=python:
3# This Source Code Form is subject to the terms of the Mozilla Public
4# License, v. 2.0. If a copy of the MPL was not distributed with this
5# file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7with Files('**'):
8    BUG_COMPONENT = ('Core', 'Canvas: 2D')
9
10with Files('TexUnpackBlob.cpp'):
11    BUG_COMPONENT = ('Core', 'Canvas: WebGL')
12
13with Files('WebGL*'):
14    BUG_COMPONENT = ('Core', 'Canvas: WebGL')
15
16with Files('test/webgl-conf/**'):
17    BUG_COMPONENT = ('Core', 'Canvas: WebGL')
18
19with Files('test/webgl-mochitest/**'):
20    BUG_COMPONENT = ('Core', 'Canvas: WebGL')
21
22with Files('test/reftest/webgl*'):
23    BUG_COMPONENT = ('Core', 'Canvas: WebGL')
24
25with Files('test/chrome/*webgl*'):
26    BUG_COMPONENT = ('Core', 'Canvas: WebGL')
27
28with Files('test/crossorigin/*webgl*'):
29    BUG_COMPONENT = ('Core', 'Canvas: WebGL')
30
31# Change the following line(s) to avoid bug 1081323 (clobber after changing a manifest):
32# * Adjust failure errata for webgl-conf.
33
34MOCHITEST_MANIFESTS += [
35    'test/crash/mochitest.ini',
36    'test/crossorigin/mochitest.ini',
37    'test/mochitest.ini',
38    'test/webgl-conf/generated-mochitest.ini',
39    'test/webgl-mochitest/mochitest.ini',
40]
41
42MOCHITEST_CHROME_MANIFESTS += ['test/chrome/chrome.ini']
43
44EXPORTS += [
45    'nsICanvasRenderingContextInternal.h',
46]
47
48EXPORTS.mozilla.dom += [
49    'BasicRenderingContext2D.h',
50    'CanvasGradient.h',
51    'CanvasPath.h',
52    'CanvasPattern.h',
53    'CanvasRenderingContext2D.h',
54    'CanvasRenderingContextHelper.h',
55    'CanvasUtils.h',
56    'GeneratePlaceholderCanvasData.h',
57    'ImageBitmap.h',
58    'ImageBitmapRenderingContext.h',
59    'ImageBitmapSource.h',
60    'ImageData.h',
61    'ImageUtils.h',
62    'IpdlQueue.h',
63    'OffscreenCanvas.h',
64    'ProducerConsumerQueue.h',
65    'QueueParamTraits.h',
66    'SanitizeRenderer.h',
67    'TextMetrics.h',
68    'WebGLChild.h',
69    'WebGLCommandQueue.h',
70    'WebGLCrossProcessCommandQueue.h',
71    'WebGLIpdl.h',
72    'WebGLParent.h',
73    'WebGLTypes.h',
74    'XRWebGLLayer.h',
75]
76# XRWebGLLayer.h must be exported for use by the generated WebXRBinding.h
77
78# Canvas 2D and common sources
79UNIFIED_SOURCES += [
80    'CanvasImageCache.cpp',
81    'CanvasRenderingContext2D.cpp',
82    'CanvasRenderingContextHelper.cpp',
83    'CanvasUtils.cpp',
84    'ImageBitmap.cpp',
85    'ImageBitmapRenderingContext.cpp',
86    'ImageData.cpp',
87    'OffscreenCanvas.cpp',
88    'XRWebGLLayer.cpp',
89]
90
91SOURCES += [
92    'ImageUtils.cpp',
93]
94
95# WebGL Sources
96UNIFIED_SOURCES += [
97    'CacheInvalidator.cpp',
98    'ClientWebGLContext.cpp',
99    'ClientWebGLExtensions.cpp',
100    'HostWebGLContext.cpp',
101    'Queue.cpp',
102    'TexUnpackBlob.cpp',
103    'WebGL2Context.cpp',
104    'WebGL2ContextBuffers.cpp',
105    'WebGL2ContextFramebuffers.cpp',
106    'WebGL2ContextMRTs.cpp',
107    'WebGL2ContextQueries.cpp',
108    'WebGL2ContextRenderbuffers.cpp',
109    'WebGL2ContextSamplers.cpp',
110    'WebGL2ContextState.cpp',
111    'WebGL2ContextSync.cpp',
112    'WebGL2ContextTransformFeedback.cpp',
113    'WebGL2ContextUniforms.cpp',
114    'WebGLBuffer.cpp',
115    'WebGLChild.cpp',
116    'WebGLContext.cpp',
117    'WebGLContextBuffers.cpp',
118    'WebGLContextDraw.cpp',
119    'WebGLContextExtensions.cpp',
120    'WebGLContextFramebufferOperations.cpp',
121    'WebGLContextGL.cpp',
122    'WebGLContextLossHandler.cpp',
123    'WebGLContextState.cpp',
124    'WebGLContextTextures.cpp',
125    'WebGLContextUtils.cpp',
126    'WebGLContextValidate.cpp',
127    'WebGLContextVertexArray.cpp',
128    'WebGLContextVertices.cpp',
129    'WebGLCrossProcessCommandQueue.cpp',
130    'WebGLExtensionColorBufferFloat.cpp',
131    'WebGLExtensionColorBufferHalfFloat.cpp',
132    'WebGLExtensionCompressedTextureASTC.cpp',
133    'WebGLExtensionCompressedTextureBPTC.cpp',
134    'WebGLExtensionCompressedTextureES3.cpp',
135    'WebGLExtensionCompressedTextureETC1.cpp',
136    'WebGLExtensionCompressedTexturePVRTC.cpp',
137    'WebGLExtensionCompressedTextureRGTC.cpp',
138    'WebGLExtensionCompressedTextureS3TC.cpp',
139    'WebGLExtensionCompressedTextureS3TC_SRGB.cpp',
140    'WebGLExtensionDepthTexture.cpp',
141    'WebGLExtensionDisjointTimerQuery.cpp',
142    'WebGLExtensionDrawBuffers.cpp',
143    'WebGLExtensionEXTColorBufferFloat.cpp',
144    'WebGLExtensionFragDepth.cpp',
145    'WebGLExtensionInstancedArrays.cpp',
146    'WebGLExtensions.cpp',
147    'WebGLExtensionShaderTextureLod.cpp',
148    'WebGLExtensionSRGB.cpp',
149    'WebGLExtensionTextureFloat.cpp',
150    'WebGLExtensionTextureFloatLinear.cpp',
151    'WebGLExtensionTextureHalfFloat.cpp',
152    'WebGLExtensionTextureHalfFloatLinear.cpp',
153    'WebGLFormats.cpp',
154    'WebGLFramebuffer.cpp',
155    'WebGLMemoryTracker.cpp',
156    'WebGLParent.cpp',
157    'WebGLProgram.cpp',
158    'WebGLQuery.cpp',
159    'WebGLRenderbuffer.cpp',
160    'WebGLSampler.cpp',
161    'WebGLShader.cpp',
162    'WebGLShaderValidator.cpp',
163    'WebGLSync.cpp',
164    'WebGLTexelConversions.cpp',
165    'WebGLTexture.cpp',
166    'WebGLTextureUpload.cpp',
167    'WebGLTransformFeedback.cpp',
168    'WebGLValidateStrings.cpp',
169    'WebGLVertexArray.cpp',
170    'WebGLVertexArrayFake.cpp',
171    'WebGLVertexArrayGL.cpp',
172]
173
174SOURCES += [
175    'MurmurHash3.cpp',
176]
177
178IPDL_SOURCES += [
179    'PWebGL.ipdl',
180]
181
182TEST_DIRS += [
183    'gtest',
184]
185
186# Suppress warnings from third-party code.
187if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
188    SOURCES['MurmurHash3.cpp'].flags += ['-Wno-implicit-fallthrough']
189
190LOCAL_INCLUDES += [
191    '/js/xpconnect/wrappers',
192]
193
194include('/ipc/chromium/chromium-config.mozbuild')
195
196
197USE_LIBS += [ 'translator' ] # Grab the Angle shader translator.
198
199FINAL_LIBRARY = 'xul'
200LOCAL_INCLUDES += [
201    '/dom/base',
202    '/dom/html',
203    '/dom/svg',
204    '/dom/workers',
205    '/dom/xul',
206    '/gfx/angle/checkout/include',
207    '/gfx/gl',
208    '/image',
209    '/js/xpconnect/src',
210    '/layout/generic',
211    '/layout/style',
212    '/layout/xul',
213    '/media/libyuv/libyuv/include',
214]
215
216CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
217CXXFLAGS += CONFIG['TK_CFLAGS']
218
219LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
220
221if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
222    CXXFLAGS += ['-Wno-error=shadow']
223
224if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
225    CXXFLAGS += ['-Werror=implicit-int-conversion']
226
227if CONFIG['CC_TYPE'] == 'gcc':
228    CXXFLAGS += ['-Wno-error=unused-result'] # GCC doesn't ignore (void)MustUse();
229