Meson is placing -pie after -shared rather than before, and this causes linking to fail while building the ArchLinux package for QEMU.
But why is -pie ending up in the flags? Because LDFLAGS is an environment variable, and changes to environment variables propagate when configure does LDFLAGS="-pie $LDFLAGS" This happens without having to export the env. var again. The solution is to simply rename the CFLAGS and LDFLAGS variables used for flags that Meson takes care of by itself. The CFLAGS variable was previously used for submodules as well, so patches 1 and 2 fix that as well. I'm keeping Richard's reviewed-by since the changes are pretty obvious from v1. v1->v2: include -fno-pie flags as well, since tests/tcg needs them handle empty CFLAGS and LDFLAGS too place flags in the built-in options section of the cross file Paolo Bonzini (4): configure: cleanup invocation of submodule Make configure: cleanup CFLAGS and LDFLAGS for submodules configure: do not clobber environment CFLAGS/CXXFLAGS/LDFLAGS configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meson Makefile | 23 +++++++++------- configure | 75 ++++++++++++++++++++++++++++++++++------------------- meson.build | 13 +++++++++- 3 files changed, 74 insertions(+), 37 deletions(-) -- 2.26.2