meson: convert VNC and dependent libraries to meson

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2020-02-06 15:48:52 +01:00
parent 35be72ba72
commit a0b93237d8
4 changed files with 45 additions and 131 deletions

122
configure vendored
View File

@ -426,12 +426,12 @@ sdl="auto"
sdl_image="auto"
virtfs=""
mpath=""
vnc="yes"
vnc="enabled"
sparse="no"
vde=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
vnc_sasl="auto"
vnc_jpeg="auto"
vnc_png="auto"
xkbcommon=""
xen=""
xen_ctrl_version=""
@ -1157,9 +1157,9 @@ for opt do
;;
--enable-mpath) mpath="yes"
;;
--disable-vnc) vnc="no"
--disable-vnc) vnc="disabled"
;;
--enable-vnc) vnc="yes"
--enable-vnc) vnc="enabled"
;;
--oss-lib=*) oss_lib="$optarg"
;;
@ -1195,17 +1195,17 @@ for opt do
;;
--disable-strip) strip_opt="no"
;;
--disable-vnc-sasl) vnc_sasl="no"
--disable-vnc-sasl) vnc_sasl="disabled"
;;
--enable-vnc-sasl) vnc_sasl="yes"
--enable-vnc-sasl) vnc_sasl="enabled"
;;
--disable-vnc-jpeg) vnc_jpeg="no"
--disable-vnc-jpeg) vnc_jpeg="disabled"
;;
--enable-vnc-jpeg) vnc_jpeg="yes"
--enable-vnc-jpeg) vnc_jpeg="enabled"
;;
--disable-vnc-png) vnc_png="no"
--disable-vnc-png) vnc_png="disabled"
;;
--enable-vnc-png) vnc_png="yes"
--enable-vnc-png) vnc_png="enabled"
;;
--disable-slirp) slirp="no"
;;
@ -3428,85 +3428,6 @@ EOF
fi
fi
##########################################
# VNC SASL detection
if test "$vnc" = "yes" && test "$vnc_sasl" != "no" ; then
cat > $TMPC <<EOF
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
# Assuming Cyrus-SASL installed in /usr prefix
# QEMU defines struct iovec in "qemu/osdep.h",
# we don't want libsasl to redefine it in <sasl/sasl.h>.
vnc_sasl_cflags="-DSTRUCT_IOVEC_DEFINED"
vnc_sasl_libs="-lsasl2"
if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
vnc_sasl=yes
libs_softmmu="$vnc_sasl_libs $libs_softmmu"
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
else
if test "$vnc_sasl" = "yes" ; then
feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
fi
vnc_sasl=no
fi
fi
##########################################
# VNC JPEG detection
if test "$vnc" = "yes" && test "$vnc_jpeg" != "no" ; then
cat > $TMPC <<EOF
#include <stdio.h>
#include <jpeglib.h>
int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
EOF
vnc_jpeg_cflags=""
vnc_jpeg_libs="-ljpeg"
if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
vnc_jpeg=yes
libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
else
if test "$vnc_jpeg" = "yes" ; then
feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
fi
vnc_jpeg=no
fi
fi
##########################################
# VNC PNG detection
if test "$vnc" = "yes" && test "$vnc_png" != "no" ; then
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
#include <stddef.h>
int main(void) {
png_structp png_ptr;
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
return png_ptr != 0;
}
EOF
if $pkg_config libpng --exists; then
vnc_png_cflags=$($pkg_config libpng --cflags)
vnc_png_libs=$($pkg_config libpng --libs)
else
vnc_png_cflags=""
vnc_png_libs="-lpng"
fi
if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
vnc_png=yes
libs_softmmu="$vnc_png_libs $libs_softmmu"
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
else
if test "$vnc_png" = "yes" ; then
feature_not_found "vnc-png" "Install libpng devel"
fi
vnc_png=no
fi
fi
##########################################
# xkbcommon probe
if test "$xkbcommon" != "no" ; then
@ -6888,24 +6809,6 @@ if test "$audio_win_int" = "yes" ; then
fi
echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
if test "$vnc" = "yes" ; then
echo "CONFIG_VNC=y" >> $config_host_mak
fi
if test "$vnc_sasl" = "yes" ; then
echo "CONFIG_VNC_SASL=y" >> $config_host_mak
fi
echo "SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
echo "SASL_LIBS=$vnc_sasl_libs" >> $config_host_mak
if test "$vnc_jpeg" = "yes" ; then
echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
fi
echo "JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
echo "JPEG_LIBS=$vnc_jpeg_libs" >> $config_host_mak
if test "$vnc_png" = "yes" ; then
echo "CONFIG_VNC_PNG=y" >> $config_host_mak
fi
echo "PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
echo "PNG_LIBS=$vnc_png_libs" >> $config_host_mak
if test "$xkbcommon" = "yes" ; then
echo "CONFIG_XKBCOMMON=y" >> $config_host_mak
echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
@ -8327,6 +8230,7 @@ NINJA=$PWD/ninjatool $meson setup \
-Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
-Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
-Dsdl=$sdl -Dsdl_image=$sdl_image \
-Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
$cross_arg \
"$PWD" "$source_path"

