Skip to content

Unified build system (Meson proof of concept) #685

@ghost

Description

Is your feature request related to a problem? Please describe.
Having two separate build systems for the command-line program, the cavacore library and other things seems like a situation with room for improvement to me. The current systems also are not very friendly towards distro packagers, and overall a bit fragile and difficult to reason about. Some downstream software that wants to use cavacore currently does so by depending on distro patches.

Describe the solution you'd like
I’m a fan of the Meson build system, so I sat down and wrote a quick proof of concept.
The patch is just under 300 lines and only adds two files. What I have so far:

  • Feature toggles for all optional dependencies
  • Builds cava executable
  • Builds cavacore library, both shared (with soversion set) and static
  • Generates pkg-config file for cavacore
  • Test suite integrated (both cava test configs and the cavacore test program)
  • Compatible with both Meson and Muon (an alternative implementation written in C99)
  • Tested with GCC and Clang on Linux (openSUSE Tumbleweed)
  • Tested on FreeBSD, macOS and others
  • Android build support
  • Windows packaging support
  • Wrap fallbacks for dependencies that are requested by the configuration but not provided by the build environment

Additional context
Here’s my WIP branch for this issue: master...mia-0:cava:meson

Let me know what you think!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions