meson: move SDL and SDL-image detection to meson
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>stable-6.0
parent
ffac93df19
commit
35be72ba72
|
@ -36,7 +36,7 @@ softmmu_ss.add(when: ['CONFIG_SPICE', spice], if_true: files('spice.c'))
|
||||||
|
|
||||||
chardev_modules = {}
|
chardev_modules = {}
|
||||||
|
|
||||||
if config_host.has_key('CONFIG_BRLAPI') and config_host.has_key('CONFIG_SDL')
|
if config_host.has_key('CONFIG_BRLAPI') and sdl.found()
|
||||||
module_ss = ss.source_set()
|
module_ss = ss.source_set()
|
||||||
module_ss.add(when: [sdl, brlapi], if_true: files('baum.c'))
|
module_ss.add(when: [sdl, brlapi], if_true: files('baum.c'))
|
||||||
chardev_modules += { 'brlapi': module_ss }
|
chardev_modules += { 'brlapi': module_ss }
|
||||||
|
|
|
@ -422,8 +422,8 @@ curses=""
|
||||||
docs=""
|
docs=""
|
||||||
fdt=""
|
fdt=""
|
||||||
netmap="no"
|
netmap="no"
|
||||||
sdl=""
|
sdl="auto"
|
||||||
sdl_image=""
|
sdl_image="auto"
|
||||||
virtfs=""
|
virtfs=""
|
||||||
mpath=""
|
mpath=""
|
||||||
vnc="yes"
|
vnc="yes"
|
||||||
|
@ -1137,13 +1137,13 @@ for opt do
|
||||||
# configure to be used by RPM and similar macros that set
|
# configure to be used by RPM and similar macros that set
|
||||||
# lots of directory switches by default.
|
# lots of directory switches by default.
|
||||||
;;
|
;;
|
||||||
--disable-sdl) sdl="no"
|
--disable-sdl) sdl="disabled"
|
||||||
;;
|
;;
|
||||||
--enable-sdl) sdl="yes"
|
--enable-sdl) sdl="enabled"
|
||||||
;;
|
;;
|
||||||
--disable-sdl-image) sdl_image="no"
|
--disable-sdl-image) sdl_image="disabled"
|
||||||
;;
|
;;
|
||||||
--enable-sdl-image) sdl_image="yes"
|
--enable-sdl-image) sdl_image="enabled"
|
||||||
;;
|
;;
|
||||||
--disable-qom-cast-debug) qom_cast_debug="no"
|
--disable-qom-cast-debug) qom_cast_debug="no"
|
||||||
;;
|
;;
|
||||||
|
@ -2435,7 +2435,7 @@ if test "$cocoa" = "yes"; then
|
||||||
error_exit "Cocoa and GTK UIs cannot both be enabled at once"
|
error_exit "Cocoa and GTK UIs cannot both be enabled at once"
|
||||||
fi
|
fi
|
||||||
gtk=no
|
gtk=no
|
||||||
sdl=no
|
sdl=disabled
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Some versions of Mac OS X incorrectly define SIZE_MAX
|
# Some versions of Mac OS X incorrectly define SIZE_MAX
|
||||||
|
@ -3334,125 +3334,6 @@ if test "$vte" != "no"; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##########################################
|
|
||||||
# SDL probe
|
|
||||||
|
|
||||||
# Look for sdl configuration program (pkg-config or sdl2-config). Try
|
|
||||||
# sdl2-config even without cross prefix, and favour pkg-config over sdl2-config.
|
|
||||||
|
|
||||||
sdl_probe ()
|
|
||||||
{
|
|
||||||
if $pkg_config sdl2 --exists; then
|
|
||||||
sdlconfig="$pkg_config sdl2"
|
|
||||||
sdlversion=$($sdlconfig --modversion 2>/dev/null)
|
|
||||||
elif has "$sdl2_config"; then
|
|
||||||
sdlconfig="$sdl2_config"
|
|
||||||
sdlversion=$($sdlconfig --version)
|
|
||||||
else
|
|
||||||
if test "$sdl" = "yes" ; then
|
|
||||||
feature_not_found "sdl" "Install SDL2-devel"
|
|
||||||
fi
|
|
||||||
sdl=no
|
|
||||||
# no need to do the rest
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl2-config; then
|
|
||||||
echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat > $TMPC << EOF
|
|
||||||
#include <SDL.h>
|
|
||||||
#undef main /* We don't want SDL to override our main() */
|
|
||||||
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
|
|
||||||
EOF
|
|
||||||
sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
|
|
||||||
sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
|
|
||||||
if test "$static" = "yes" ; then
|
|
||||||
if $pkg_config sdl2 --exists; then
|
|
||||||
sdl_libs=$($pkg_config sdl2 --static --libs 2>/dev/null)
|
|
||||||
else
|
|
||||||
sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
sdl_libs=$($sdlconfig --libs 2>/dev/null)
|
|
||||||
fi
|
|
||||||
if compile_prog "$sdl_cflags" "$sdl_libs" ; then
|
|
||||||
sdl=yes
|
|
||||||
|
|
||||||
# static link with sdl ? (note: sdl.pc's --static --libs is broken)
|
|
||||||
if test "$sdl" = "yes" && test "$static" = "yes" ; then
|
|
||||||
if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
|
|
||||||
sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
|
|
||||||
sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
|
|
||||||
fi
|
|
||||||
if compile_prog "$sdl_cflags" "$sdl_libs" ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
sdl=no
|
|
||||||
fi
|
|
||||||
fi # static link
|
|
||||||
else # sdl not found
|
|
||||||
if test "$sdl" = "yes" ; then
|
|
||||||
feature_not_found "sdl" "Install SDL2 devel"
|
|
||||||
fi
|
|
||||||
sdl=no
|
|
||||||
fi # sdl compile test
|
|
||||||
}
|
|
||||||
|
|
||||||
sdl_image_probe ()
|
|
||||||
{
|
|
||||||
if test "$sdl_image" != "no" ; then
|
|
||||||
if $pkg_config SDL2_image --exists; then
|
|
||||||
if test "$static" = "yes"; then
|
|
||||||
sdl_image_libs=$($pkg_config SDL2_image --libs --static 2>/dev/null)
|
|
||||||
else
|
|
||||||
sdl_image_libs=$($pkg_config SDL2_image --libs 2>/dev/null)
|
|
||||||
fi
|
|
||||||
sdl_image_cflags=$($pkg_config SDL2_image --cflags 2>/dev/null)
|
|
||||||
sdl_image=yes
|
|
||||||
|
|
||||||
sdl_cflags="$sdl_cflags $sdl_image_cflags"
|
|
||||||
sdl_libs="$sdl_libs $sdl_image_libs"
|
|
||||||
else
|
|
||||||
if test "$sdl_image" = "yes" ; then
|
|
||||||
feature_not_found "sdl_image" "Install SDL Image devel"
|
|
||||||
else
|
|
||||||
sdl_image=no
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if test "$sdl" != "no" ; then
|
|
||||||
sdl_probe
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$sdl" = "yes" ; then
|
|
||||||
sdl_image_probe
|
|
||||||
else
|
|
||||||
if test "$sdl_image" = "yes"; then
|
|
||||||
echo "warning: SDL Image requested, but SDL is not available, disabling"
|
|
||||||
fi
|
|
||||||
sdl_image=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$sdl" = "yes" ; then
|
|
||||||
cat > $TMPC <<EOF
|
|
||||||
#include <SDL.h>
|
|
||||||
#if defined(SDL_VIDEO_DRIVER_X11)
|
|
||||||
#include <X11/XKBlib.h>
|
|
||||||
#else
|
|
||||||
#error No x11 support
|
|
||||||
#endif
|
|
||||||
int main(void) { return 0; }
|
|
||||||
EOF
|
|
||||||
if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
|
|
||||||
need_x11=yes
|
|
||||||
sdl_cflags="$sdl_cflags $x11_cflags"
|
|
||||||
sdl_libs="$sdl_libs $x11_libs"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# RDMA needs OpenFabrics libraries
|
# RDMA needs OpenFabrics libraries
|
||||||
if test "$rdma" != "no" ; then
|
if test "$rdma" != "no" ; then
|
||||||
|
@ -7054,14 +6935,6 @@ if test "$have_x11" = "yes" && test "$need_x11" = "yes"; then
|
||||||
echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
|
echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
|
||||||
echo "X11_LIBS=$x11_libs" >> $config_host_mak
|
echo "X11_LIBS=$x11_libs" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$sdl" = "yes" ; then
|
|
||||||
echo "CONFIG_SDL=m" >> $config_host_mak
|
|
||||||
echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
|
|
||||||
echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
|
|
||||||
if test "$sdl_image" = "yes" ; then
|
|
||||||
echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test "$cocoa" = "yes" ; then
|
if test "$cocoa" = "yes" ; then
|
||||||
echo "CONFIG_COCOA=y" >> $config_host_mak
|
echo "CONFIG_COCOA=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
@ -8453,6 +8326,7 @@ NINJA=$PWD/ninjatool $meson setup \
|
||||||
-Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \
|
-Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \
|
||||||
-Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
|
-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) \
|
-Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
|
||||||
|
-Dsdl=$sdl -Dsdl_image=$sdl_image \
|
||||||
$cross_arg \
|
$cross_arg \
|
||||||
"$PWD" "$source_path"
|
"$PWD" "$source_path"
|
||||||
|
|
||||||
|
|
32
meson.build
32
meson.build
|
@ -11,6 +11,7 @@ cc = meson.get_compiler('c')
|
||||||
config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
|
config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
|
||||||
config_all_disas = keyval.load(meson.current_build_dir() / 'config-all-disas.mak')
|
config_all_disas = keyval.load(meson.current_build_dir() / 'config-all-disas.mak')
|
||||||
enable_modules = 'CONFIG_MODULES' in config_host
|
enable_modules = 'CONFIG_MODULES' in config_host
|
||||||
|
enable_static = 'CONFIG_STATIC' in config_host
|
||||||
build_docs = 'BUILD_DOCS' in config_host
|
build_docs = 'BUILD_DOCS' in config_host
|
||||||
config_host_data = configuration_data()
|
config_host_data = configuration_data()
|
||||||
genh = []
|
genh = []
|
||||||
|
@ -218,13 +219,24 @@ brlapi = not_found
|
||||||
if 'CONFIG_BRLAPI' in config_host
|
if 'CONFIG_BRLAPI' in config_host
|
||||||
brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
|
brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
|
||||||
endif
|
endif
|
||||||
sdlwindows = false
|
|
||||||
sdl = not_found
|
sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static,
|
||||||
if 'CONFIG_SDL' in config_host
|
include_type: 'system')
|
||||||
sdl = declare_dependency(compile_args: config_host['SDL_CFLAGS'].split(),
|
sdl_image = not_found
|
||||||
link_args: config_host['SDL_LIBS'].split())
|
if sdl.found()
|
||||||
sdlwindows = config_host['SDL_LIBS'].contains('-mwindows')
|
# work around 2.0.8 bug
|
||||||
|
sdl = declare_dependency(compile_args: '-Wno-undef',
|
||||||
|
dependencies: sdl)
|
||||||
|
sdl_image = dependency('sdl-image', required: get_option('sdl_image'),
|
||||||
|
static: enable_static)
|
||||||
|
else
|
||||||
|
if get_option('sdl_image').enabled()
|
||||||
|
error('sdl-image required, but SDL was @0@',
|
||||||
|
get_option('sdl').disabled() ? 'disabled' : 'not found')
|
||||||
|
endif
|
||||||
|
sdl_image = not_found
|
||||||
endif
|
endif
|
||||||
|
|
||||||
rbd = not_found
|
rbd = not_found
|
||||||
if 'CONFIG_RBD' in config_host
|
if 'CONFIG_RBD' in config_host
|
||||||
rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
|
rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
|
||||||
|
@ -363,6 +375,8 @@ endif
|
||||||
|
|
||||||
# Create config-host.h
|
# Create config-host.h
|
||||||
|
|
||||||
|
config_host_data.set('CONFIG_SDL', sdl.found())
|
||||||
|
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
|
||||||
config_host_data.set('QEMU_VERSION', '"@0@"'.format(meson.project_version()))
|
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_MAJOR', meson.project_version().split('.')[0])
|
||||||
config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1])
|
config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1])
|
||||||
|
@ -963,7 +977,7 @@ foreach target : target_dirs
|
||||||
'sources': files('softmmu/main.c'),
|
'sources': files('softmmu/main.c'),
|
||||||
'dependencies': []
|
'dependencies': []
|
||||||
}]
|
}]
|
||||||
if sdlwindows
|
if targetos == 'windows' and (sdl.found() or gtk.found())
|
||||||
execs += [{
|
execs += [{
|
||||||
'name': 'qemu-system-' + target_name + 'w',
|
'name': 'qemu-system-' + target_name + 'w',
|
||||||
'gui': true,
|
'gui': true,
|
||||||
|
@ -1239,8 +1253,8 @@ if targetos == 'darwin'
|
||||||
summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
|
summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
|
||||||
endif
|
endif
|
||||||
# TODO: add back version
|
# TODO: add back version
|
||||||
summary_info += {'SDL support': config_host.has_key('CONFIG_SDL')}
|
summary_info += {'SDL support': sdl.found()}
|
||||||
summary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
|
summary_info += {'SDL image support': sdl_image.found()}
|
||||||
# TODO: add back version
|
# TODO: add back version
|
||||||
summary_info += {'GTK support': config_host.has_key('CONFIG_GTK')}
|
summary_info += {'GTK support': config_host.has_key('CONFIG_GTK')}
|
||||||
summary_info += {'GTK GL support': config_host.has_key('CONFIG_GTK_GL')}
|
summary_info += {'GTK GL support': config_host.has_key('CONFIG_GTK_GL')}
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
option('sdl', type : 'feature', value : 'auto')
|
||||||
|
option('sdl_image', type : 'feature', value : 'auto')
|
|
@ -29,6 +29,7 @@
|
||||||
#ifdef CONFIG_SDL
|
#ifdef CONFIG_SDL
|
||||||
#if defined(__APPLE__) || defined(main)
|
#if defined(__APPLE__) || defined(main)
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
static int qemu_main(int argc, char **argv, char **envp);
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
return qemu_main(argc, argv, NULL);
|
return qemu_main(argc, argv, NULL);
|
||||||
|
|
|
@ -55,11 +55,11 @@ if config_host.has_key('CONFIG_GTK') and config_host.has_key('CONFIG_VTE')
|
||||||
ui_modules += {'gtk' : gtk_ss}
|
ui_modules += {'gtk' : gtk_ss}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if config_host.has_key('CONFIG_SDL')
|
if sdl.found()
|
||||||
softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('win32-kbd-hook.c'))
|
softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('win32-kbd-hook.c'))
|
||||||
|
|
||||||
sdl_ss = ss.source_set()
|
sdl_ss = ss.source_set()
|
||||||
sdl_ss.add(pixman, glib, files(
|
sdl_ss.add(sdl, sdl_image, pixman, glib, files(
|
||||||
'sdl2-2d.c',
|
'sdl2-2d.c',
|
||||||
'sdl2-input.c',
|
'sdl2-input.c',
|
||||||
'sdl2.c',
|
'sdl2.c',
|
||||||
|
|
Loading…
Reference in New Issue