Message ID | 20170531120049.14111-1-n54@gmx.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
31.05.2017 15:00, Kamil Rytarowski wrote: > Currently ivshmem requires eventfd() which is Linux specific. > Do not and build it unconditionally on every Linux/BSD/Solaris. > > This patch indirectly fixes build failure on NetBSD, where these tools > additionally require -lrt for shm_open(3). In future there should be > added support for NetBSD and the linking addressed appropriately. Applied to -trivial, thanks! /mjt
31.05.2017 15:00, Kamil Rytarowski wrote: > Currently ivshmem requires eventfd() which is Linux specific. > Do not and build it unconditionally on every Linux/BSD/Solaris. > > This patch indirectly fixes build failure on NetBSD, where these tools > additionally require -lrt for shm_open(3). In future there should be > added support for NetBSD and the linking addressed appropriately. Unfortunately this breaks static build. $ ../configure --disable-system --disable-linux-user --static $ make V=1 ... c++ -I/usr/include/pixman-1 -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/include/libpng16 -I/build/qemu/git/tests -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g -Wl,--warn-common -m64 -static -g -o ivshmem-server libqemuutil.a libqemustub.a -lm -lgthread-2.0 -pthread -lglib-2.0 -pthread -lpcre -pthread -lz -lrt -lz -lnettle -lutil /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' collect2: error: ld returned 1 exit status Makefile:475: error building «ivshmem-server» $ _ I'll take a look at this later. reverting it for now. Thanks, /mjt
On 05.06.2017 16:29, Michael Tokarev wrote: > 31.05.2017 15:00, Kamil Rytarowski wrote: >> Currently ivshmem requires eventfd() which is Linux specific. >> Do not and build it unconditionally on every Linux/BSD/Solaris. >> >> This patch indirectly fixes build failure on NetBSD, where these tools >> additionally require -lrt for shm_open(3). In future there should be >> added support for NetBSD and the linking addressed appropriately. > > Unfortunately this breaks static build. > > $ ../configure --disable-system --disable-linux-user --static > $ make V=1 > ... > c++ -I/usr/include/pixman-1 -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -m64 -mcx16 -D_GNU_SOURCE > -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes > -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs > -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong > -I/usr/include/libpng16 -I/build/qemu/git/tests -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g -Wl,--warn-common -m64 -static -g -o ivshmem-server > libqemuutil.a libqemustub.a -lm -lgthread-2.0 -pthread -lglib-2.0 -pthread -lpcre -pthread -lz -lrt -lz -lnettle -lutil > /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/crt1.o: In function `_start': > (.text+0x20): undefined reference to `main' > collect2: error: ld returned 1 exit status > Makefile:475: error building «ivshmem-server» > $ _ > > I'll take a look at this later. reverting it for now. > > Thanks, > > /mjt > I will try to reproduce it locally.
On 5 June 2017 at 15:29, Michael Tokarev <mjt@tls.msk.ru> wrote: > 31.05.2017 15:00, Kamil Rytarowski wrote: >> Currently ivshmem requires eventfd() which is Linux specific. >> Do not and build it unconditionally on every Linux/BSD/Solaris. >> >> This patch indirectly fixes build failure on NetBSD, where these tools >> additionally require -lrt for shm_open(3). In future there should be >> added support for NetBSD and the linking addressed appropriately. > > Unfortunately this breaks static build. > > $ ../configure --disable-system --disable-linux-user --static > $ make V=1 > ... Why are you trying to build with both system emulation QEMU and linux-user QEMU disabled anyway? That doesn't leave very much left to build... thanks -- PMM
On Thu, Jun 22, 2017 at 12:54 PM, Peter Maydell <peter.maydell@linaro.org> wrote: > On 5 June 2017 at 15:29, Michael Tokarev <mjt@tls.msk.ru> wrote: [...] >> $ ../configure --disable-system --disable-linux-user --static >> $ make V=1 >> ... > > Why are you trying to build with both system emulation QEMU > and linux-user QEMU disabled anyway? That doesn't leave very > much left to build... Hmm the only point would be to build libqemuutil.a... Should the ./configure script return an error if $target_list is empty?
diff --git a/configure b/configure index 1a5ee4b909..483307be53 100755 --- a/configure +++ b/configure @@ -4928,6 +4928,8 @@ if test "$want_tools" = "yes" ; then tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then tools="qemu-nbd\$(EXESUF) $tools" + fi + if [ "$eventfd" = "yes" ]; then tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" fi fi diff --git a/contrib/ivshmem-client/Makefile.objs b/contrib/ivshmem-client/Makefile.objs index bfab2d20dd..13d864082d 100644 --- a/contrib/ivshmem-client/Makefile.objs +++ b/contrib/ivshmem-client/Makefile.objs @@ -1 +1 @@ -ivshmem-client-obj-y = ivshmem-client.o main.o +ivshmem-client-obj-$(CONFIG_IVSHMEM) = ivshmem-client.o main.o diff --git a/contrib/ivshmem-server/Makefile.objs b/contrib/ivshmem-server/Makefile.objs index c060dd3698..d9469fd777 100644 --- a/contrib/ivshmem-server/Makefile.objs +++ b/contrib/ivshmem-server/Makefile.objs @@ -1 +1 @@ -ivshmem-server-obj-y = ivshmem-server.o main.o +ivshmem-server-obj-$(CONFIG_IVSHMEM) = ivshmem-server.o main.o