ivshmem-server makes use of the POSIX shared memory object interfaces. This library is provided on NetBSD in -lrt (POSIX Real-time Library). Add ./configure check if there is needed -lrt linking for shm_open() and if so use it. Introduce new configure generated variable LIBS_SHMLIB.
This fixes build issue on NetBSD. Signed-off-by: Kamil Rytarowski <n...@gmx.com> --- Makefile | 1 + configure | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/Makefile b/Makefile index 31d41a7eae..3248cb53d7 100644 --- a/Makefile +++ b/Makefile @@ -473,6 +473,7 @@ ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS) $(call LINK, $^) ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS) $(call LINK, $^) +ivshmem-server$(EXESUF): LIBS += $(LIBS_SHMLIB) module_block.h: $(SRC_PATH)/scripts/modules/module_block.py config-host.mak $(call quiet-command,$(PYTHON) $< $@ \ diff --git a/configure b/configure index 7c020c076b..50c3aee746 100755 --- a/configure +++ b/configure @@ -179,6 +179,7 @@ audio_pt_int="" audio_win_int="" cc_i386=i386-pc-linux-gnu-gcc libs_qga="" +libs_shmlib="" debug_info="yes" stack_protector="" @@ -4133,6 +4134,24 @@ elif compile_prog "" "$pthread_lib -lrt" ; then libs_qga="$libs_qga -lrt" fi +########################################## +# Do we need librt for shm_open() +cat > $TMPC <<EOF +#include <sys/mman.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <stddef.h> +int main(void) { + return shm_open(NULL, O_RDWR, 0644); +} +EOF + +if compile_prog "" "" ; then + : +elif compile_prog "" "-lrt" ; then + libs_shmlib="$libs_shmlib -lrt" +fi + if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ "$aix" != "yes" -a "$haiku" != "yes" ; then libs_softmmu="-lutil $libs_softmmu" @@ -5949,6 +5968,7 @@ echo "EXESUF=$EXESUF" >> $config_host_mak echo "DSOSUF=$DSOSUF" >> $config_host_mak echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak echo "LIBS_QGA+=$libs_qga" >> $config_host_mak +echo "LIBS_SHMLIB+=$libs_shmlib" >> $config_host_mak echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak echo "POD2MAN=$POD2MAN" >> $config_host_mak -- 2.12.2