Skip to contentSkip to conversation

Xorg & Qemu Updates

GIT PULL Saul Wold 2 participants 9 messages May 23, 2012 – May 24, 2012

lore
Share & tools
lore

Saul Wold

author
#0 lore raw

Richard,

I am pulling together tested subsets that have been lingering in the queue. I have built / rebuilt these qemu updates to use xorg-xserver. I have verified that X starts on mips/ppc/x86 and they correctly report X Server 1.11.2, which is the xorg-xserver version.

Sau!

The following changes since commit e6333825c3482a559a0c0499e17f8f48d3042ddf:

tune-mips64.inc: Add new tune file for mips64 big-endian (2012-05-20 20:24:37 -0700)

are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib sgw/xorg
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=sgw/xorg

Khem Raj (2):
qemumachines: Enable xserver-xorg as default xserver
xserver-xf86-config: Add xorg.conf for arm,mips,ppc,sh qemu machines

Saul Wold (2):
qemu.inc: Remove mesa-xlib as PREFERRED_PROVIDER
qemu: disable vnc-jpeg compression

Zhai Edwin (1):
qemu: Add an option to remove host sdl/gl checking

 meta/conf/machine/include/qemu.inc                 |   10 +-
 meta/conf/machine/qemux86-64.conf                  |    3 +-
 meta/conf/machine/qemux86.conf                     |    3 +-
 .../qemu/qemu-0.15.1/opengl-disable-option.patch   |  172 ++++++++++++++++++++
 meta/recipes-devtools/qemu/qemu.inc                |   25 +---
 meta/recipes-devtools/qemu/qemu_0.15.1.bb          |    3 +-
 .../xserver-xf86-config/qemuarm/xorg.conf          |   69 ++++++++
 .../xserver-xf86-config/qemumips/xorg.conf         |   69 ++++++++
 .../xserver-xf86-config/qemumips64/xorg.conf       |   69 ++++++++
 .../xserver-xf86-config/qemuppc/xorg.conf          |   69 ++++++++
 .../xserver-xf86-config/qemush4/xorg.conf          |   69 ++++++++
 .../xorg-xserver/xserver-xf86-config_0.1.bb        |    2 +-
 12 files changed, 536 insertions(+), 27 deletions(-)
 create mode 100644 meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf
Signature · 1 line
1.7.7.6
author
#1 lore raw

[Consolidated Pull 1/5] qemumachines: Enable xserver-xorg as default xserver

From: Khem Raj <[email protected]>

For qemux86 and qemux86-64 include qemu.inc after defining XSERVER

XSERVER variable is also weakly defined in task-core-x11.bb which means we can not use ??= otherwise when building any qemu image that uses task-core-x11.bb will get the wrong definition

So we define the XSERVER common set for qemu in qemu.inc and as we know x86 and x86-64 qemu overrides the default we include qemu.inc after that definition which means that qemux86 and qemux86-64 get their own definitions and other qemus get the definitions from qemu.inc. other non-qemu machine will get their defintion from task which points to kdrive as of now.

---
 meta/conf/machine/include/qemu.inc |    9 ++++++++-
 meta/conf/machine/qemux86-64.conf  |    3 ++-
 meta/conf/machine/qemux86.conf     |    3 ++-
 3 files changed, 12 insertions(+), 3 deletions(-)
meta/conf/machine/include/qemu.inc +8 -1
index 421a149..e384879 100644
@@ -1,7 +1,14 @@
 PCMCIA_MANAGER = "pcmciautils"
-PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
 PREFERRED_PROVIDER_virtual/libgl ?= "mesa-xlib"
 
+XSERVER ?= "xserver-xorg \
+            mesa-dri-driver-swrast \
+            xf86-input-evdev \
+            xf86-input-mouse \
+            xf86-video-fbdev \
+            xf86-input-keyboard"
+
 MACHINE_FEATURES = "apm alsa pcmcia bluetooth irda usbgadget screen"
 
 IMAGE_FSTYPES += "tar.bz2 ext3"
meta/conf/machine/qemux86-64.conf +2 -1
index 129fe9f..2e361a5 100644
@@ -6,7 +6,6 @@ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
 PREFERRED_PROVIDER_virtual/libgl ?= "mesa-dri"
 
 require conf/machine/include/tune-x86_64.inc
-require conf/machine/include/qemu.inc
 
 MACHINE_FEATURES += "x86"
 
@@ -23,6 +22,8 @@ XSERVER ?= "xserver-xorg \
            xf86-video-vmware \
            qemugl"
 
