configure: move GTK+ detection to Meson

This also allows removing CONFIG_NEED_X11, all the ingredients
can be computed easily in meson.build.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2021-01-07 14:02:29 +01:00
parent 9d71037f4b
commit 1b6954713f
4 changed files with 30 additions and 58 deletions

55
configure vendored
View File

@ -414,7 +414,7 @@ cfi="false"
cfi_debug="false"
seccomp="auto"
glusterfs="auto"
gtk="$default_feature"
gtk="auto"
tls_priority="NORMAL"
gnutls="$default_feature"
nettle="$default_feature"
@ -1377,9 +1377,9 @@ for opt do
--enable-uuid|--disable-uuid)
echo "$0: $opt is obsolete, UUID support is always built" >&2
;;
--disable-gtk) gtk="no"
--disable-gtk) gtk="disabled"
;;
--enable-gtk) gtk="yes"
--enable-gtk) gtk="enabled"
;;
--tls-priority=*) tls_priority="$optarg"
;;
@ -2329,10 +2329,10 @@ if test "$cocoa" = "enabled"; then
if test "$sdl" = "enabled"; then
error_exit "Cocoa and SDL UIs cannot both be enabled at once"
fi
if test "$gtk" = "yes"; then
if test "$gtk" = "enabled"; then
error_exit "Cocoa and GTK UIs cannot both be enabled at once"
fi
gtk=no
gtk=disabled
sdl=disabled
fi
@ -2759,31 +2759,6 @@ EOF
fi
fi
##########################################
# GTK probe
if test "$gtk" != "no"; then
gtkpackage="gtk+-3.0"
gtkx11package="gtk+-x11-3.0"
gtkversion="3.22.0"
if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
gtk_cflags=$($pkg_config --cflags $gtkpackage)
gtk_libs=$($pkg_config --libs $gtkpackage)
gtk_version=$($pkg_config --modversion $gtkpackage)
if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
need_x11=yes
gtk_cflags="$gtk_cflags $x11_cflags"
gtk_libs="$gtk_libs $x11_libs"
fi
gtk="yes"
elif test "$gtk" = "yes"; then
feature_not_found "gtk" "Install gtk3-devel"
else
gtk="no"
fi
fi
##########################################
# GNUTLS probe
@ -3640,16 +3615,6 @@ EOF
fi
fi
if test "$opengl" = "yes" && test "$have_x11" = "yes"; then
for target in $target_list; do
case $target in
lm32-softmmu) # milkymist-tmu2 requires X11 and OpenGL
need_x11=yes
;;
esac
done
fi
##########################################
# libxml2 probe
if test "$libxml2" != "no" ; then
@ -5673,9 +5638,6 @@ fi
if test "$module_upgrades" = "yes"; then
echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak
fi
if test "$need_x11" = "yes"; then
echo "CONFIG_NEED_X11=y" >> $config_host_mak
fi
if test "$pipe2" = "yes" ; then
echo "CONFIG_PIPE2=y" >> $config_host_mak
fi
@ -5763,11 +5725,6 @@ fi
if test "$bswap_h" = "yes" ; then
echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
fi
if test "$gtk" = "yes" ; then
echo "CONFIG_GTK=y" >> $config_host_mak
echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
fi
if test "$gio" = "yes" ; then
echo "CONFIG_GIO=y" >> $config_host_mak
echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
@ -6501,7 +6458,7 @@ NINJA=$ninja $meson setup \
-Dmalloc=$malloc -Dmalloc_trim=$malloc_trim -Dsparse=$sparse \
-Dkvm=$kvm -Dhax=$hax -Dwhpx=$whpx -Dhvf=$hvf \
-Dxen=$xen -Dxen_pci_passthrough=$xen_pci_passthrough -Dtcg=$tcg \
-Dcocoa=$cocoa -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
-Dcocoa=$cocoa -Dgtk=$gtk -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
-Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
-Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f -Dvirtiofsd=$virtiofsd \
-Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \

View File

@ -776,19 +776,31 @@ if 'CONFIG_OPENGL' in config_host
opengl = declare_dependency(compile_args: config_host['OPENGL_CFLAGS'].split(),
link_args: config_host['OPENGL_LIBS'].split())
endif
gtk = not_found
if 'CONFIG_GTK' in config_host
gtk = declare_dependency(compile_args: config_host['GTK_CFLAGS'].split(),
link_args: config_host['GTK_LIBS'].split())
gtkx11 = not_found
if not get_option('gtk').auto() or have_system
gtk = dependency('gtk+-3.0', version: '>=3.22.0',
method: 'pkg-config',
required: get_option('gtk'),
static: enable_static)
if gtk.found()
gtkx11 = dependency('gtk+-x11-3.0', version: '>=3.22.0',
method: 'pkg-config',
required: false,
static: enable_static)
gtk = declare_dependency(dependencies: [gtk, gtkx11])
endif
endif
vte = not_found
if 'CONFIG_VTE' in config_host
vte = declare_dependency(compile_args: config_host['VTE_CFLAGS'].split(),
link_args: config_host['VTE_LIBS'].split())
endif
x11 = not_found
if config_host.has_key('CONFIG_NEED_X11')
x11 = dependency('x11', method: 'pkg-config', required: false,
if gtkx11.found() or 'lm32-softmmu' in target_dirs
x11 = dependency('x11', method: 'pkg-config', required: gtkx11.found(),
static: enable_static)
endif
vnc = not_found
@ -1062,6 +1074,7 @@ if glusterfs.found()
config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT', glusterfs_ftruncate_has_stat)
config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
endif
config_host_data.set('CONFIG_GTK', gtk.found())
config_host_data.set('CONFIG_LIBATTR', have_old_libattr)
config_host_data.set('CONFIG_LIBCAP_NG', libcap_ng.found())
config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
@ -2230,7 +2243,7 @@ subdir('tools')
subdir('pc-bios')
subdir('docs')
subdir('tests')
if 'CONFIG_GTK' in config_host
if gtk.found()
subdir('po')
endif
@ -2247,7 +2260,7 @@ if host_machine.system() == 'windows'
if build_docs
nsis_cmd += '-DCONFIG_DOCUMENTATION=y'
endif
if 'CONFIG_GTK' in config_host
if gtk.found()
nsis_cmd += '-DCONFIG_GTK=y'
endif
@ -2338,7 +2351,7 @@ endif
summary_info += {'SDL support': sdl.found()}
summary_info += {'SDL image support': sdl_image.found()}
# TODO: add back version
summary_info += {'GTK support': config_host.has_key('CONFIG_GTK')}
summary_info += {'GTK support': gtk.found()}
summary_info += {'pixman': pixman.found()}
# TODO: add back version
summary_info += {'VTE support': config_host.has_key('CONFIG_VTE')}

View File

@ -74,6 +74,8 @@ option('lzo', type : 'feature', value : 'auto',
description: 'lzo compression support')
option('rbd', type : 'feature', value : 'auto',
description: 'Ceph block device driver')
option('gtk', type : 'feature', value : 'auto',
description: 'GTK+ user interface')
option('sdl', type : 'feature', value : 'auto',
description: 'SDL user interface')
option('sdl_image', type : 'feature', value : 'auto',

View File

@ -57,7 +57,7 @@ if config_host.has_key('CONFIG_OPENGL_DMABUF')
ui_modules += {'egl-headless' : egl_headless_ss}
endif
if config_host.has_key('CONFIG_GTK')
if gtk.found()
softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('win32-kbd-hook.c'))
gtk_ss = ss.source_set()