Bug 1747196 - Build the Web MIDI midir backend only on known supported platforms rather than excluding unsupported ones r=glandium

Differential Revision: https://phabricator.services.mozilla.com/D134491
This commit is contained in:
Gabriele Svelto 2021-12-29 08:14:52 +00:00
Родитель 5f4fff5ef8
Коммит efba31192f
9 изменённых файлов: 37 добавлений и 28 удалений

1
Cargo.lock сгенерированный
Просмотреть файл

@ -2020,7 +2020,6 @@ dependencies = [
"log",
"mapped_hyph",
"mdns_service",
"midir",
"midir_impl",
"mozurl",
"mp4parse_capi",

Просмотреть файл

@ -7,9 +7,9 @@
#include "MIDIPlatformService.h"
#include "MIDIMessageQueue.h"
#include "TestMIDIPlatformService.h"
#ifndef MOZ_WIDGET_ANDROID
#ifdef MOZ_WEBMIDI_MIDIR_IMPL
# include "midirMIDIPlatformService.h"
#endif // MOZ_WIDGET_ANDROID
#endif // MOZ_WEBMIDI_MIDIR_IMPL
#include "mozilla/ErrorResult.h"
#include "mozilla/StaticPrefs_midi.h"
#include "mozilla/StaticPtr.h"
@ -185,11 +185,11 @@ MIDIPlatformService* MIDIPlatformService::Get() {
if (StaticPrefs::midi_testing()) {
gMIDIPlatformService = new TestMIDIPlatformService();
}
#ifndef MOZ_WIDGET_ANDROID
#ifdef MOZ_WEBMIDI_MIDIR_IMPL
else {
gMIDIPlatformService = new midirMIDIPlatformService();
}
#endif // MOZ_WIDGET_ANDROID
#endif // MOZ_WEBMIDI_MIDIR_IMPL
gMIDIPlatformService->Init();
}
return gMIDIPlatformService;

Просмотреть файл

@ -4,9 +4,6 @@
# 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/.
if CONFIG["OS_TARGET"] != "Android":
DIRS += ["midir_impl"]
IPDL_SOURCES += [
"MIDITypes.ipdlh",
"PMIDIManager.ipdl",
@ -58,16 +55,17 @@ UNIFIED_SOURCES += [
include("/ipc/chromium/chromium-config.mozbuild")
if CONFIG["OS_TARGET"] == "Linux":
OS_LIBS += ["asound"] # Required by midir
UNIFIED_SOURCES += ["AlsaCompatibility.cpp"]
if CONFIG["OS_TARGET"] != "Android":
if CONFIG["MOZ_WEBMIDI_MIDIR_IMPL"]:
DEFINES["MOZ_WEBMIDI_MIDIR_IMPL"] = True
DIRS += ["midir_impl"]
UNIFIED_SOURCES += [
"midirMIDIPlatformService.cpp",
]
if CONFIG["OS_TARGET"] == "Linux":
OS_LIBS += ["asound"] # Required by midir
UNIFIED_SOURCES += ["AlsaCompatibility.cpp"]
FINAL_LIBRARY = "xul"
LOCAL_INCLUDES += [
"/dom/base",

Просмотреть файл

@ -31,6 +31,7 @@ glean_with_gecko = ["gkrust-shared/glean_with_gecko"]
with_dbus = ["gkrust-shared/with_dbus"]
thread_sanitizer = ["gkrust-shared/thread_sanitizer"]
oxidized_breakpad = ["gkrust-shared/oxidized_breakpad"]
webmidi_midir_impl = ["gkrust-shared/webmidi_midir_impl"]
[dependencies]
bench-collections-gtest = { path = "../../../../xpcom/rust/gtest/bench-collections" }

Просмотреть файл

@ -31,6 +31,7 @@ glean_with_gecko = ["gkrust-shared/glean_with_gecko"]
with_dbus = ["gkrust-shared/with_dbus"]
thread_sanitizer = ["gkrust-shared/thread_sanitizer"]
oxidized_breakpad = ["gkrust-shared/oxidized_breakpad"]
webmidi_midir_impl = ["gkrust-shared/webmidi_midir_impl"]
[dependencies]
gkrust-shared = { path = "shared" }

Просмотреть файл

@ -81,3 +81,6 @@ if CONFIG['MOZ_ENABLE_DBUS']:
if CONFIG["MOZ_CRASHREPORTER"] and CONFIG['MOZ_OXIDIZED_BREAKPAD']:
gkrust_features += ['oxidized_breakpad']
if CONFIG["MOZ_WEBMIDI_MIDIR_IMPL"]:
gkrust_features += ['webmidi_midir_impl']

Просмотреть файл

@ -52,6 +52,7 @@ fluent-langneg = { version = "0.13", features = ["cldr"] }
fluent-langneg-ffi = { path = "../../../../intl/locale/rust/fluent-langneg-ffi" }
rust_minidump_writer_linux = { path = "../../../crashreporter/rust_minidump_writer_linux", optional = true }
gecko-profiler = { path = "../../../../tools/profiler/rust-api"}
midir_impl = { path = "../../../../dom/midi/midir_impl", optional = true }
# Note: `modern_sqlite` means rusqlite's bindings file be for a sqlite with
# version less than or equal to what we link to. This isn't a problem because we
@ -72,8 +73,6 @@ qcms = { path = "../../../../gfx/qcms", features = ["c_bindings", "neon"], defau
[target.'cfg(not(target_os = "android"))'.dependencies]
viaduct = { git = "https://github.com/mozilla/application-services", rev = "c51b63595a27a6ef45161012323e0261475c10c9"}
webext_storage_bridge = { path = "../../../components/extensions/storage/webext_storage_bridge" }
midir = { git = "https://github.com/mozilla/midir.git", rev = "dc87afbd4361ae5ec192e1fab0a6409dd13d4011" }
midir_impl = { path = "../../../../dom/midi/midir_impl" }
# https://github.com/mozilla/audioipc-2/commits/master
[target.'cfg(not(target_os = "macos"))'.dependencies]
@ -110,6 +109,7 @@ glean_with_gecko = ["fog_control/with_gecko"]
oxidized_breakpad = ["rust_minidump_writer_linux"]
with_dbus = ["audio_thread_priority/with_dbus"]
thread_sanitizer = ["xpcom/thread_sanitizer"]
webmidi_midir_impl = ["midir_impl"]
[lib]
path = "lib.rs"

Просмотреть файл

@ -79,17 +79,14 @@ extern crate localization_ffi;
#[cfg(not(target_os = "android"))]
extern crate viaduct;
#[cfg(not(target_os = "android"))]
extern crate midir;
#[cfg(not(target_os = "android"))]
extern crate midir_impl;
extern crate gecko_logger;
#[cfg(feature = "oxidized_breakpad")]
extern crate rust_minidump_writer_linux;
#[cfg(feature = "webmidi_midir_impl")]
extern crate midir_impl;
extern crate log;
use log::info;

Просмотреть файл

@ -169,22 +169,32 @@ imply_option("--enable-profiling", dmd)
imply_option("--enable-jemalloc", dmd, when=compile_environment)
imply_option("--enable-replace-malloc", dmd, when=compile_environment)
# ALSA cubeb backend
# midir-based Web MIDI support
# ==============================================================
@depends(target)
def alsa_default_check(target):
def midir_linux_support(target):
return target.kernel == "Linux" and target.os != "Android"
@depends(target, midir_linux_support)
def midir_support(target, midir_linux_support):
if target.os in ("WINNT", "OSX") or midir_linux_support:
return True
set_config("MOZ_WEBMIDI_MIDIR_IMPL", midir_support)
# ALSA cubeb backend
# ==============================================================
option("--enable-alsa", env="MOZ_ALSA", help="Enable ALSA audio backend.")
@depends("--enable-alsa", alsa_default_check)
def enable_alsa_or_alsa_default_check(alsa_enabled, alsa_default_check):
return alsa_enabled or alsa_default_check
@depends("--enable-alsa", midir_linux_support)
def enable_alsa_or_midir_linux_support(alsa_enabled, midir_linux_support):
return alsa_enabled or midir_linux_support
pkg_check_modules("MOZ_ALSA", "alsa", when=enable_alsa_or_alsa_default_check)
pkg_check_modules("MOZ_ALSA", "alsa", when=enable_alsa_or_midir_linux_support)
set_config("MOZ_ALSA", True, when="--enable-alsa")
set_define("MOZ_ALSA", True, when="--enable-alsa")