+require conf/machine/include/qemu.inc
+
 GLIBC_ADDONS = "nptl"
 GLIBC_EXTRA_OECONF = "--with-tls"
 
meta/conf/machine/qemux86.conf +2 -1
index 246d5a0..ad840c0 100644
@@ -6,7 +6,6 @@ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
 PREFERRED_PROVIDER_virtual/libgl ?= "mesa-dri"
 
 require conf/machine/include/tune-i586.inc
-require conf/machine/include/qemu.inc
 
 MACHINE_FEATURES += "x86"
 
@@ -23,6 +22,8 @@ XSERVER ?= "xserver-xorg \
            xf86-video-vmware \
            qemugl"
 
+require conf/machine/include/qemu.inc
+
 GLIBC_ADDONS = "nptl"
 GLIBC_EXTRA_OECONF = "--with-tls"
 
Signature · 1 line
1.7.7.6
author
#2 lore raw

[Consolidated Pull 2/5] xserver-xf86-config: Add xorg.conf for arm, mips, ppc, sh qemu machines

In reply to Saul Wold

From: Khem Raj <[email protected]>

---
 .../xserver-xf86-config/qemuarm/xorg.conf          |   69 ++++++++++++++++++++
 .../xserver-xf86-config/qemumips/xorg.conf         |   69 ++++++++++++++++++++
 .../xserver-xf86-config/qemumips64/xorg.conf       |   69 ++++++++++++++++++++
 .../xserver-xf86-config/qemuppc/xorg.conf          |   69 ++++++++++++++++++++
 .../xserver-xf86-config/qemush4/xorg.conf          |   69 ++++++++++++++++++++
 .../xorg-xserver/xserver-xf86-config_0.1.bb        |    2 +-
 6 files changed, 346 insertions(+), 1 deletions(-)
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf
 create mode 100644 meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf
meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf new file +69 -0
new file mode 100644
index 0000000..629ae21
@@ -0,0 +1,69 @@
+
+Section "Files"
+EndSection
+
+Section "InputDevice"
+    Identifier    "Generic Keyboard"
+    Driver        "evdev"
+    Option        "CoreKeyboard"
+    Option        "Device"      "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
+    Option        "XkbRules"    "xorg"
+    Option        "XkbModel"    "evdev"
+    Option        "XkbLayout"    "us"
+EndSection
+
+Section "InputDevice"
+    Identifier    "Configured Mouse"
+    Driver        "mouse"
+    Option        "CorePointer"
+    Option        "Device"        "/dev/input/mice"
+    Option        "Protocol"        "ImPS/2"
+    Option        "ZAxisMapping"        "4 5"
+    Option        "Emulate3Buttons"    "true"
+EndSection
+
+Section "InputDevice"
+    Identifier    "Qemu Tablet"
+    Driver        "evdev"
+    Option        "CorePointer"
+    Option        "Device"        "/dev/input/touchscreen0"
+    Option        "USB"           "on"
+EndSection
+
+Section "Device"
+    Identifier    "Graphics Controller"
+    Driver        "fbdev"
+EndSection
+
+Section "Monitor"
+    Identifier    "Generic Monitor"
+    Option        "DPMS"
+    # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
+    Modeline "1024x600_60.00"   49.00  1024 1072 1168 1312  600 603 613 624 -hsync +vsync
+    # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
+    ModeLine "640x480"    25.2  640  656  752  800    480  490  492  525 -hsync -vsync
+    # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
+    ModeLine "640x480"    31.5  640  664  704  832    480  489  491  520 -hsync -vsync
+    # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
+    ModeLine "640x480"    31.5  640  656  720  840    480  481  484  500 -hsync -vsync
+    # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
+    ModeLine "640x480"    36.0  640  696  752  832    480  481  484  509 -hsync -vsync
+EndSection
+
+Section "Screen"
+    Identifier    "Default Screen"
+    Device        "Graphics Controller"
+    Monitor        "Generic Monitor"
+    SubSection "Display"
+        Modes     "640x480"
+    EndSubSection
+EndSection
+
+Section "ServerLayout"
+    Identifier    "Default Layout"
+    Screen        "Default Screen"
+    InputDevice    "Generic Keyboard"
+    # InputDevice    "Configured Mouse"
+    InputDevice    "QEMU Tablet"
+    Option         "AllowEmptyInput" "no"
+EndSection
meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf new file +69 -0

69 lines not on this page · raw message

meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf new file +69 -0

69 lines not on this page · raw message

meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf new file +69 -0

69 lines not on this page · raw message

meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf new file +69 -0

69 lines not on this page · raw message

meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb +1 -1
index 970b4bd..3c29f8b 100644
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.x.org"
 SECTION = "x11/base"
 LICENSE = "MIT-X"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-PR = "r10"
+PR = "r11"
 
 SRC_URI = "file://xorg.conf"
 
Signature · 1 line
1.7.7.6
author
#3 lore raw

[Consolidated Pull 5/5] qemu: disable vnc-jpeg compression

In reply to Saul Wold

This is disabled by default to ensure a deterministic build, qemu configure would sometimes detect the libjpeg and then enable this. Since mostly qemu is used locally disable by default.

---
 meta/recipes-devtools/qemu/qemu.inc       |    2 +-
 meta/recipes-devtools/qemu/qemu_0.15.1.bb |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
meta/recipes-devtools/qemu/qemu.inc +1 -1
index 75ff962..e618c1d 100644
@@ -12,7 +12,7 @@ SDL ?= "--disable-sdl"
 SDL_virtclass-native ?= ""
 SDL_virtclass-nativesdk ?= ""
 
-EXTRA_OECONF += "--target-list=${@get_qemu_target_list(d)} --disable-werror --disable-vnc-tls --audio-drv-list=oss,alsa --audio-card-list=ac97,es1370 ${SDL} --disable-curl"
+EXTRA_OECONF += "--target-list=${@get_qemu_target_list(d)} --disable-werror --disable-vnc-tls --audio-drv-list=oss,alsa --audio-card-list=ac97,es1370 ${SDL} --disable-curl --disable-vnc-jpeg"
 
 #EXTRA_OECONF += "--disable-sdl"
 
meta/recipes-devtools/qemu/qemu_0.15.1.bb +1 -1
index bdffcf4..986fa19 100644
@@ -3,7 +3,7 @@ require qemu.inc
 LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
                     file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
 
-PR = "r6"
+PR = "r7"
 
 FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
 FILESDIR = "${WORKDIR}"
Signature · 1 line
1.7.7.6
author
#4 lore raw

[Consolidated Pull 3/5] qemu.inc: Remove mesa-xlib as PREFERRED_PROVIDER

In reply to Saul Wold

The xserver-xorg uses and depends on mesa-dri, so we should use the default PREFERRED_PROVIDER of libgl as mesa-dri.

This resolves the following:
ERROR: Multiple .bb files are due to be built which each provide virtual/libgl (/intel/poky/distro/meta/recipes-graphics/mesa/mesa-dri_7.11.bb /intel/poky/distro/meta/recipes-graphics/mesa/mesa-xlib_7.11.bb).
This usually means one provides something the other doesn't and should.

---
 meta/conf/machine/include/qemu.inc |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
meta/conf/machine/include/qemu.inc +0 -1
index e384879..5d59a7f 100644
@@ -1,6 +1,5 @@
 PCMCIA_MANAGER = "pcmciautils"
 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
-PREFERRED_PROVIDER_virtual/libgl ?= "mesa-xlib"
 
 XSERVER ?= "xserver-xorg \
             mesa-dri-driver-swrast \
Signature · 1 line
1.7.7.6
author
#5 lore raw

[Consolidated Pull 4/5] qemu: Add an option to remove host sdl/gl checking

In reply to Saul Wold

From: Zhai Edwin <[email protected]>

Add an PACKAGECONFIG in qemu to disable GL acceleration:
* By default configure try best to enable GL acceleration and fail when missing host dependency(libSDL and libGL).
* End user can also choose to turn off GL capability, thus remove the host dependence in building.

