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", "Graphics: Layers")
9
10with Files("apz/**"):
11    BUG_COMPONENT = ("Core", "Panning and Zooming")
12
13EXPORTS += [
14    "composite/CompositableHost.h",
15    "CompositorTypes.h",
16    "D3D9SurfaceImage.h",
17    "FrameMetrics.h",
18    "GLImages.h",
19    "GPUVideoImage.h",
20    "ImageContainer.h",
21    "ImageTypes.h",
22    "IMFYCbCrImage.h",
23    "Layers.h",
24    "LayersTypes.h",
25    "LayerUserData.h",
26    "opengl/OGLShaderConfig.h",
27    "opengl/OGLShaderProgram.h",
28]
29
30if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
31    SOURCES += [
32        "D3D11ShareHandleImage.cpp",
33        "D3D11TextureIMFSampleImage.cpp",
34        "D3D11YCbCrImage.cpp",
35    ]
36    UNIFIED_SOURCES += [
37        "D3D9SurfaceImage.cpp",
38        "IMFYCbCrImage.cpp",
39    ]
40    if CONFIG["MOZ_ENABLE_D3D10_LAYER"]:
41        EXPORTS.mozilla.layers += [
42            "d3d11/CompositorD3D11.h",
43            "d3d11/DeviceAttachmentsD3D11.h",
44            "d3d11/HelpersD3D11.h",
45            "d3d11/ShaderDefinitionsD3D11.h",
46            "d3d11/TextureD3D11.h",
47        ]
48        UNIFIED_SOURCES += [
49            "d3d11/TextureD3D11.cpp",
50        ]
51        SOURCES += [
52            "d3d11/CompositorD3D11.cpp",
53            "d3d11/DeviceAttachmentsD3D11.cpp",
54        ]
55
56EXPORTS.gfxipc += [
57    "ipc/ShadowLayerUtils.h",
58    "ipc/SurfaceDescriptor.h",
59]
60
61EXPORTS.mozilla.dom += [
62    "apz/util/CheckerboardReportService.h",
63]
64
65EXPORTS.mozilla.gfx += [
66    "BuildConstants.h",
67]
68
69EXPORTS.mozilla.layers += [
70    "AnimationHelper.h",
71    "AnimationInfo.h",
72    "AnimationStorageData.h",
73    "apz/public/APZInputBridge.h",
74    "apz/public/APZPublicUtils.h",
75    "apz/public/APZSampler.h",
76    "apz/public/APZUpdater.h",
77    "apz/public/CompositorController.h",
78    "apz/public/GeckoContentController.h",
79    "apz/public/GeckoContentControllerTypes.h",
80    "apz/public/IAPZCTreeManager.h",
81    "apz/public/MatrixMessage.h",
82    # exporting things from apz/src is temporary until we extract a
83    # proper interface for the code there
84    "apz/src/APZUtils.h",
85    "apz/src/AsyncDragMetrics.h",
86    "apz/src/FocusTarget.h",
87    "apz/src/KeyboardMap.h",
88    "apz/src/KeyboardScrollAction.h",
89    "apz/testutil/APZTestData.h",
90    "apz/util/ActiveElementManager.h",
91    "apz/util/APZCCallbackHelper.h",
92    "apz/util/APZEventState.h",
93    "apz/util/APZTaskRunnable.h",
94    "apz/util/APZThreadUtils.h",
95    "apz/util/ChromeProcessController.h",
96    "apz/util/ContentProcessController.h",
97    "apz/util/DoubleTapToZoom.h",
98    "apz/util/InputAPZContext.h",
99    "apz/util/ScrollingInteractionContext.h",
100    "apz/util/ScrollLinkedEffectDetector.h",
101    "apz/util/TouchActionHelper.h",
102    "apz/util/TouchCounter.h",
103    "AtomicRefCountedWithFinalize.h",
104    "AxisPhysicsModel.h",
105    "AxisPhysicsMSDModel.h",
106    "BSPTree.h",
107    "BufferTexture.h",
108    "BuildConstants.h",
109    "CanvasDrawEventRecorder.h",
110    "CanvasRenderer.h",
111    "client/CanvasClient.h",
112    "client/CompositableClient.h",
113    "client/GPUVideoTextureClient.h",
114    "client/ImageClient.h",
115    "client/TextureClient.h",
116    "client/TextureClientPool.h",
117    "client/TextureClientRecycleAllocator.h",
118    "client/TextureClientSharedSurface.h",
119    "client/TextureRecorded.h",
120    "composite/Diagnostics.h",
121    "composite/FrameUniformityData.h",
122    "composite/GPUVideoTextureHost.h",
123    "composite/ImageComposite.h",
124    "composite/TextureHost.h",
125    "CompositionRecorder.h",
126    "Compositor.h",
127    "CompositorAnimationStorage.h",
128    "CompositorTypes.h",
129    "D3D11ShareHandleImage.h",
130    "D3D11TextureIMFSampleImage.h",
131    "D3D11YCbCrImage.h",
132    "D3D9SurfaceImage.h",
133    "DirectionUtils.h",
134    "Effects.h",
135    "ImageDataSerializer.h",
136    "ipc/APZChild.h",
137    "ipc/APZCTreeManagerChild.h",
138    "ipc/APZCTreeManagerParent.h",
139    "ipc/APZInputBridgeChild.h",
140    "ipc/APZInputBridgeParent.h",
141    "ipc/CanvasChild.h",
142    "ipc/CanvasThread.h",
143    "ipc/CanvasTranslator.h",
144    "ipc/CompositableForwarder.h",
145    "ipc/CompositableInProcessManager.h",
146    "ipc/CompositableTransactionParent.h",
147    "ipc/CompositorBridgeChild.h",
148    "ipc/CompositorBridgeParent.h",
149    "ipc/CompositorManagerChild.h",
150    "ipc/CompositorManagerParent.h",
151    "ipc/CompositorThread.h",
152    "ipc/CompositorVsyncScheduler.h",
153    "ipc/CompositorVsyncSchedulerOwner.h",
154    "ipc/ContentCompositorBridgeParent.h",
155    "ipc/ImageBridgeChild.h",
156    "ipc/ImageBridgeParent.h",
157    "ipc/ISurfaceAllocator.h",
158    "ipc/KnowsCompositor.h",
159    "ipc/LayerAnimationUtils.h",
160    "ipc/LayersMessageUtils.h",
161    "ipc/LayerTreeOwnerTracker.h",
162    "ipc/RefCountedShmem.h",
163    "ipc/RemoteContentController.h",
164    "ipc/SharedPlanarYCbCrImage.h",
165    "ipc/SharedRGBImage.h",
166    "ipc/SharedSurfacesChild.h",
167    "ipc/SharedSurfacesMemoryReport.h",
168    "ipc/SharedSurfacesParent.h",
169    "ipc/SynchronousTask.h",
170    "ipc/TextureForwarder.h",
171    "ipc/UiCompositorControllerChild.h",
172    "ipc/UiCompositorControllerMessageTypes.h",
173    "ipc/UiCompositorControllerParent.h",
174    "ipc/VideoBridgeChild.h",
175    "ipc/VideoBridgeParent.h",
176    "ipc/VideoBridgeUtils.h",
177    "LayerAttributes.h",
178    "LayersTypes.h",
179    "MemoryPressureObserver.h",
180    "NativeLayer.h",
181    "OOPCanvasRenderer.h",
182    "opengl/CompositingRenderTargetOGL.h",
183    "opengl/CompositorOGL.h",
184    "opengl/MacIOSurfaceTextureClientOGL.h",
185    "opengl/MacIOSurfaceTextureHostOGL.h",
186    "opengl/TextureClientOGL.h",
187    "opengl/TextureHostOGL.h",
188    "PersistentBufferProvider.h",
189    "ProfilerScreenshots.h",
190    "RepaintRequest.h",
191    "SampleTime.h",
192    "ScreenshotGrabber.h",
193    "ScrollableLayerGuid.h",
194    "ShareableCanvasRenderer.h",
195    "SourceSurfaceSharedData.h",
196    "SurfacePool.h",
197    "SyncObject.h",
198    "TextureSourceProvider.h",
199    "TextureWrapperImage.h",
200    "TransactionIdAllocator.h",
201    "TreeTraversal.h",
202    "UpdateImageHelper.h",
203    "wr/AsyncImagePipelineManager.h",
204    "wr/ClipManager.h",
205    "wr/DisplayItemCache.h",
206    "wr/HitTestInfoManager.h",
207    "wr/IpcResourceUpdateQueue.h",
208    "wr/OMTAController.h",
209    "wr/OMTASampler.h",
210    "wr/RenderRootStateManager.h",
211    "wr/RenderRootTypes.h",
212    "wr/StackingContextHelper.h",
213    "wr/WebRenderBridgeChild.h",
214    "wr/WebRenderBridgeParent.h",
215    "wr/WebRenderCanvasRenderer.h",
216    "wr/WebRenderCommandBuilder.h",
217    "wr/WebRenderDrawEventRecorder.h",
218    "wr/WebRenderImageHost.h",
219    "wr/WebRenderLayerManager.h",
220    "wr/WebRenderMessageUtils.h",
221    "wr/WebRenderScrollData.h",
222    "wr/WebRenderScrollDataWrapper.h",
223    "wr/WebRenderTextureHost.h",
224    "wr/WebRenderUserData.h",
225    "ZoomConstraints.h",
226]
227
228if CONFIG["MOZ_WAYLAND"]:
229    EXPORTS.mozilla.layers += [
230        "DMABUFSurfaceImage.h",
231        "NativeLayerWayland.h",
232        "opengl/DMABUFTextureClientOGL.h",
233        "opengl/DMABUFTextureHostOGL.h",
234        "SurfacePoolWayland.h",
235    ]
236    UNIFIED_SOURCES += [
237        "NativeLayerWayland.cpp",
238        "SurfacePoolWayland.cpp",
239    ]
240    SOURCES += [
241        "DMABUFSurfaceImage.cpp",
242        "opengl/DMABUFTextureClientOGL.cpp",
243        "opengl/DMABUFTextureHostOGL.cpp",
244    ]
245
246if CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
247    REQUIRES_UNIFIED_BUILD = True
248    EXPORTS.mozilla.layers += [
249        "NativeLayerCA.h",
250        "SurfacePoolCA.h",
251    ]
252    EXPORTS += [
253        "MacIOSurfaceHelpers.h",
254        "MacIOSurfaceImage.h",
255    ]
256    UNIFIED_SOURCES += [
257        "NativeLayerCA.mm",
258        "SurfacePoolCA.mm",
259    ]
260    SOURCES += [
261        "MacIOSurfaceHelpers.cpp",
262        "MacIOSurfaceImage.cpp",
263    ]
264    OS_LIBS += [
265        "-framework IOSurface",
266    ]
267
268if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
269    EXPORTS.mozilla.layers += [
270        "AndroidHardwareBuffer.h",
271    ]
272    UNIFIED_SOURCES += [
273        "AndroidHardwareBuffer.cpp",
274        "apz/src/AndroidAPZ.cpp",
275        "apz/src/AndroidFlingPhysics.cpp",
276        "apz/src/AndroidVelocityTracker.cpp",
277    ]
278
279UNIFIED_SOURCES += [
280    "AnimationHelper.cpp",
281    "AnimationInfo.cpp",
282    "apz/src/APZCTreeManager.cpp",
283    "apz/src/APZInputBridge.cpp",
284    "apz/src/APZPublicUtils.cpp",
285    "apz/src/APZSampler.cpp",
286    "apz/src/APZUpdater.cpp",
287    "apz/src/APZUtils.cpp",
288    "apz/src/AsyncPanZoomController.cpp",
289    "apz/src/AutoscrollAnimation.cpp",
290    "apz/src/Axis.cpp",
291    "apz/src/CheckerboardEvent.cpp",
292    "apz/src/DragTracker.cpp",
293    "apz/src/ExpectedGeckoMetrics.cpp",
294    "apz/src/FlingAccelerator.cpp",
295    "apz/src/FocusState.cpp",
296    "apz/src/FocusTarget.cpp",
297    "apz/src/GenericScrollAnimation.cpp",
298    "apz/src/GestureEventListener.cpp",
299    "apz/src/HitTestingTreeNode.cpp",
300    "apz/src/IAPZHitTester.cpp",
301    "apz/src/InputBlockState.cpp",
302    "apz/src/InputQueue.cpp",
303    "apz/src/KeyboardMap.cpp",
304    "apz/src/KeyboardScrollAction.cpp",
305    "apz/src/OverscrollHandoffState.cpp",
306    "apz/src/PotentialCheckerboardDurationTracker.cpp",
307    "apz/src/QueuedInput.cpp",
308    "apz/src/SampledAPZCState.cpp",
309    "apz/src/ScrollThumbUtils.cpp",
310    "apz/src/SimpleVelocityTracker.cpp",
311    "apz/src/SmoothMsdScrollAnimation.cpp",
312    "apz/src/SmoothScrollAnimation.cpp",
313    "apz/src/WheelScrollAnimation.cpp",
314    "apz/src/WRHitTester.cpp",
315    "apz/testutil/APZTestData.cpp",
316    "apz/util/ActiveElementManager.cpp",
317    "apz/util/APZCCallbackHelper.cpp",
318    "apz/util/APZEventState.cpp",
319    "apz/util/APZTaskRunnable.cpp",
320    "apz/util/APZThreadUtils.cpp",
321    "apz/util/CheckerboardReportService.cpp",
322    "apz/util/ChromeProcessController.cpp",
323    "apz/util/ContentProcessController.cpp",
324    "apz/util/DoubleTapToZoom.cpp",
325    "apz/util/InputAPZContext.cpp",
326    "apz/util/ScrollingInteractionContext.cpp",
327    "apz/util/ScrollLinkedEffectDetector.cpp",
328    "apz/util/TouchActionHelper.cpp",
329    "apz/util/TouchCounter.cpp",
330    "AxisPhysicsModel.cpp",
331    "AxisPhysicsMSDModel.cpp",
332    "BSPTree.cpp",
333    "BufferTexture.cpp",
334    "CanvasDrawEventRecorder.cpp",
335    "CanvasRenderer.cpp",
336    "client/CanvasClient.cpp",
337    "client/CompositableClient.cpp",
338    "client/GPUVideoTextureClient.cpp",
339    "client/ImageClient.cpp",
340    "client/TextureClientPool.cpp",
341    "client/TextureClientRecycleAllocator.cpp",
342    "client/TextureClientSharedSurface.cpp",
343    "client/TextureRecorded.cpp",
344    "composite/CompositableHost.cpp",
345    "composite/FrameUniformityData.cpp",
346    "composite/GPUVideoTextureHost.cpp",
347    "composite/ImageComposite.cpp",
348    "CompositionRecorder.cpp",
349    "Compositor.cpp",
350    "CompositorAnimationStorage.cpp",
351    "CompositorTypes.cpp",
352    "Effects.cpp",
353    "FrameMetrics.cpp",
354    "GLImages.cpp",
355    "ImageDataSerializer.cpp",
356    "ipc/APZChild.cpp",
357    "ipc/APZCTreeManagerChild.cpp",
358    "ipc/APZCTreeManagerParent.cpp",
359    "ipc/APZInputBridgeChild.cpp",
360    "ipc/APZInputBridgeParent.cpp",
361    "ipc/CanvasChild.cpp",
362    "ipc/CanvasThread.cpp",
363    "ipc/CanvasTranslator.cpp",
364    "ipc/CompositableForwarder.cpp",
365    "ipc/CompositableInProcessManager.cpp",
366    "ipc/CompositableTransactionParent.cpp",
367    "ipc/CompositorBench.cpp",
368    "ipc/CompositorBridgeChild.cpp",
369    "ipc/CompositorBridgeParent.cpp",
370    "ipc/CompositorManagerChild.cpp",
371    "ipc/CompositorManagerParent.cpp",
372    "ipc/CompositorThread.cpp",
373    "ipc/CompositorVsyncScheduler.cpp",
374    "ipc/ContentCompositorBridgeParent.cpp",
375    "ipc/ImageBridgeChild.cpp",
376    "ipc/ImageBridgeParent.cpp",
377    "ipc/ISurfaceAllocator.cpp",
378    "ipc/KnowsCompositor.cpp",
379    "ipc/LayerAnimationUtils.cpp",
380    "ipc/LayerTreeOwnerTracker.cpp",
381    "ipc/RefCountedShmem.cpp",
382    "ipc/RemoteContentController.cpp",
383    "ipc/SharedPlanarYCbCrImage.cpp",
384    "ipc/SharedRGBImage.cpp",
385    "ipc/SharedSurfacesChild.cpp",
386    "ipc/SharedSurfacesParent.cpp",
387    "ipc/UiCompositorControllerChild.cpp",
388    "ipc/UiCompositorControllerParent.cpp",
389    "ipc/VideoBridgeChild.cpp",
390    "ipc/VideoBridgeParent.cpp",
391    "Layers.cpp",
392    "LayersTypes.cpp",
393    "MemoryPressureObserver.cpp",
394    "opengl/CompositingRenderTargetOGL.cpp",
395    "opengl/CompositorOGL.cpp",
396    "opengl/OGLShaderProgram.cpp",
397    "opengl/TextureClientOGL.cpp",
398    "opengl/TextureHostOGL.cpp",
399    "ProfilerScreenshots.cpp",
400    "RepaintRequest.cpp",
401    "SampleTime.cpp",
402    "ScreenshotGrabber.cpp",
403    "ScrollableLayerGuid.cpp",
404    "ShareableCanvasRenderer.cpp",
405    "SourceSurfaceSharedData.cpp",
406    "SyncObject.cpp",
407    "TextureSourceProvider.cpp",
408    "TextureWrapperImage.cpp",
409    "wr/AsyncImagePipelineManager.cpp",
410    "wr/ClipManager.cpp",
411    "wr/DisplayItemCache.cpp",
412    "wr/HitTestInfoManager.cpp",
413    "wr/IpcResourceUpdateQueue.cpp",
414    "wr/OMTAController.cpp",
415    "wr/OMTASampler.cpp",
416    "wr/RenderRootStateManager.cpp",
417    "wr/RenderRootTypes.cpp",
418    "wr/StackingContextHelper.cpp",
419    "wr/WebRenderBridgeChild.cpp",
420    "wr/WebRenderBridgeParent.cpp",
421    "wr/WebRenderCanvasRenderer.cpp",
422    "wr/WebRenderCommandBuilder.cpp",
423    "wr/WebRenderDrawEventRecorder.cpp",
424    "wr/WebRenderImageHost.cpp",
425    "wr/WebRenderLayerManager.cpp",
426    "wr/WebRenderScrollData.cpp",
427    "wr/WebRenderUserData.cpp",
428    "ZoomConstraints.cpp",
429    # XXX here are some unified build error.
430    #'wr/WebRenderTextureHost.cpp'
431]
432
433SOURCES += [
434    "client/TextureClient.cpp",
435    "composite/TextureHost.cpp",
436    "ImageContainer.cpp",
437    "PersistentBufferProvider.cpp",
438    "wr/WebRenderTextureHost.cpp",
439]
440
441DEFINES["GOOGLE_PROTOBUF_NO_RTTI"] = True
442DEFINES["GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER"] = True
443DEFINES["MOZ_APP_VERSION"] = CONFIG["MOZ_APP_VERSION"]
444
445if CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
446    SOURCES += [
447        "opengl/MacIOSurfaceTextureClientOGL.cpp",
448        "opengl/MacIOSurfaceTextureHostOGL.cpp",
449    ]
450
451IPDL_SOURCES += [
452    "ipc/LayersMessages.ipdlh",
453    "ipc/LayersSurfaces.ipdlh",
454    "ipc/PAPZ.ipdl",
455    "ipc/PAPZCTreeManager.ipdl",
456    "ipc/PAPZInputBridge.ipdl",
457    "ipc/PCanvas.ipdl",
458    "ipc/PCompositorBridge.ipdl",
459    "ipc/PCompositorBridgeTypes.ipdlh",
460    "ipc/PCompositorManager.ipdl",
461    "ipc/PImageBridge.ipdl",
462    "ipc/PTexture.ipdl",
463    "ipc/PUiCompositorController.ipdl",
464    "ipc/PVideoBridge.ipdl",
465    "ipc/PWebRenderBridge.ipdl",
466    "ipc/WebRenderMessages.ipdlh",
467]
468
469include("/ipc/chromium/chromium-config.mozbuild")
470
471if CONFIG["COMPILE_ENVIRONMENT"] and CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
472    GeneratedFile(
473        "CompositorD3D11Shaders.h",
474        script="d3d11/genshaders.py",
475        inputs=["d3d11/shaders.manifest"],
476    )
477
478LOCAL_INCLUDES += [
479    "/docshell/base",  # for nsDocShell.h
480    "/dom/canvas",  # for intertwined WebGL headers
481    "/gfx/cairo/cairo/src",
482    "/layout/base",  # for TouchManager.h
483    "/layout/generic",  # for nsTextFrame.h
484    "/media/libyuv/libyuv/include",  # for libyuv.h
485]
486
487FINAL_LIBRARY = "xul"
488
489if CONFIG["MOZ_DEBUG"]:
490    DEFINES["D3D_DEBUG_INFO"] = True
491
492if CONFIG["MOZ_ENABLE_D3D10_LAYER"]:
493    DEFINES["MOZ_ENABLE_D3D10_LAYER"] = True
494
495if CONFIG["ENABLE_TESTS"]:
496    DIRS += ["apz/test/gtest"]
497    DIRS += ["apz/test/gtest/mvm"]
498
499MOCHITEST_MANIFESTS += ["apz/test/mochitest/mochitest.ini"]
500BROWSER_CHROME_MANIFESTS += ["apz/test/mochitest/browser.ini"]
501
502if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
503    CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
504
505CXXFLAGS += ["-Werror=switch"]
506
507LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"]
508
509# Suppress warnings in third-party code.
510if CONFIG["CC_TYPE"] == "gcc":
511    CXXFLAGS += ["-Wno-maybe-uninitialized"]
512
513UNIFIED_SOURCES += []
514
515if CONFIG["FUZZING"] and CONFIG["FUZZING_INTERFACES"]:
516    TEST_DIRS += ["ipc/fuzztest"]
517
518# Add libFuzzer configuration directives
519include("/tools/fuzzing/libfuzzer-config.mozbuild")
520