diff options
Diffstat (limited to '')
-rw-r--r-- | media/libsoundtouch/src/moz.build | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/media/libsoundtouch/src/moz.build b/media/libsoundtouch/src/moz.build new file mode 100644 index 0000000000..c7a160fe12 --- /dev/null +++ b/media/libsoundtouch/src/moz.build @@ -0,0 +1,112 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +EXPORTS += [ + "RLBoxSoundTouch.h", + "RLBoxSoundTouchTypes.h", +] + +EXPORTS.soundtouch += [ + 'FIFOSamplePipe.h', + 'RLBoxSoundTouchFactory.h', + 'SoundTouch.h', + 'soundtouch_config.h', + 'SoundTouchFactory.h', + 'STTypes.h', +] + +LOCAL_INCLUDES += ["!/security/rlbox"] + +LOCAL_INCLUDES += [ + "/third_party/simde/", + "/third_party/wasm2c/wasm2c/", +] + +SOURCES += ["RLBoxSoundTouch.cpp"] +# Some xpcom things are #included indirectly (but not actually used), and +# it's simpler to set MOZILLA_INTERNAL_API to make it compile than to +# disentangle the whole thing. +SOURCES["RLBoxSoundTouch.cpp"].flags += ["-DMOZILLA_INTERNAL_API"] + +if CONFIG["MOZ_WASM_SANDBOXING_SOUNDTOUCH"]: + include("/security/rlbox/rlbox.mozbuild") + + RLBoxLibrary("rlboxsoundtouch") + + DEFINES["WASM_RT_GROW_FAILED_CRASH"] = True + + SOURCES += [ + "/config/external/rlbox_wasm2c_sandbox/rlbox_wasm2c_thread_locals.cpp", + "/third_party/rlbox_wasm2c_sandbox/src/wasm2c_rt_mem.c", + "/third_party/rlbox_wasm2c_sandbox/src/wasm2c_rt_minwasi.c", + ] + if CONFIG['OS_ARCH'] != 'WINNT': + OS_LIBS += ["m"] + + if CONFIG["MOZ_SAMPLE_TYPE_FLOAT32"]: + WASM_DEFINES["MOZ_SAMPLE_TYPE_FLOAT32"] = 1 + + # Clang older than version 14 does not have the necessary + # WASMSIMD intrinsics, so we disable SoundTouch WASMSIMD. + # See Bug 1851301 + if int(CONFIG["WASM_CC_VERSION"].split(".")[0]) > 13: + WASM_SOURCES += ['sse_optimized.cpp'] + + WASM_DEFINES["SOUNDTOUCH_ALLOW_SSE"] = 1 + WASM_DEFINES["SOUNDTOUCH_WASM_SIMD"] = 1 + WASM_DEFINES["SIMDE_ENABLE_NATIVE_ALIASES"] = 1 + + soundtouch_sources = WASM_SOURCES + soundtouch_defines = WASM_DEFINES + +else: + SOURCES += ["/config/external/rlbox/rlbox_thread_locals.cpp"] + if CONFIG['INTEL_ARCHITECTURE']: + if CONFIG['MOZ_SAMPLE_TYPE_FLOAT32']: + SOURCES += ['sse_optimized.cpp'] + SOURCES['sse_optimized.cpp'].flags += CONFIG['SSE2_FLAGS'] + else: + SOURCES += ['mmx_optimized.cpp'] + SOURCES['mmx_optimized.cpp'].flags += CONFIG['MMX_FLAGS'] + + if CONFIG['OS_ARCH'] != 'WINNT': + # GCC/Clang require permissions to be explicitly set for the soundtouch + # header. + CXXFLAGS += ['-include', SRCDIR + '/soundtouch_perms.h'] + else: + # Windows need alloca renamed to _alloca + DEFINES['alloca'] = '_alloca' + + soundtouch_sources = UNIFIED_SOURCES + soundtouch_defines = DEFINES + +soundtouch_sources += [ + 'AAFilter.cpp', + 'cpu_detect_x86.cpp', + 'FIFOSampleBuffer.cpp', + 'FIRFilter.cpp', + 'InterpolateCubic.cpp', + 'InterpolateLinear.cpp', + 'InterpolateShannon.cpp', + 'RateTransposer.cpp', + 'RLBoxSoundTouchFactory.cpp', + 'SoundTouch.cpp', + 'SoundTouchFactory.cpp', + 'TDStretch.cpp', +] + +for k, v in ( + ('BUILDING_SOUNDTOUCH', 1), + # Use abort() instead of exception in SoundTouch. + ('ST_NO_EXCEPTION_HANDLING', 1) +): + soundtouch_defines[k] = v + + +# We allow warnings for third-party code that can be updated from upstream. +AllowCompilerWarnings() + +FINAL_LIBRARY = 'lgpllibs' |