Skip to content

Upgrade meson and ninja + many Windows fixes

Split out everything except the glib/glib-networking upgrade from !419 (merged).

commit 5152a342:

Bump meson to 0.53.1 and ninja to 1.10.0

commit afad9dec:

windows.config: Bump requirement to Windows 7
Windows Vista has been out of support for a very long time, and almost
no one uses it anyway.

We need this to build the latest Ninja (1.10).

commit 7483006c:

cerbero/config: Avoid using env vars for compiler paths
If we pass only some compiler system include paths using env vars, the
order will be incorrect, and Meson will remove any `-isystem` args we
add ourselves to force a particular order if they're also in the env
var (which adds it to the default compiler search path). This will
break glib's search for iconv.h on cross-android.

If we always pass the correct list of system include directories using
the env var, cross compilation breaks because some autotools recipes
call the native (non-cross) compiler with the same env, and it will
pick up the wrong headers causing a build failure; f.ex., gmp on
cross-android.

The only solution is to never pass these args when cross compiling,
and to always pass it using the CFLAGS, CPPFLAGS, etc env vars.

commit 3513fd22:

zbar.recipe: Don't pass CPPFLAGS at all
Now that we explicitly set CPPFLAGS, this was failing to build
because it incorrectly passes CPPFLAGS instead of RCFLAGS to WINDRES.

commit d96bc435:

cerbero/build: Workaround MSYS trying to be too smart
Finally figured out the actual issue that I was trying to solve in
f38df32d8 and 78f06dd405. Paths like `c:/foobar` (lowercase drive
letter) are considered to be a POSIX path list, so `c:/foobar/`
becomes `c;C:\foobar`:

http://mingw.org/wiki/Posix_path_conversion

This will happen anytime we try to pass a path as a command-line
argument. We used to work-around this by using `to_unixpath()`,
but that's just sinking deeper into dependence on broken shell
behaviour. This happens now because we're passing includes in CFLAGS,
CXXFLAGS, CPPFLAGS, etc.

So let's just bypass the shell entirely by constructing a list. As
a side-effect, this is another step towards being able to run Cerbero
from a directory with spaces in it.

For now, we'll convert `config_sh` to a list when not using an
Autotools configure. Luckily, we don't need to pass any paths as
arguments to it anyway. When running other stages, we now always use
a list instead of a string. Hopefully the fallout is small and obvious
for people using forks of Cerbero.
Edited by Nirbheek Chauhan

Merge request reports