Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • Opus Opus
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 30
    • Issues 30
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 3
    • Merge requests 3
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Xiph.Org
  • OpusOpus
  • Merge requests
  • !13

Add an experimental meson build system port

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Nirbheek Chauhan requested to merge nirbheek/opus:meson-rebased into master Jul 20, 2020
  • Overview 59
  • Commits 1
  • Pipelines 30
  • Changes 15

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 🙂. Both myself and @tpm are happy to maintain these if merged.

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 (merged)

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 (done). It can also replace Makefile.mips with a small change to add the necessary cflags.

Edited Nov 05, 2020 by Nirbheek Chauhan
Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: meson-rebased