moz.build (10693B)
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 include("/dom/media/webrtc/third_party_build/webrtc.mozbuild") 7 8 with Files("*"): 9 BUG_COMPONENT = ("Core", "Audio/Video") 10 11 with Files("test/**"): 12 BUG_COMPONENT = ("Core", "Audio/Video: Playback") 13 14 with Files("gtest/TestGMP*"): 15 BUG_COMPONENT = ("Core", "Audio/Video: GMP") 16 17 with Files("tests/**"): 18 BUG_COMPONENT = ("Core", "WebRTC") 19 20 component_signaling = ("Core", "WebRTC: Signaling") 21 with Files("IdpSandbox.sys.mjs"): 22 BUG_COMPONENT = component_signaling 23 with Files("PeerConnection*"): 24 BUG_COMPONENT = component_signaling 25 26 component_av = ("Core", "WebRTC: Audio/Video") 27 with Files("GetUserMedia*"): 28 BUG_COMPONENT = component_av 29 30 DIRS += [ 31 "autoplay", 32 "doctor", 33 "driftcontrol", 34 "eme", 35 "encoder", 36 "fake-cdm", 37 "flac", 38 "gmp", 39 "gmp-plugin-openh264", 40 "imagecapture", 41 "ipc", 42 "mediacapabilities", 43 "mediacontrol", 44 "mediaelement", 45 "mediasink", 46 "mediasource", 47 "mediasession", 48 "mp3", 49 "mp4", 50 "ogg", 51 "platforms", 52 "systemservices", 53 "utils", 54 "wave", 55 "webaudio", 56 "webcodecs", 57 "webm", 58 "webrtc", 59 "webvtt", 60 ] 61 62 if CONFIG["MOZ_ANDROID_HLS_SUPPORT"]: 63 DIRS += ["hls"] 64 65 if CONFIG["MOZ_WEBRTC"]: 66 DIRS += ["bridge"] 67 68 if CONFIG["MOZ_WEBSPEECH"]: 69 DIRS += ["webspeech"] 70 71 TEST_DIRS += [ 72 "gtest", 73 ] 74 75 # Add libFuzzer configuration directives 76 include("/tools/fuzzing/libfuzzer-config.mozbuild") 77 78 if CONFIG["FUZZING_INTERFACES"]: 79 TEST_DIRS += ["fuzz"] 80 81 if CONFIG["MOZ_WEBRTC_SIGNALING"]: 82 if CONFIG["FUZZING_INTERFACES"]: 83 TEST_DIRS += ["webrtc/tests/fuzztests"] 84 85 if CONFIG["FUZZING_INTERFACES"] and CONFIG["LIBFUZZER"]: 86 include("/tools/fuzzing/libfuzzer-flags.mozbuild") 87 SOURCES += [ 88 "MediaFragmentURIParser.cpp", 89 ] 90 SOURCES["MediaFragmentURIParser.cpp"].flags += libfuzzer_flags 91 else: 92 UNIFIED_SOURCES += [ 93 "MediaFragmentURIParser.cpp", 94 ] 95 96 MOCHITEST_MANIFESTS += [ 97 "test/mochitest.toml", 98 "test/mochitest_background_video.toml", 99 "test/mochitest_bugs.toml", 100 "test/mochitest_compat.toml", 101 "test/mochitest_eme.toml", 102 "test/mochitest_eme_compat.toml", 103 "test/mochitest_media_engine.toml", 104 "test/mochitest_media_recorder.toml", 105 "test/mochitest_seek.toml", 106 "test/mochitest_stream.toml", 107 "test/mochitest_sw.toml", 108 "webrtc/tests/mochitests/identity/mochitest.toml", 109 ] 110 111 MOCHITEST_CHROME_MANIFESTS += ["test/chrome/chrome.toml"] 112 113 BROWSER_CHROME_MANIFESTS += [ 114 "mediacontrol/tests/browser/browser.toml", 115 "mediasession/test/browser.toml", 116 "test/browser/browser.toml", 117 "test/browser/wmfme/browser.toml", 118 ] 119 120 if CONFIG["MOZ_WEBRTC"]: 121 MOCHITEST_MANIFESTS += [ 122 "webrtc/tests/mochitests/mochitest.toml", 123 "webrtc/tests/mochitests/mochitest_datachannel.toml", 124 "webrtc/tests/mochitests/mochitest_getusermedia.toml", 125 "webrtc/tests/mochitests/mochitest_peerconnection.toml", 126 ] 127 128 CRASHTEST_MANIFESTS += ["webrtc/tests/crashtests/crashtests.list"] 129 130 XPIDL_SOURCES += [ 131 "nsIAudioDeviceInfo.idl", 132 "nsIMediaDevice.idl", 133 "nsIMediaManager.idl", 134 ] 135 136 XPIDL_MODULE = "dom_media" 137 138 EXPORTS += [ 139 "../../third_party/rust/audio_thread_priority/audio_thread_priority.h", 140 "ADTSDecoder.h", 141 "ADTSDemuxer.h", 142 "AsyncLogger.h", 143 "AudibilityMonitor.h", 144 "AudioBufferUtils.h", 145 "AudioChannelFormat.h", 146 "AudioCompactor.h", 147 "AudioConfig.h", 148 "AudioConverter.h", 149 "AudioDeviceInfo.h", 150 "AudioMixer.h", 151 "AudioPacketizer.h", 152 "AudioRingBuffer.h", 153 "AudioSampleFormat.h", 154 "AudioSegment.h", 155 "AudioStream.h", 156 "BackgroundVideoDecodingPermissionObserver.h", 157 "BitReader.h", 158 "BitWriter.h", 159 "BufferMediaResource.h", 160 "BufferReader.h", 161 "ByteWriter.h", 162 "CallbackThreadRegistry.h", 163 "ChannelMediaDecoder.h", 164 "CrossGraphPort.h", 165 "CubebUtils.h", 166 "DecoderTraits.h", 167 "DOMMediaStream.h", 168 "DriftCompensation.h", 169 "EncoderTraits.h", 170 "ExternalEngineStateMachine.h", 171 "FileBlockCache.h", 172 "ForwardedInputTrack.h", 173 "FrameStatistics.h", 174 "ImageConversion.h", 175 "Intervals.h", 176 "MediaCache.h", 177 "MediaContainerType.h", 178 "MediaData.h", 179 "MediaDataDemuxer.h", 180 "MediaDecoder.h", 181 "MediaDecoderOwner.h", 182 "MediaDecoderStateMachine.h", 183 "MediaDecoderStateMachineBase.h", 184 "MediaEventSource.h", 185 "MediaFormatReader.h", 186 "MediaInfo.h", 187 "MediaMetadataManager.h", 188 "MediaMIMETypes.h", 189 "MediaPlaybackDelayPolicy.h", 190 "MediaPromiseDefs.h", 191 "MediaQueue.h", 192 "MediaRecorder.h", 193 "MediaResource.h", 194 "MediaResourceCallback.h", 195 "MediaResult.h", 196 "MediaSegment.h", 197 "MediaShutdownManager.h", 198 "MediaSpan.h", 199 "MediaStreamWindowCapturer.h", 200 "MediaTimer.h", 201 "MediaTrack.h", 202 "MediaTrackGraph.h", 203 "MediaTrackList.h", 204 "MediaTrackListener.h", 205 "MemoryBlockCache.h", 206 "nsIDocumentActivity.h", 207 "PrincipalChangeObserver.h", 208 "PrincipalHandle.h", 209 "QueueObject.h", 210 "ReaderProxy.h", 211 "SeekJob.h", 212 "SeekTarget.h", 213 "SelfRef.h", 214 "SharedBuffer.h", 215 "TimedPacketizer.h", 216 "TimeUnits.h", 217 "Tracing.h", 218 "VideoFrameContainer.h", 219 "VideoLimits.h", 220 "VideoSegment.h", 221 "VideoUtils.h", 222 "WavDumper.h", 223 "XiphExtradata.h", 224 ] 225 226 EXPORTS.mozilla += [ 227 "MediaFragmentURIParser.h", 228 "MediaManager.h", 229 "UnderrunHandler.h", 230 ] 231 232 EXPORTS.mozilla.media.webrtc += [ 233 "webrtc/WebrtcGlobal.h", 234 "webrtc/WebrtcIPCTraits.h", 235 ] 236 237 if not CONFIG["MOZ_WEBRTC"]: 238 EXPORTS.transport += [ 239 "webrtc/transport/runnable_utils.h", 240 ] 241 242 EXPORTS.mozilla.dom += [ 243 "AudioDeviceInfo.h", 244 "AudioStreamTrack.h", 245 "AudioTrack.h", 246 "AudioTrackList.h", 247 "CanvasCaptureMediaStream.h", 248 "GetUserMediaRequest.h", 249 "MediaDeviceInfo.h", 250 "MediaDevices.h", 251 "MediaStreamError.h", 252 "MediaStreamTrack.h", 253 "UnboundedMPSCQueue.h", 254 "VideoPlaybackQuality.h", 255 "VideoStreamTrack.h", 256 "VideoTrack.h", 257 "VideoTrackList.h", 258 "webrtc/MediaTransportChild.h", 259 "webrtc/MediaTransportParent.h", 260 ] 261 262 UNIFIED_SOURCES += [ 263 "ADTSDecoder.cpp", 264 "ADTSDemuxer.cpp", 265 "AudioCaptureTrack.cpp", 266 "AudioChannelFormat.cpp", 267 "AudioCompactor.cpp", 268 "AudioConfig.cpp", 269 "AudioConverter.cpp", 270 "AudioDeviceInfo.cpp", 271 "AudioInputSource.cpp", 272 "AudioRingBuffer.cpp", 273 "AudioSegment.cpp", 274 "AudioStream.cpp", 275 "AudioStreamTrack.cpp", 276 "AudioTrack.cpp", 277 "AudioTrackList.cpp", 278 "BackgroundVideoDecodingPermissionObserver.cpp", 279 "BaseMediaResource.cpp", 280 "BitReader.cpp", 281 "BitWriter.cpp", 282 "CallbackThreadRegistry.cpp", 283 "CanvasCaptureMediaStream.cpp", 284 "ChannelMediaDecoder.cpp", 285 "ChannelMediaResource.cpp", 286 "CloneableWithRangeMediaResource.cpp", 287 "CrossGraphPort.cpp", 288 "CubebInputStream.cpp", 289 "CubebUtils.cpp", 290 "DecoderTraits.cpp", 291 "DeviceInputTrack.cpp", 292 "DOMMediaStream.cpp", 293 "ExternalEngineStateMachine.cpp", 294 "FileBlockCache.cpp", 295 "FileMediaResource.cpp", 296 "ForwardedInputTrack.cpp", 297 "GetUserMediaRequest.cpp", 298 "GraphDriver.cpp", 299 "GraphRunner.cpp", 300 "ImageConversion.cpp", 301 "MediaCache.cpp", 302 "MediaContainerType.cpp", 303 "MediaDecoder.cpp", 304 "MediaDecoderStateMachine.cpp", 305 "MediaDecoderStateMachineBase.cpp", 306 "MediaDeviceInfo.cpp", 307 "MediaDevices.cpp", 308 "MediaFormatReader.cpp", 309 "MediaInfo.cpp", 310 "MediaManager.cpp", 311 "MediaMIMETypes.cpp", 312 "MediaPlaybackDelayPolicy.cpp", 313 "MediaRecorder.cpp", 314 "MediaResource.cpp", 315 "MediaResult.cpp", 316 "MediaShutdownManager.cpp", 317 "MediaStreamError.cpp", 318 "MediaStreamTrack.cpp", 319 "MediaStreamWindowCapturer.cpp", 320 "MediaTimer.cpp", 321 "MediaTrack.cpp", 322 "MediaTrackGraph.cpp", 323 "MediaTrackList.cpp", 324 "MediaTrackListener.cpp", 325 "MemoryBlockCache.cpp", 326 "QueueObject.cpp", 327 "ReaderProxy.cpp", 328 "SeekJob.cpp", 329 "TimeUnits.cpp", 330 "Tracing.cpp", 331 "VideoFrameContainer.cpp", 332 "VideoPlaybackQuality.cpp", 333 "VideoSegment.cpp", 334 "VideoStreamTrack.cpp", 335 "VideoTrack.cpp", 336 "VideoTrackList.cpp", 337 "VideoUtils.cpp", 338 "XiphExtradata.cpp", 339 ] 340 341 if CONFIG["OS_TARGET"] == "Linux": 342 UNIFIED_SOURCES += ["UnderrunHandlerLinux.cpp"] 343 else: 344 UNIFIED_SOURCES += ["UnderrunHandlerNoop.cpp"] 345 346 if CONFIG["ENABLE_TESTS"] or CONFIG["FUZZING"]: 347 UNIFIED_SOURCES += ["MockCubeb.cpp"] 348 349 # MediaData.cpp : ambiguous compilation error caused by Mac OS X headers. 350 SOURCES += [ 351 "MediaData.cpp", 352 ] 353 354 if CONFIG["MOZ_WEBRTC"]: 355 XPCOM_MANIFESTS += [ 356 "components.conf", 357 ] 358 359 EXTRA_JS_MODULES.media += [ 360 "PeerConnection.sys.mjs", 361 ] 362 363 EXTRA_JS_MODULES.media += [ 364 "IdpSandbox.sys.mjs", 365 "PeerConnectionIdp.sys.mjs", 366 ] 367 368 LOCAL_INCLUDES += [ 369 "!/media/libsoundtouch/src", 370 "/caps", 371 "/docshell/base", 372 "/dom/base", 373 "/dom/media/webrtc", 374 "/layout/generic", 375 "/layout/xul", 376 "/media/libyuv/libyuv/include", 377 "/netwerk/base", 378 "/toolkit/content/tests/browser/", 379 ] 380 381 if CONFIG["MOZ_WEBRTC"]: 382 LOCAL_INCLUDES += [ 383 "!/dist/include/libwebrtc_overrides", 384 "/dom/media/webrtc/common", 385 "/third_party/abseil-cpp", 386 "/third_party/libwebrtc", 387 ] 388 389 DEFINES["MOZILLA_INTERNAL_API"] = True 390 391 if CONFIG["MOZ_ANDROID_HLS_SUPPORT"]: 392 DEFINES["MOZ_ANDROID_HLS_SUPPORT"] = True 393 394 if CONFIG["COMPILE_ENVIRONMENT"]: 395 EXPORTS += [ 396 "!audioipc2_client_ffi_generated.h", 397 "!audioipc2_server_ffi_generated.h", 398 ] 399 400 CbindgenHeader( 401 "audioipc2_client_ffi_generated.h", 402 inputs=["/third_party/rust/audioipc2-client"], 403 ) 404 405 CbindgenHeader( 406 "audioipc2_server_ffi_generated.h", 407 inputs=["/third_party/rust/audioipc2-server"], 408 ) 409 410 TEST_DIRS += [ 411 "test/rdd_process_xpcom", 412 ] 413 414 if CONFIG["MOZ_SYSTEM_AV1"]: 415 CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] 416 417 include("/ipc/chromium/chromium-config.mozbuild") 418 419 LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"] 420 421 # Suppress some GCC warnings being treated as errors: 422 # - about attributes on forward declarations for types that are already 423 # defined, which complains about an important MOZ_EXPORT for android::AString 424 if CONFIG["CC_TYPE"] in ("clang", "gcc"): 425 CXXFLAGS += [ 426 "-Wno-error=attributes", 427 ] 428 429 CXXFLAGS += ["-Werror=switch"] 430 431 FINAL_LIBRARY = "xul" 432 433 SPHINX_TREES["/media"] = "docs"