Under Darwin, using -shared makes it impossible to have undefined symbols
and -bundle has to be used instead; so detect the OS and use
different options.

Based-on: <20230907101811.469236-1-pbonz...@redhat.com>
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
---
        This replaces Philippe's patch to link with GLib, and also fixes
        errors like

          "_qemu_plugin_get_hwaddr", referenced from:
              _vcpu_mem in execlog.o

        I guess this shows that we're kinda losing in not using Meson
        for the plugins, but as I said I appreciate the didactic value
        of using a standalone Makefile (with only a handful of lines
        in configure).

 contrib/plugins/Makefile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/contrib/plugins/Makefile b/contrib/plugins/Makefile
index db1bd04dfa6..c26fa08441e 100644
--- a/contrib/plugins/Makefile
+++ b/contrib/plugins/Makefile
@@ -37,7 +37,11 @@ all: $(SONAMES)
        $(CC) $(CFLAGS) -c -o $@ $<
 
 lib%.so: %.o
+ifeq ($(CONFIG_DARWIN),y)
+       $(CC) -bundle -Wl,-undefined,dynamic_lookup -o $@ $^ $(LDLIBS)
+else
        $(CC) -shared -o $@ $^ $(LDLIBS)
+endif
 
 clean:
        rm -f *.o *.so *.d
-- 
2.41.0


Reply via email to