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", "Web Audio")
9
10DIRS += ["blink"]
11
12MOCHITEST_MANIFESTS += [
13    "test/blink/mochitest.ini",
14    "test/mochitest.ini",
15]
16
17TEST_HARNESS_FILES.testing.mochitest.tests.dom.media.webaudio.test.blink += [
18    "test/blink/audio-testing.js",
19    "test/blink/convolution-testing.js",
20    "test/blink/panner-model-testing.js",
21]
22
23EXPORTS += [
24    "AlignedTArray.h",
25    "AudioBlock.h",
26    "AudioEventTimeline.h",
27    "AudioNodeEngine.h",
28    "AudioNodeExternalInputTrack.h",
29    "AudioNodeTrack.h",
30    "AudioParamTimeline.h",
31    "MediaBufferDecoder.h",
32    "ThreeDPoint.h",
33    "WebAudioUtils.h",
34]
35
36EXPORTS.mozilla += [
37    "FFTBlock.h",
38    "MediaStreamAudioDestinationNode.h",
39]
40
41EXPORTS.mozilla.dom += [
42    "AnalyserNode.h",
43    "AudioBuffer.h",
44    "AudioBufferSourceNode.h",
45    "AudioContext.h",
46    "AudioDestinationNode.h",
47    "AudioListener.h",
48    "AudioNode.h",
49    "AudioParam.h",
50    "AudioParamDescriptorMap.h",
51    "AudioParamMap.h",
52    "AudioProcessingEvent.h",
53    "AudioScheduledSourceNode.h",
54    "AudioWorkletGlobalScope.h",
55    "AudioWorkletNode.h",
56    "AudioWorkletProcessor.h",
57    "BiquadFilterNode.h",
58    "ChannelMergerNode.h",
59    "ChannelSplitterNode.h",
60    "ConstantSourceNode.h",
61    "ConvolverNode.h",
62    "DelayNode.h",
63    "DynamicsCompressorNode.h",
64    "GainNode.h",
65    "IIRFilterNode.h",
66    "MediaElementAudioSourceNode.h",
67    "MediaStreamAudioDestinationNode.h",
68    "MediaStreamAudioSourceNode.h",
69    "MediaStreamTrackAudioSourceNode.h",
70    "OscillatorNode.h",
71    "PannerNode.h",
72    "PeriodicWave.h",
73    "ScriptProcessorNode.h",
74    "StereoPannerNode.h",
75    "WaveShaperNode.h",
76]
77
78UNIFIED_SOURCES += [
79    "AnalyserNode.cpp",
80    "AudioBlock.cpp",
81    "AudioBuffer.cpp",
82    "AudioBufferSourceNode.cpp",
83    "AudioContext.cpp",
84    "AudioDestinationNode.cpp",
85    "AudioEventTimeline.cpp",
86    "AudioListener.cpp",
87    "AudioNode.cpp",
88    "AudioNodeEngine.cpp",
89    "AudioNodeExternalInputTrack.cpp",
90    "AudioNodeTrack.cpp",
91    "AudioParam.cpp",
92    "AudioParamMap.cpp",
93    "AudioProcessingEvent.cpp",
94    "AudioScheduledSourceNode.cpp",
95    "AudioWorkletGlobalScope.cpp",
96    "AudioWorkletImpl.cpp",
97    "AudioWorkletNode.cpp",
98    "AudioWorkletProcessor.cpp",
99    "BiquadFilterNode.cpp",
100    "ChannelMergerNode.cpp",
101    "ChannelSplitterNode.cpp",
102    "ConstantSourceNode.cpp",
103    "ConvolverNode.cpp",
104    "DelayBuffer.cpp",
105    "DelayNode.cpp",
106    "DynamicsCompressorNode.cpp",
107    "FFTBlock.cpp",
108    "GainNode.cpp",
109    "IIRFilterNode.cpp",
110    "MediaBufferDecoder.cpp",
111    "MediaElementAudioSourceNode.cpp",
112    "MediaStreamAudioDestinationNode.cpp",
113    "MediaStreamAudioSourceNode.cpp",
114    "MediaStreamTrackAudioSourceNode.cpp",
115    "OscillatorNode.cpp",
116    "PannerNode.cpp",
117    "PeriodicWave.cpp",
118    "ScriptProcessorNode.cpp",
119    "StereoPannerNode.cpp",
120    "ThreeDPoint.cpp",
121    "WaveShaperNode.cpp",
122    "WebAudioUtils.cpp",
123]
124
125if CONFIG["CPU_ARCH"] == "aarch64" or CONFIG["BUILD_ARM_NEON"]:
126    DEFINES["USE_NEON"] = True
127    SOURCES += ["AudioNodeEngineNEON.cpp"]
128    SOURCES["AudioNodeEngineNEON.cpp"].flags += CONFIG["NEON_FLAGS"]
129    if CONFIG["BUILD_ARM_NEON"]:
130        LOCAL_INCLUDES += ["/media/openmax_dl/dl/api/"]
131
132# Are we targeting x86 or x64?  If so, build SSE2 files.
133if CONFIG["INTEL_ARCHITECTURE"]:
134    SOURCES += ["AudioNodeEngineSSE2.cpp"]
135    DEFINES["USE_SSE2"] = True
136    SOURCES["AudioNodeEngineSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"]
137
138# Allow outputing trace points from Web Audio API code
139DEFINES["TRACING"] = True
140
141include("/ipc/chromium/chromium-config.mozbuild")
142
143FINAL_LIBRARY = "xul"
144LOCAL_INCLUDES += [".."]
145
146if CONFIG["CC_TYPE"] in ("clang", "gcc"):
147    CXXFLAGS += ["-Wno-error=shadow"]
148