parent
a94d70711c
commit
999376a347
4 changed files with 62 additions and 0 deletions
@ -0,0 +1,55 @@ |
||||
# Meson's policy on mixing multiple build systems in one build directory |
||||
|
||||
Meson has been designed with the principle that all dependencies are |
||||
either provided by "the platform" via a mechanism such as Pkg-Config |
||||
or that they are built as Meson subprojects under the main |
||||
project. There are several projects that would like to mix build |
||||
systems, that is, build dependencies in the same build directory as |
||||
the other build system by having one build system call the other. The |
||||
build directories do not necessarily need to be inside each other, but |
||||
that is the common case. |
||||
|
||||
This page lists the Meson project's stance on mixing build |
||||
systems. The tl/dr version is that while we do provide some |
||||
functionality for this use case, it only works for simple |
||||
cases. Anything more complex can not be made reliable and trying to do |
||||
that would burden Meson developers with an effectively infinite |
||||
maintenance burden. Thus these use cases are not guaranteed to work, |
||||
and even if a project using them works today there are no guarantees |
||||
that it will work in any future version. |
||||
|
||||
## The definition of "build system mixing" |
||||
|
||||
For the purposes of this page, mixing build systems means any and all |
||||
mechanisms where one build system uses build artifacts from a |
||||
different build system's build directory in any way. |
||||
|
||||
Note that this definition does not specify what the dependencies are |
||||
and how they are built, only how they are consumed. For example |
||||
suppose you have a standalone dependency library that builds with |
||||
build system X. In this case having Meson call the build system to |
||||
build the dependency at build time would be interpreted as mixing |
||||
build systems. On the other hand a "Flatpak-like" approach of building |
||||
and installing the library with an external mechanism and consuming it |
||||
via a standard build-system agnostic method such as Pkg-Config would |
||||
not be considered build system mixing. Use of uninstalled-pkgconfig |
||||
files is considered mixing, though. |
||||
|
||||
## What does this mean for support and compatibility? |
||||
|
||||
The Meson project will not take on any maintenance burden to ensure |
||||
anything other than the simple builds setups as discussed above will |
||||
work. Nor will we make changes to support these use cases that would |
||||
worsen the user experience of users of plain Meson. This includes, but |
||||
is not limited to, the following: |
||||
|
||||
- Any changes in other build systems that cause mixed project breakage |
||||
will not be considered a bug in Meson. |
||||
|
||||
- Breakages in mixed build projects will not be considered regressions |
||||
and such problems will never be considered release blockers, |
||||
regardless of what the underlying issue is. |
||||
|
||||
- Any use case that would require major changes in Meson to work |
||||
around missing or broken functionality in the other build system is |
||||
not supported. These issues must be fixed upstream. |
Loading…
Reference in new issue