Message ID | 1300839376-22520-2-git-send-email-aliguori@us.ibm.com |
---|---|
State | New |
Headers | show |
On Wed, Mar 23, 2011 at 12:16 AM, Anthony Liguori <aliguori@us.ibm.com> wrote: > GLib is an extremely common library that has a portable thread implementation > along with tons of other goodies. > > GLib and GObject have a fantastic amount of infrastructure we can leverage in > QEMU including an object oriented programming infrastructure. > > Short term, it has a very nice thread pool implementation that we could leverage > in something like virtio-9p. It also has a test harness implementation that > this series will use. > > Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> > --- > Makefile | 2 ++ > Makefile.objs | 2 ++ > Makefile.target | 1 + > configure | 13 +++++++++++++ > 4 files changed, 18 insertions(+), 0 deletions(-) Yes, please. I'd like to use glib to make simpletrace portable. To paraphrase the saying about non-trivial C programs and LISP interpreters: "In every cross-platform C program there is a glib." Stefan
2011/3/23 Stefan Hajnoczi <stefanha@gmail.com>: > On Wed, Mar 23, 2011 at 12:16 AM, Anthony Liguori <aliguori@us.ibm.com> wrote: >> GLib is an extremely common library that has a portable thread implementation >> along with tons of other goodies. >> >> GLib and GObject have a fantastic amount of infrastructure we can leverage in >> QEMU including an object oriented programming infrastructure. >> >> Short term, it has a very nice thread pool implementation that we could leverage >> in something like virtio-9p. It also has a test harness implementation that >> this series will use. >> >> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> >> --- >> Makefile | 2 ++ >> Makefile.objs | 2 ++ >> Makefile.target | 1 + >> configure | 13 +++++++++++++ >> 4 files changed, 18 insertions(+), 0 deletions(-) > > Yes, please. I'd like to use glib to make simpletrace portable. > > To paraphrase the saying about non-trivial C programs and LISP interpreters: > > "In every cross-platform C program there is a glib." > > Stefan > > So, breaking win32 support again? Roy
On Wed, Mar 23, 2011 at 8:19 AM, Roy Tam <roytam@gmail.com> wrote: > 2011/3/23 Stefan Hajnoczi <stefanha@gmail.com>: >> On Wed, Mar 23, 2011 at 12:16 AM, Anthony Liguori <aliguori@us.ibm.com> wrote: >>> GLib is an extremely common library that has a portable thread implementation >>> along with tons of other goodies. >>> >>> GLib and GObject have a fantastic amount of infrastructure we can leverage in >>> QEMU including an object oriented programming infrastructure. >>> >>> Short term, it has a very nice thread pool implementation that we could leverage >>> in something like virtio-9p. It also has a test harness implementation that >>> this series will use. >>> >>> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> >>> --- >>> Makefile | 2 ++ >>> Makefile.objs | 2 ++ >>> Makefile.target | 1 + >>> configure | 13 +++++++++++++ >>> 4 files changed, 18 insertions(+), 0 deletions(-) >> >> Yes, please. I'd like to use glib to make simpletrace portable. >> >> To paraphrase the saying about non-trivial C programs and LISP interpreters: >> >> "In every cross-platform C program there is a glib." >> >> Stefan >> >> > > So, breaking win32 support again? Can you please explain the win32 issue with glib? Stefan
2011/3/23 Stefan Hajnoczi <stefanha@gmail.com>: > On Wed, Mar 23, 2011 at 8:19 AM, Roy Tam <roytam@gmail.com> wrote: >> 2011/3/23 Stefan Hajnoczi <stefanha@gmail.com>: >>> On Wed, Mar 23, 2011 at 12:16 AM, Anthony Liguori <aliguori@us.ibm.com> wrote: >>>> GLib is an extremely common library that has a portable thread implementation >>>> along with tons of other goodies. >>>> >>>> GLib and GObject have a fantastic amount of infrastructure we can leverage in >>>> QEMU including an object oriented programming infrastructure. >>>> >>>> Short term, it has a very nice thread pool implementation that we could leverage >>>> in something like virtio-9p. It also has a test harness implementation that >>>> this series will use. >>>> >>>> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> >>>> --- >>>> Makefile | 2 ++ >>>> Makefile.objs | 2 ++ >>>> Makefile.target | 1 + >>>> configure | 13 +++++++++++++ >>>> 4 files changed, 18 insertions(+), 0 deletions(-) >>> >>> Yes, please. I'd like to use glib to make simpletrace portable. >>> >>> To paraphrase the saying about non-trivial C programs and LISP interpreters: >>> >>> "In every cross-platform C program there is a glib." >>> >>> Stefan >>> >>> >> >> So, breaking win32 support again? > > Can you please explain the win32 issue with glib? > > Stefan > I think I have to change my words. Glib works in win32, but adding Glib to QEMU will bloat the binary size. It adds more dependency on building and the result binary. I wonder if it is a must to add it. Roy
On 03/23/2011 09:58 AM, Roy Tam wrote: > I think I have to change my words. Glib works in win32, but adding > Glib to QEMU will bloat the binary size. It adds more dependency on > building and the result binary. I wonder if it is a must to add it. That's very far from my definition of "breaking". Paolo
On Wed, Mar 23, 2011 at 8:58 AM, Roy Tam <roytam@gmail.com> wrote: > I think I have to change my words. Glib works in win32, but adding > Glib to QEMU will bloat the binary size. It adds more dependency on > building and the result binary. I wonder if it is a must to add it. If we stick to re-implementing cross-platform wrappers then Windows support will always lag behind POSIX and developers will spend effort working around platform quirks rather than improving QEMU. Very few QEMU developers build on Windows, for example Paolo's latest Windows iothread support patches were tested under Wine. Will introducing glib add a dependency and at worst some temporary breakage? Yes, there's a risk. But longer term this is great news for Windows because it gives it a chance of actually working on a level close to *nix. Stefan
diff --git a/Makefile b/Makefile index 89e88b4..5f9b120 100644 --- a/Makefile +++ b/Makefile @@ -104,6 +104,8 @@ audio/audio.o audio/fmodaudio.o: QEMU_CFLAGS += $(FMOD_CFLAGS) QEMU_CFLAGS+=$(CURL_CFLAGS) +QEMU_CFLAGS+=$(GLIB_CFLAGS) + ui/cocoa.o: ui/cocoa.m ui/sdl.o audio/sdlaudio.o ui/sdl_zoom.o baum.o: QEMU_CFLAGS += $(SDL_CFLAGS) diff --git a/Makefile.objs b/Makefile.objs index f8cf199..b5e1c35 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -323,3 +323,5 @@ vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS) vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS) +vl.o: QEMU_CFLAGS+=$(GLIB_CFLAGS) + diff --git a/Makefile.target b/Makefile.target index 62b102a..4897e0f 100644 --- a/Makefile.target +++ b/Makefile.target @@ -204,6 +204,7 @@ QEMU_CFLAGS += $(VNC_TLS_CFLAGS) QEMU_CFLAGS += $(VNC_SASL_CFLAGS) QEMU_CFLAGS += $(VNC_JPEG_CFLAGS) QEMU_CFLAGS += $(VNC_PNG_CFLAGS) +QEMU_CFLAGS += $(GLIB_CFLAGS) # xen backend driver support obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o diff --git a/configure b/configure index 5a5827f..0302405 100755 --- a/configure +++ b/configure @@ -1670,6 +1670,18 @@ EOF fi ########################################## +# glib support probe +if $pkg_config --modversion gthread-2.0 > /dev/null 2>&1 ; then + glib_cflags=`$pkg_config --cflags gthread-2.0 2>/dev/null` + glib_libs=`$pkg_config --libs gthread-2.0 2>/dev/null` + libs_softmmu="$glib_libs $libs_softmmu" + libs_tools="$glib_libs $libs_softmmu" +else + echo "glib-2.0 required to compile QEMU" + exit 1 +fi + +########################################## # kvm probe if test "$kvm" != "no" ; then cat > $TMPC <<EOF @@ -2770,6 +2782,7 @@ if test "$bluez" = "yes" ; then echo "CONFIG_BLUEZ=y" >> $config_host_mak echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak fi +echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak if test "$xen" = "yes" ; then echo "CONFIG_XEN=y" >> $config_host_mak fi
GLib is an extremely common library that has a portable thread implementation along with tons of other goodies. GLib and GObject have a fantastic amount of infrastructure we can leverage in QEMU including an object oriented programming infrastructure. Short term, it has a very nice thread pool implementation that we could leverage in something like virtio-9p. It also has a test harness implementation that this series will use. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> --- Makefile | 2 ++ Makefile.objs | 2 ++ Makefile.target | 1 + configure | 13 +++++++++++++ 4 files changed, 18 insertions(+), 0 deletions(-)