From 2175f46a10b260eed4f961a88a5d9dcf5cf0a74a Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 4 Mar 2024 14:23:17 +0100 Subject: [PATCH] Fix rpath on Linux to handle plugins libraries loading in Editor #1941 --- .../Flax.Build/Platforms/Linux/LinuxToolchain.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Source/Tools/Flax.Build/Platforms/Linux/LinuxToolchain.cs b/Source/Tools/Flax.Build/Platforms/Linux/LinuxToolchain.cs index b5ca869f8..6aa767fc3 100644 --- a/Source/Tools/Flax.Build/Platforms/Linux/LinuxToolchain.cs +++ b/Source/Tools/Flax.Build/Platforms/Linux/LinuxToolchain.cs @@ -99,6 +99,18 @@ namespace Flax.Build.Platforms //args.Add(string.Format("-Wl,-soname=\"{0}\"", soname)); } + // Include any external folders into rpath for proper dlopen (eg. when opening Editor project with plugins) + if (options.LinkEnv.Output == LinkerOutput.SharedLibrary || options.LinkEnv.Output == LinkerOutput.Executable) + { + var originDir = Path.GetDirectoryName(outputFilePath); + foreach (var lib in options.LinkEnv.InputLibraries) + { + var libDir = Path.GetDirectoryName(lib); + if (libDir != originDir) + args.Add($"-Wl,-rpath,\"{libDir}\""); + } + } + args.Add(string.Format("-target {0}", ArchitectureName)); args.Add(string.Format("--sysroot=\"{0}\"", ToolsetRoot.Replace('\\', '/')));