[YOCTO #2407] got fixed.

---
 .../qemu/qemu-0.15.1/opengl-disable-option.patch   |  172 ++++++++++++++++++++
 meta/recipes-devtools/qemu/qemu.inc                |   23 +---
 meta/recipes-devtools/qemu/qemu_0.15.1.bb          |    1 +
 3 files changed, 176 insertions(+), 20 deletions(-)
 create mode 100644 meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch
meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch new file +172 -0
new file mode 100644
index 0000000..d0c5f23
@@ -0,0 +1,172 @@
+Add an option gl-accel to disable GL acceleration:
+* When enabled, configure try best to enable GL acceleration and fail when
+  missing host dependency(libSDL and libGL), which is the default.
+* When disabled, end user choose to turn off GL capability, thus remove the
+  host dependence in building.
+
+Upstream-Status: Inappropriate [other] - depends on GL patch
+
+Signed-off-by: Zhai Edwin <[email protected]>
+
+Index: qemu-0.15.1/Makefile.target
+===================================================================
+--- qemu-0.15.1.orig/Makefile.target	2012-05-14 21:23:36.000000000 +0800
++++ qemu-0.15.1/Makefile.target	2012-05-14 21:26:19.000000000 +0800
+@@ -79,15 +79,20 @@
+ libobj-y += cpuid.o
+ endif
+ libobj-$(CONFIG_NEED_MMU) += mmu.o
++
+ ifndef CONFIG_LINUX_USER
++ifdef CONFIG_GL_ACCEL
+ libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
+ libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
+ else
+-ifdef CONFIG_SDL
+ libobj-$(TARGET_I386) += dummygl.o
+ libobj-$(TARGET_X86_64) += dummygl.o
+-endif
++endif #CONFIG_GL_ACCEL
++else
++libobj-$(TARGET_I386) += dummygl.o
++libobj-$(TARGET_X86_64) += dummygl.o
+ endif #CONFIG_LINUX_USER
++
+ libobj-$(TARGET_ARM) += dummygl.o
+ libobj-$(TARGET_MIPS) += dummygl.o
+ libobj-$(TARGET_MIPS64) += dummygl.o
+@@ -262,8 +267,10 @@
+ obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
+ 
+ ifeq ($(TARGET_BASE_ARCH), i386)
++ifdef CONFIG_GL_ACCEL
+ QEMU_CFLAGS += -DTARGET_OPENGL_OK
+ endif
++endif
+ 
+ # shared objects
+ obj-ppc-y = ppc.o
+@@ -409,8 +416,6 @@
+ 
+ monitor.o: hmp-commands.h qmp-commands.h
+ 
+-LIBS += -lGL -lGLU
+-
+ $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)
+ 
+ obj-y += $(addprefix ../, $(common-obj-y))
+Index: qemu-0.15.1/configure
+===================================================================
+--- qemu-0.15.1.orig/configure	2012-05-14 21:23:34.000000000 +0800
++++ qemu-0.15.1/configure	2012-05-14 21:23:36.000000000 +0800
+@@ -179,6 +179,7 @@
+ smartcard_nss=""
+ usb_redir=""
+ opengl=""
++gl_accel="yes"
+ guest_agent="yes"
+ 
+ # parse CC options first
+@@ -739,6 +740,10 @@
+   ;;
+   --enable-opengl) opengl="yes"
+   ;;
++  --disable-gl-accel) gl_accel="no"
++  ;;
++  --enable-gl-accel) gl_accel="yes"
++  ;;
+   --*dir)
+   ;;
+   --disable-rbd) rbd="no"
+@@ -2016,6 +2021,39 @@
+   fi
+ fi
+ 
++#####################################################
++# GL acceleration probe depending on gl, glu and sdl
++if test "$gl_accel" != "no" ; then
++  if test "$sdl" = "no" ; then
++    gl_accel=no
++    echo "libSDL and header no found to build opengl acceleration for qemu-native.
++    Ubuntu package names are: libsdl1.2-dev.
++    Fedora package names are: SDL-devel."
++    exit 1;
++  fi
++
++  gl_accel_libs="-lGL -lGLU"
++  cat > $TMPC << EOF
++#include <X11/Xlib.h>
++#include <GL/gl.h>
++#include <GL/glx.h>
++#include <GL/glu.h>
++int main(void) { GL_VERSION; return 0; }
++EOF
++  if compile_prog "" "-lGL -lGLU" ; then
++    gl_accel=yes
++    libs_softmmu="$gl_accel_libs $libs_softmmu"
++  else
++    feature_not_found "gl_accel"
++    gl_accel=no
++    gl_accel_libs=
++    echo "libGL.so and libGLU.so not found to build opengl acceleration for qemu-native.
++    Ubuntu package names are: libgl1-mesa-dev, libglu1-mesa-dev and libsdl1.2-dev.
++    Fedora package names are: mesa-libGL mesa-libGLU SDL-devel."
++    exit 1;
++  fi
++fi
++
+ #
+ # Check for xxxat() functions when we are building linux-user
+ # emulator.  This is done because older glibc versions don't
+@@ -2717,6 +2755,7 @@
+ echo "nss used          $smartcard_nss"
+ echo "usb net redir     $usb_redir"
+ echo "OpenGL support    $opengl"
++echo "GL acceleration support    $gl_accel"
+ echo "build guest agent $guest_agent"
+ 
+ if test $sdl_too_old = "yes"; then
+@@ -3020,6 +3059,10 @@
+   echo "CONFIG_OPENGL=y" >> $config_host_mak
+ fi
+ 
++if test "$gl_accel" = "yes" ; then
++  echo "CONFIG_GL_ACCEL=y" >> $config_host_mak
++fi
++
+ # XXX: suppress that
+ if [ "$bsd" = "yes" ] ; then
+   echo "CONFIG_BSD=y" >> $config_host_mak
+Index: qemu-0.15.1/qemu-char.c
+===================================================================
+--- qemu-0.15.1.orig/qemu-char.c	2012-05-14 21:23:35.000000000 +0800
++++ qemu-0.15.1/qemu-char.c	2012-05-14 21:23:36.000000000 +0800
+@@ -2387,7 +2387,6 @@
+     return d->outbuf_size;
+ }
+ 
+-#define TARGET_OPENGL_OK
+ #if defined(TARGET_OPENGL_OK)
+ static uint8_t buffer[32];
+ static int buffer_len;
+@@ -2447,7 +2446,7 @@
+     return chr;
+ }
+ #else
+-#define qemu_chr_open_opengl() 0
++#define qemu_chr_open_opengl NULL
+ #endif
+ 
+ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
+Index: qemu-0.15.1/vl.c
+===================================================================
+--- qemu-0.15.1.orig/vl.c	2012-05-14 21:23:35.000000000 +0800
++++ qemu-0.15.1/vl.c	2012-05-14 21:23:36.000000000 +0800
+@@ -2067,7 +2067,6 @@
+     return popt;
+ }
+ 
+-#define TARGET_OPENGL_OK
+ int main(int argc, char **argv, char **envp)
+ {
+     const char *gdbstub_dev = NULL;
meta/recipes-devtools/qemu/qemu.inc +3 -20
index 93325c3..75ff962 100644
@@ -19,26 +19,6 @@ EXTRA_OECONF += "--target-list=${@get_qemu_target_list(d)} --disable-werror --di
 
 inherit autotools
 
-# For our gl powered QEMU you need libGL and SDL headers
-do_configure_prepend_virtclass-native() {
-    libgl='no'
-    libsdl='no'
-
-    test -e /usr/lib/libGL.so -a -e /usr/lib/libGLU.so && libgl='yes'
-    test -e /usr/lib64/libGL.so -a -e /usr/lib64/libGLU.so && libgl='yes'
-    test -e /usr/lib/*-linux-gnu/libGL.so -a -e /usr/lib/*-linux-gnu/libGLU.so && libgl='yes'
-
-    test -e /usr/lib/pkgconfig/sdl.pc -o -e /usr/lib64/pkgconfig/sdl.pc -o -e /usr/include/SDL/SDL.h && libsdl='yes'
-
-
-    if [ "$libsdl" != 'yes' -o "$libgl" != 'yes' ]; then
-       echo "You need libGL.so and libGLU.so to exist in your library path and the development headers for SDL installed to build qemu-native.
-       Ubuntu package names are: libgl1-mesa-dev, libglu1-mesa-dev and libsdl1.2-dev.
-       Fedora package names are: mesa-libGL mesa-libGLU SDL-devel."
-       exit 1;
-    fi
-}
-
 do_configure() {
     # Handle distros such as CentOS 5 32-bit that do not have kvm support
     KVMOPTS="--disable-kvm"
@@ -57,6 +37,9 @@ do_install () {
 	install -m 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
 }
 
+PACKAGECONFIG ??= "gl"
+PACKAGECONFIG[gl] = "--enable-gl-accel,--disable-gl-accel,,"
+
 DEPENDS_virtclass-native = "zlib-native alsa-lib-native glib-2.0-native"
 DEPENDS_virtclass-nativesdk = "zlib-nativesdk libsdl-nativesdk glib-2.0-nativesdk \
                                ${@base_contains('DISTRO_FEATURES', 'x11', 'qemugl-nativesdk', '', d)}"
meta/recipes-devtools/qemu/qemu_0.15.1.bb +1 -0
index e90f339..bdffcf4 100644
@@ -31,6 +31,7 @@ QEMUGLPATCHES = "\
     file://qemugl-fix.patch \
     file://opengl-sdl-fix.patch \
     file://opengl-args-copy-fix.patch \
+    file://opengl-disable-option.patch \
     "
 
 SRC_URI_append_virtclass-native = "\
Signature · 1 line
1.7.7.6
author
#6 lore raw

Re: [Consolidated Pull 4/5] qemu: Add an option to remove host sdl/gl checking

Quoted 10 lines · Saul Wold

From: Zhai Edwin<[email protected]>

Add an PACKAGECONFIG in qemu to disable GL acceleration:
* By default configure try best to enable GL acceleration and fail when missing host dependency(libSDL and libGL).
* End user can also choose to turn off GL capability, thus remove the host dependence in building.

[YOCTO #2407] got fixed.

I think I found a problem with this when building for the target, so I pulled it from the branch.

Sau!

Quoted 239 lines
---
  .../qemu/qemu-0.15.1/opengl-disable-option.patch   |  172 ++++++++++++++++++++
  meta/recipes-devtools/qemu/qemu.inc                |   23 +---
  meta/recipes-devtools/qemu/qemu_0.15.1.bb          |    1 +
  3 files changed, 176 insertions(+), 20 deletions(-)

create mode 100644 meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch

meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch new file +172 -0
new file mode 100644
index 0000000..d0c5f23
@@ -0,0 +1,172 @@
+Add an option gl-accel to disable GL acceleration:
+* When enabled, configure try best to enable GL acceleration and fail when
+  missing host dependency(libSDL and libGL), which is the default.
+* When disabled, end user choose to turn off GL capability, thus remove the
+  host dependence in building.
+
+Upstream-Status: Inappropriate [other] - depends on GL patch
+
+Signed-off-by: Zhai Edwin<[email protected]>
+
+Index: qemu-0.15.1/Makefile.target
+===================================================================
+--- qemu-0.15.1.orig/Makefile.target	2012-05-14 21:23:36.000000000 +0800
++++ qemu-0.15.1/Makefile.target	2012-05-14 21:26:19.000000000 +0800
+@@ -79,15 +79,20 @@
+ libobj-y += cpuid.o
+ endif
+ libobj-$(CONFIG_NEED_MMU) += mmu.o
++
+ ifndef CONFIG_LINUX_USER
++ifdef CONFIG_GL_ACCEL
+ libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
+ libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
+ else
+-ifdef CONFIG_SDL
+ libobj-$(TARGET_I386) += dummygl.o
+ libobj-$(TARGET_X86_64) += dummygl.o
+-endif
++endif #CONFIG_GL_ACCEL
++else
++libobj-$(TARGET_I386) += dummygl.o
++libobj-$(TARGET_X86_64) += dummygl.o
+ endif #CONFIG_LINUX_USER
++
+ libobj-$(TARGET_ARM) += dummygl.o
+ libobj-$(TARGET_MIPS) += dummygl.o
+ libobj-$(TARGET_MIPS64) += dummygl.o
+@@ -262,8 +267,10 @@
+ obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
+
+ ifeq ($(TARGET_BASE_ARCH), i386)
++ifdef CONFIG_GL_ACCEL
+ QEMU_CFLAGS += -DTARGET_OPENGL_OK
+ endif
++endif
+
+ # shared objects
+ obj-ppc-y = ppc.o
+@@ -409,8 +416,6 @@
+
+ monitor.o: hmp-commands.h qmp-commands.h
+
+-LIBS += -lGL -lGLU
+-
+ $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)
+
+ obj-y += $(addprefix ../, $(common-obj-y))
+Index: qemu-0.15.1/configure
+===================================================================
+--- qemu-0.15.1.orig/configure	2012-05-14 21:23:34.000000000 +0800
++++ qemu-0.15.1/configure	2012-05-14 21:23:36.000000000 +0800
+@@ -179,6 +179,7 @@
+ smartcard_nss=""
+ usb_redir=""
+ opengl=""
++gl_accel="yes"
+ guest_agent="yes"
+
+ # parse CC options first
+@@ -739,6 +740,10 @@
+   ;;
+   --enable-opengl) opengl="yes"
+   ;;
++  --disable-gl-accel) gl_accel="no"
++  ;;
++  --enable-gl-accel) gl_accel="yes"
++  ;;
+   --*dir)
+   ;;
+   --disable-rbd) rbd="no"
+@@ -2016,6 +2021,39 @@
+   fi
+ fi
+
++#####################################################
++# GL acceleration probe depending on gl, glu and sdl
++if test "$gl_accel" != "no" ; then
++  if test "$sdl" = "no" ; then
++    gl_accel=no
++    echo "libSDL and header no found to build opengl acceleration for qemu-native.
++    Ubuntu package names are: libsdl1.2-dev.
++    Fedora package names are: SDL-devel."
++    exit 1;
++  fi
++
++  gl_accel_libs="-lGL -lGLU"
++  cat>  $TMPC<<  EOF
++#include<X11/Xlib.h>
++#include<GL/gl.h>
++#include<GL/glx.h>
++#include<GL/glu.h>
++int main(void) { GL_VERSION; return 0; }
++EOF
++  if compile_prog "" "-lGL -lGLU" ; then
++    gl_accel=yes
++    libs_softmmu="$gl_accel_libs $libs_softmmu"
++  else
++    feature_not_found "gl_accel"
++    gl_accel=no
++    gl_accel_libs=
++    echo "libGL.so and libGLU.so not found to build opengl acceleration for qemu-native.
++    Ubuntu package names are: libgl1-mesa-dev, libglu1-mesa-dev and libsdl1.2-dev.
++    Fedora package names are: mesa-libGL mesa-libGLU SDL-devel."
++    exit 1;
++  fi
++fi
++
+ #
+ # Check for xxxat() functions when we are building linux-user
+ # emulator.  This is done because older glibc versions don't
+@@ -2717,6 +2755,7 @@
+ echo "nss used          $smartcard_nss"
+ echo "usb net redir     $usb_redir"
+ echo "OpenGL support    $opengl"
++echo "GL acceleration support    $gl_accel"
+ echo "build guest agent $guest_agent"
+
+ if test $sdl_too_old = "yes"; then
+@@ -3020,6 +3059,10 @@
+   echo "CONFIG_OPENGL=y">>  $config_host_mak
+ fi
+
++if test "$gl_accel" = "yes" ; then
++  echo "CONFIG_GL_ACCEL=y">>  $config_host_mak
++fi
++
+ # XXX: suppress that
+ if [ "$bsd" = "yes" ] ; then
+   echo "CONFIG_BSD=y">>  $config_host_mak
+Index: qemu-0.15.1/qemu-char.c
+===================================================================
+--- qemu-0.15.1.orig/qemu-char.c	2012-05-14 21:23:35.000000000 +0800
++++ qemu-0.15.1/qemu-char.c	2012-05-14 21:23:36.000000000 +0800
+@@ -2387,7 +2387,6 @@
+     return d->outbuf_size;
+ }
+
+-#define TARGET_OPENGL_OK
+ #if defined(TARGET_OPENGL_OK)
+ static uint8_t buffer[32];
+ static int buffer_len;
+@@ -2447,7 +2446,7 @@
+     return chr;
+ }
+ #else
+-#define qemu_chr_open_opengl() 0
++#define qemu_chr_open_opengl NULL
+ #endif
+
+ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
+Index: qemu-0.15.1/vl.c
+===================================================================
+--- qemu-0.15.1.orig/vl.c	2012-05-14 21:23:35.000000000 +0800
++++ qemu-0.15.1/vl.c	2012-05-14 21:23:36.000000000 +0800
+@@ -2067,7 +2067,6 @@
+     return popt;
+ }
+
+-#define TARGET_OPENGL_OK
+ int main(int argc, char **argv, char **envp)
+ {
+     const char *gdbstub_dev = NULL;
meta/recipes-devtools/qemu/qemu.inc +3 -20
index 93325c3..75ff962 100644
@@ -19,26 +19,6 @@ EXTRA_OECONF += "--target-list=${@get_qemu_target_list(d)} --disable-werror --di
 
  inherit autotools
 
-# For our gl powered QEMU you need libGL and SDL headers
-do_configure_prepend_virtclass-native() {
-    libgl='no'
-    libsdl='no'
-
-    test -e /usr/lib/libGL.so -a -e /usr/lib/libGLU.so&&  libgl='yes'
-    test -e /usr/lib64/libGL.so -a -e /usr/lib64/libGLU.so&&  libgl='yes'
-    test -e /usr/lib/*-linux-gnu/libGL.so -a -e /usr/lib/*-linux-gnu/libGLU.so&&  libgl='yes'
-
-    test -e /usr/lib/pkgconfig/sdl.pc -o -e /usr/lib64/pkgconfig/sdl.pc -o -e /usr/include/SDL/SDL.h&&  libsdl='yes'
-
-
-    if [ "$libsdl" != 'yes' -o "$libgl" != 'yes' ]; then
-       echo "You need libGL.so and libGLU.so to exist in your library path and the development headers for SDL installed to build qemu-native.
-       Ubuntu package names are: libgl1-mesa-dev, libglu1-mesa-dev and libsdl1.2-dev.
-       Fedora package names are: mesa-libGL mesa-libGLU SDL-devel."
-       exit 1;
-    fi
-}
-
  do_configure() {
      # Handle distros such as CentOS 5 32-bit that do not have kvm support
      KVMOPTS="--disable-kvm"
@@ -57,6 +37,9 @@ do_install () {
  	install -m 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
  }
 
+PACKAGECONFIG ??= "gl"
+PACKAGECONFIG[gl] = "--enable-gl-accel,--disable-gl-accel,,"
+
  DEPENDS_virtclass-native = "zlib-native alsa-lib-native glib-2.0-native"
  DEPENDS_virtclass-nativesdk = "zlib-nativesdk libsdl-nativesdk glib-2.0-nativesdk \
                                 ${@base_contains('DISTRO_FEATURES', 'x11', 'qemugl-nativesdk', '', d)}"
meta/recipes-devtools/qemu/qemu_0.15.1.bb +1 -0
index e90f339..bdffcf4 100644
@@ -31,6 +31,7 @@ QEMUGLPATCHES = "\
      file://qemugl-fix.patch \
      file://opengl-sdl-fix.patch \
      file://opengl-args-copy-fix.patch \
+    file://opengl-disable-option.patch \
      "
 
  SRC_URI_append_virtclass-native = "\
#7 lore raw

Re: [Consolidated Pull 4/5] qemu: Add an option to remove host sdl/gl checking

Quoted 11 lines · Saul Wold
Quoted 10 lines · Saul Wold

From: Zhai Edwin<[email protected]>

Add an PACKAGECONFIG in qemu to disable GL acceleration:
* By default configure try best to enable GL acceleration and fail when missing
host dependency(libSDL and libGL).
* End user can also choose to turn off GL capability, thus remove the host
dependence in building.

Quoted 4 lines
Quoted 2 lines

[YOCTO #2407] got fixed.

I think I found a problem with this when building for the target, so I pulled it from the branch.

Which target? Can you attach build log?

Quoted 2 lines

Sau!

author
#8 lore raw

Re: [Consolidated Pull 4/5] qemu: Add an option to remove host sdl/gl checking

Quoted 12 lines · Edwin
Quoted 11 lines · Saul Wold
Quoted 10 lines · Saul Wold

From: Zhai Edwin<[email protected]>

Add an PACKAGECONFIG in qemu to disable GL acceleration:
* By default configure try best to enable GL acceleration and fail when missing
host dependency(libSDL and libGL).
* End user can also choose to turn off GL capability, thus remove the host
dependence in building.

Quoted 8 lines
Quoted 4 lines
Quoted 2 lines

[YOCTO #2407] got fixed.

I think I found a problem with this when building for the target, so I pulled it from the branch.

Which target? Can you attach build log?

I am seeing 2 different failures.

MACHINE=beagleboard
Target: qemu (target device not native)
ERROR: Function failed: do_configure (see /srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-arm/build/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/qemu-0.15.1-r7/temp/log.do_configure.20469 for further information)
ERROR: Logfile of failure stored in: /srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-arm/build/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/qemu-0.15.1-r7/temp/log.do_configure.20469 Log data follows:

| DEBUG: Executing python function sysroot_cleansstate
| DEBUG: Python function sysroot_cleansstate finished
| DEBUG: SITE files ['endian-little', 'bit-32', 'arm-common', 'common-linux', 'common-glibc', 'arm-linux', 'arm-linux-gnueabi', 'common']
| DEBUG: Executing shell function do_configure
| ERROR: unknown option --enable-gl-accel
|
| Usage: configure [options]
| Options: [defaults in brackets after descriptions

MACHINE=qemuarm
Target meta-toolchain-gmae:
ERROR: Command Error: exit status: 1 Output:
Applying patch glflags.patch
patching file Makefile.target
Hunk #1 FAILED at 362.
1 out of 1 hunk FAILED -- rejects in file Makefile.target
Patch glflags.patch does not apply (enforce with -f)
ERROR: Function failed: patch_do_patch
ERROR: Logfile of failure stored in: /srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-arm/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/qemu-nativesdk-0.15.1-r7/temp/log.do_patch.26666

Quoted 6 lines
Quoted 3 lines

Sau!