meson: Add build_rpath for qt5 plugin on macOS
authorNirbheek Chauhan <nirbheek@centricular.com>
Tue, 10 Jan 2023 19:41:06 +0000 (01:11 +0530)
committerNirbheek Chauhan <nirbheek@centricular.com>
Tue, 6 Jun 2023 08:08:19 +0000 (13:38 +0530)
Without this, the plugin cannot be loaded in a devenv because the
RPATH is not added to the plugin dylib. This RPATH will be stripped on
install, which is what we want.

When deploying apps, people are supposed to use `macdeployqt` to
create an AppBundle that bundles Qt for you and sets the RPATHs
correctly to point to that bundled Qt.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4776>

subprojects/gst-plugins-good/ext/qt/meson.build

index b1c47f0..e1b394a 100644 (file)
@@ -151,6 +151,15 @@ if gst_gl_have_window_eagl and gst_gl_have_platform_eagl
 endif
 
 if have_qt_windowing
+  # rpath is needed to be able to load the plugin on macOS inside the devenv
+  qmlgl_kwargs = {}
+  if host_system == 'darwin'
+    fs = import('fs')
+    qt_bindir = fs.parent(find_program('qmake').full_path())
+    qt_libdir = fs.parent(qt_bindir) / 'lib'
+    qmlgl_kwargs += {'build_rpath': qt_libdir}
+  endif
+
   # Build it!
   moc_files = qt5_mod.preprocess(moc_headers : moc_headers)
   gstqmlgl = library('gstqmlgl', sources, moc_files,
@@ -159,6 +168,7 @@ if have_qt_windowing
     include_directories: [configinc, libsinc],
     dependencies : [gst_dep, gstvideo_dep, gstgl_dep, gstglproto_dep, qt5qml_dep, optional_deps],
     override_options : ['cpp_std=c++11'],
+    kwargs: qmlgl_kwargs,
     install: true,
     install_dir : plugins_install_dir)
   plugins += [gstqmlgl]