View File

@ -306,20 +306,24 @@ if 'CONFIG_GIO' in config_host
gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
link_args: config_host['GIO_LIBS'].split())
endif
vnc = not_found
png = not_found
if 'CONFIG_VNC_PNG' in config_host
png = declare_dependency(compile_args: config_host['PNG_CFLAGS'].split(),
link_args: config_host['PNG_LIBS'].split())
endif
jpeg = not_found
if 'CONFIG_VNC_JPEG' in config_host
jpeg = declare_dependency(compile_args: config_host['JPEG_CFLAGS'].split(),
link_args: config_host['JPEG_LIBS'].split())
endif
sasl = not_found
if 'CONFIG_VNC_SASL' in config_host
sasl = declare_dependency(compile_args: config_host['SASL_CFLAGS'].split(),
link_args: config_host['SASL_LIBS'].split())
if get_option('vnc').enabled()
vnc = declare_dependency() # dummy dependency
png = dependency('libpng', required: get_option('vnc_png'),
static: enable_static)
jpeg = cc.find_library('jpeg', has_headers: ['jpeglib.h'],
required: get_option('vnc_jpeg'),
static: enable_static)
sasl = cc.find_library('sasl2', has_headers: ['sasl/sasl.h'],
required: get_option('vnc_sasl'),
static: enable_static)
if sasl.found()
sasl = declare_dependency(dependencies: sasl,
compile_args: '-DSTRUCT_IOVEC_DEFINED')
endif
endif
fdt = not_found
if 'CONFIG_FDT' in config_host
@ -377,6 +381,10 @@ endif
config_host_data.set('CONFIG_SDL', sdl.found())
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
config_host_data.set('CONFIG_VNC', vnc.found())
config_host_data.set('CONFIG_VNC_JPEG', jpeg.found())
config_host_data.set('CONFIG_VNC_PNG', png.found())
config_host_data.set('CONFIG_VNC_SASL', sasl.found())
config_host_data.set('QEMU_VERSION', '"@0@"'.format(meson.project_version()))
config_host_data.set('QEMU_VERSION_MAJOR', meson.project_version().split('.')[0])
config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1])
@ -1286,11 +1294,11 @@ summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']
summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
summary_info += {'VirtFS support': config_host.has_key('CONFIG_VIRTFS')}
summary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
summary_info += {'VNC support': config_host.has_key('CONFIG_VNC')}
if config_host.has_key('CONFIG_VNC')
summary_info += {'VNC SASL support': config_host.has_key('CONFIG_VNC_SASL')}
summary_info += {'VNC JPEG support': config_host.has_key('CONFIG_VNC_JPEG')}
summary_info += {'VNC PNG support': config_host.has_key('CONFIG_VNC_PNG')}
summary_info += {'VNC support': vnc.found()}
if vnc.found()
summary_info += {'VNC SASL support': sasl.found()}
summary_info += {'VNC JPEG support': jpeg.found()}
summary_info += {'VNC PNG support': png.found()}
endif
summary_info += {'xen support': config_host.has_key('CONFIG_XEN_BACKEND')}
if config_host.has_key('CONFIG_XEN_BACKEND')

View File

@ -1,2 +1,6 @@
option('sdl', type : 'feature', value : 'auto')
option('sdl_image', type : 'feature', value : 'auto')
option('vnc', type : 'feature', value : 'enabled')
option('vnc_jpeg', type : 'feature', value : 'auto')
option('vnc_png', type : 'feature', value : 'auto')
option('vnc_sasl', type : 'feature', value : 'auto')

View File

@ -27,14 +27,12 @@ vnc_ss.add(files(
'vnc-ws.c',
'vnc-jobs.c',
))
vnc_ss.add(zlib)
vnc_ss.add(when: 'CONFIG_VNC_SASL', if_true: [files('vnc-auth-sasl.c'), sasl])
softmmu_ss.add_all(when: 'CONFIG_VNC', if_true: vnc_ss)
softmmu_ss.add(when: 'CONFIG_VNC', if_false: files('vnc-stubs.c'))
vnc_ss.add(zlib, png, jpeg)
vnc_ss.add(when: sasl, if_true: files('vnc-auth-sasl.c'))
softmmu_ss.add_all(when: vnc, if_true: vnc_ss)
softmmu_ss.add(when: vnc, if_false: files('vnc-stubs.c'))
softmmu_ss.add(when: [opengl, 'CONFIG_OPENGL'], if_true: files('shader.c', 'console-gl.c', 'egl-helpers.c', 'egl-context.c'))
softmmu_ss.add(when: [opengl, 'CONFIG_OPENGL_DMABUF'], if_true: files('egl-headless.c'))
softmmu_ss.add(when: 'CONFIG_VNC_PNG', if_true: png)
softmmu_ss.add(when: 'CONFIG_VNC_JPEG', if_true: jpeg)
ui_modules = {}