Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add meson build system #139

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

thiblahute
Copy link

mesonbuild is a new (not so new already) build system that is
extensively used on the linux desktop.

It would be fantastic to have support for building fdkaac with Meson
in upstream fdkaac, as it would facilitate builds of GStreamer via
Meson's subproject support.

Cross-compilation is of course also supported, but I have not tested
that yet. Meson provides out-of-the-box support for building native
binaries and cross binaries in the same build, which seems like
something that could be useful for fdkaac.

This should be on par with the CMake build definition

@tp-m
Copy link

tp-m commented Oct 5, 2021

This would be incredibly useful for GStreamer for what it's worth :)

[mesonbuild] is a new (not so new already) build system that is
extensively used on the linux desktop.

It would be fantastic to have support for building fdkaac with Meson
in upstream fdkaac, as it would facilitate builds of GStreamer via
Meson's subproject support.

Cross-compilation is of course also supported, but I have not tested
that yet. Meson provides out-of-the-box support for building native
binaries and cross binaries in the same build, which seems like
something that could be useful for fdkaac.

This should be on par with the CMake build definition

[mesonbuild]:https://mesonbuild.com/
@mstorsjo
Copy link
Owner

Hi! Thanks for your contribution, and sorry for the belated answer. It's belated both because I'm swamped (as most people are, I guess), but also because I'm undecided about what to do about it.

Initially I wasn't keen on adding any more build systems other than the initial autotools based one. Then I got convinced to add a separate nmakefile for MSVC. Later I got a good PR for a cmakefile, and cmake does provide additional value (which also allowed me to get rid of the nmakefile for MSVC).

I'm familiar with meson, but I don't see what extra added value it would add here over cmake (other than that it's easier to integrate as a subproject in other meson based projects like GStreamer, I do acknowledge that).

Meson provides out-of-the-box support for building native binaries and cross binaries in the same build, which seems like something that could be useful for fdkaac.

I don't see where it'd be beneficial here - building fdk-aac doesn't include any steps that require building code for the build host?

I see that it's been added to wrapdb - is that enough for interacting easily with it from the GStreamer point of view?

If I'd be wanting to merge this (not firmly saying either yes or no at this point), I'd want the same as I wanted for the cmake bits though:

  • Working for all common platforms (macos/linux/mingw/msvc), including cross compiling. This I'm sure it already does (although it was mentioned that cross compilation hadn't been tested)
  • Drop-in compatible produced files across the new build system and autotools. I.e. it should produce files with the same file names/versions and SONAME (or install_name on macos) across macos/linux/mingw, with matching/compatible pkg-config files. In cmake, this required a bit of extra manual fiddling. Not sure how hard/messy this is in meson though.

@neheb
Copy link
Contributor

neheb commented Jan 29, 2022

this thing is great. I would replace autotools with meson if too many build systems are present.

I suggest being able to disable various patented functionality through meson_options.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants