Add an experimental meson build system port
Meson is quickly turning into the standard build system for FOSS cross-platform projects. For instance, GNOME, Mesa, Xorg, VideoLAN, and many others have moved (or are in the process of moving) to Meson.
This meson port supports all platforms officially supported by Opus and more: Linux, Cross-Linux, BSD, macOS, iOS, Android, Cross-Windows (MinGW), Native Windows (MinGW, MSVC, UWP). Architectures tested were: x86, x86_64, armv7, arm64 (as applicable on all platforms). The output is ABI-compatible with the Autotools build.
@tpm wrote the preliminary build files 4 years ago for fun, and I added support for non-Linux platforms this month. The main purpose was to build Opus with UWP (ARM64, x86, x86_64) support for GStreamer, which is used by Firefox Reality (Servo) on the Holo Lens 2. In order to get this going, I had to also make sure the meson port works on all platforms supported by GStreamer (listed above, minus BSD).
Once all that work was done, I thought I'd submit it upstream in case y'all were interested
In the process I noticed a bunch of minor bugs and issues on Windows which I've included here, but I'll also open a separate MR for those. Opened: !14
A major advantage of having this upstream would be that gstreamer and other projects that use or will use meson (such as VLC) can include opus as a meson subproject and build it seamlessly on platforms that don't have a standard package manager, or for any cross-compile target.
The intent is not to replace the existing build systems. I'll be happy if you merge it as an experimental build system.
However, it's a full replacement for Autotools, CMake,
Makefile.unix and the VS2015 solution at this point minus FIXMEs which are easy to fix, and I'll be happy to do those if you need me to. It can also replace
Makefile.mips with a small change to add the necessary cflags.
meson.build:2:# FIXME: use update_version to set version: meson.build:68:# FIXME: CURRENT_VERSION from git script, so e.g. 1.1.1-rc-71-gc43b1bc meson.build:79:# FIXME: optional Ne10 dependency meson.build:563:# FIXME: use pkg-config import module instead?