aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-02-06 14:17:15 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2020-08-21 06:30:44 -0400
commit35be72ba729d0fcd85c929597edb692c1d0f3bdc (patch)
tree3e726ed1a4c5cbcc2fad995fee6c5dcc64163b48
parentffac93df19d33387645376c32a4a789d204e6fcd (diff)
downloadqemu-35be72ba729d0fcd85c929597edb692c1d0f3bdc.zip
qemu-35be72ba729d0fcd85c929597edb692c1d0f3bdc.tar.gz
qemu-35be72ba729d0fcd85c929597edb692c1d0f3bdc.tar.bz2
meson: move SDL and SDL-image detection to meson
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--chardev/meson.build2
-rwxr-xr-xconfigure142
-rw-r--r--meson.build32
-rw-r--r--meson_options.txt2
-rw-r--r--softmmu/main.c1
-rw-r--r--ui/meson.build4
6 files changed, 37 insertions, 146 deletions
diff --git a/chardev/meson.build b/chardev/meson.build
index 02f914d..a46a623 100644
--- a/chardev/meson.build
+++ b/chardev/meson.build
@@ -36,7 +36,7 @@ softmmu_ss.add(when: ['CONFIG_SPICE', spice], if_true: files('spice.c'))
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.add(when: [sdl, brlapi], if_true: files('baum.c'))
chardev_modules += { 'brlapi': module_ss }
diff --git a/configure b/configure
index f47eedb..5b7b932 100755
--- a/configure
+++ b/configure
@@ -422,8 +422,8 @@ curses=""
docs=""
fdt=""
netmap="no"
-sdl=""
-sdl_image=""
+sdl="auto"
+sdl_image="auto"
virtfs=""
mpath=""
vnc="yes"
@@ -1137,13 +1137,13 @@ for opt do
# configure to be used by RPM and similar macros that set
# 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"
;;
@@ -2435,7 +2435,7 @@ if test "$cocoa" = "yes"; then
error_exit "Cocoa and GTK UIs cannot both be enabled at once"
fi
gtk=no
- sdl=no
+ sdl=disabled
fi
# Some versions of Mac OS X incorrectly define SIZE_MAX
@@ -3335,125 +3335,6 @@ if test "$vte" != "no"; then
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
if test "$rdma" != "no" ; then
cat > $TMPC <<EOF
@@ -7054,14 +6935,6 @@ if test "$have_x11" = "yes" && test "$need_x11" = "yes"; then
echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
echo "X11_LIBS=$x11_libs" >> $config_host_mak
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
echo "CONFIG_COCOA=y" >> $config_host_mak
fi
@@ -8453,6 +8326,7 @@ NINJA=$PWD/ninjatool $meson setup \
-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_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
+ -Dsdl=$sdl -Dsdl_image=$sdl_image \
$cross_arg \
"$PWD" "$source_path"
diff --git a/meson.build b/meson.build
index 0b03726..f0374e8 100644
--- a/meson.build
+++ b/meson.build
@@ -11,6 +11,7 @@ cc = meson.get_compiler('c')
config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
config_all_disas = keyval.load(meson.current_build_dir() / 'config-all-disas.mak')
enable_modules = 'CONFIG_MODULES' in config_host
+enable_static = 'CONFIG_STATIC' in config_host
build_docs = 'BUILD_DOCS' in config_host
config_host_data = configuration_data()
genh = []
@@ -218,13 +219,24 @@ brlapi = not_found
if 'CONFIG_BRLAPI' in config_host
brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
endif
-sdlwindows = false
-sdl = not_found
-if 'CONFIG_SDL' in config_host
- sdl = declare_dependency(compile_args: config_host['SDL_CFLAGS'].split(),
- link_args: config_host['SDL_LIBS'].split())
- sdlwindows = config_host['SDL_LIBS'].contains('-mwindows')
+
+sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static,
+ include_type: 'system')
+sdl_image = not_found
+if sdl.found()
+ # 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
+
rbd = not_found
if 'CONFIG_RBD' in config_host
rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
@@ -363,6 +375,8 @@ endif
# 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_MAJOR', meson.project_version().split('.')[0])
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'),
'dependencies': []
}]
- if sdlwindows
+ if targetos == 'windows' and (sdl.found() or gtk.found())
execs += [{
'name': 'qemu-system-' + target_name + 'w',
'gui': true,
@@ -1239,8 +1253,8 @@ if targetos == 'darwin'
summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
endif
# TODO: add back version
-summary_info += {'SDL support': config_host.has_key('CONFIG_SDL')}
-summary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
+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 GL support': config_host.has_key('CONFIG_GTK_GL')}
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..e548211
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,2 @@
+option('sdl', type : 'feature', value : 'auto')
+option('sdl_image', type : 'feature', value : 'auto')
diff --git a/softmmu/main.c b/softmmu/main.c
index 7adc530..639c67f 100644
--- a/softmmu/main.c
+++ b/softmmu/main.c
@@ -29,6 +29,7 @@
#ifdef CONFIG_SDL
#if defined(__APPLE__) || defined(main)
#include <SDL.h>
+static int qemu_main(int argc, char **argv, char **envp);
int main(int argc, char **argv)
{
return qemu_main(argc, argv, NULL);
diff --git a/ui/meson.build b/ui/meson.build
index 66282c3..daec6c4 100644
--- a/ui/meson.build
+++ b/ui/meson.build
@@ -55,11 +55,11 @@ if config_host.has_key('CONFIG_GTK') and config_host.has_key('CONFIG_VTE')
ui_modules += {'gtk' : gtk_ss}
endif
-if config_host.has_key('CONFIG_SDL')
+if sdl.found()
softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('win32-kbd-hook.c'))
sdl_ss = ss.source_set()
- sdl_ss.add(pixman, glib, files(
+ sdl_ss.add(sdl, sdl_image, pixman, glib, files(
'sdl2-2d.c',
'sdl2-input.c',
'sdl2.c',