meson: Don't use '' in link_with, ever

String arguments as elements in the array passed to the link_with
argument in meson's executable() functions are not valid and will end up
causing the build file generation to file. This actually ended up
exposing a bug in meson that caused it not to report where in the
meson.build file it was failing:

https://github.com/mesonbuild/meson/pull/2527

The proper way to have a variable that can contain either an empty link
target or an actual link target is:

some_target = []
if some_cond
    some_target = static_library(...)
endif

This way if some_cond is False, some_target gets set to [], gets passed
to executable() in the link_with array, and then gets removed by array
flattening.

This also unbreaks Xwayland builds with -Dglx=false, the thing that
originally made me notice this.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Jon Turney <jon.turney@dronecode.org.uk>
This commit is contained in:
Lyude Paul 2017-10-23 16:21:19 -04:00 committed by Adam Jackson
parent 5893e72a20
commit 4d53e30651
3 changed files with 4 additions and 4 deletions

View File

@ -30,7 +30,7 @@ srcs_glx = [
'xfont.c',
]
libxserver_glx = ''
libxserver_glx = []
if build_glx
libxserver_glx = static_library('libxserver_glx',
srcs_glx,

View File

@ -43,7 +43,7 @@ dmx_dep = [
dl_dep,
]
dmx_glx = ''
dmx_glx = []
if build_glx
srcs += 'dmx_glxvisuals.c'
subdir('glxProxy')

View File

@ -214,7 +214,7 @@ if int10 == 'auto'
endif
endif
hal_dep = ''
hal_dep = []
if hal_option == 'auto'
if not build_udev
hal_dep = dependency('hal', required: false)
@ -264,7 +264,7 @@ endif
# XXX: Add more sha1 options, because Linux is about choice
sha1_dep = nettle_dep
xdmcp_dep = ''
xdmcp_dep = []
if get_option('xdmcp')
xdmcp_dep = dependency('xdmcp')
endif