[PATCH] makefiles: Avoid rpath=$ORIGIN/... on NetBSD.
Francois Gouget
fgouget at codeweavers.com
Sun Sep 1 21:30:06 CDT 2019
On NetBSD using $ORIGIN in an rpath does not work when running the
executable from a symbolic link located in another directory. This is
probably because $ORIGIN is set from /proc/self/exe which contains the
paths of the symbolic link instead of that of the executable, resulting
in the rpath pointing to the wrong location.
For Wine this means running './wine notepad' from a 64 bit build does
not work because libwine.so.1 is not found.
So avoid $ORIGIN on NetBSD and instead use the full path to the build
directory. At least this will work until the build directory is moved
around.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
I don't really like this patch but it gets things going. I consider it
to be a NetBSD bug and ideally they would fix it. But then we need some
solution in the interim. Also the NetBSD developers seem to dislike the
$ORIGIN feature so I'm not sure that will happen.
https://mail-index.netbsd.org/tech-pkg/2013/11/15/msg012248.html
configure.ac | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
index 581189b2156..2a535ca90eb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -958,11 +958,21 @@ case $host_os in
WINEPRELOADER_LDFLAGS="-static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000"
WINE_TRY_CFLAGS([-Wl,--rpath,\$ORIGIN/../lib],
- [LDRPATH_INSTALL="-Wl,--rpath,\\\$\$ORIGIN/\`\$(MAKEDEP) -R \${bindir} \${libdir}\`"
- LDRPATH_LOCAL="-Wl,--rpath,\\\$\$ORIGIN/\$(top_builddir)/libs/wine"],
+ [rpath_opt="-Wl,--rpath"],
[WINE_TRY_CFLAGS([-Wl,-R,\$ORIGIN/../lib],
- [LDRPATH_INSTALL="-Wl,-R,\\\$\$ORIGIN/\`\$(MAKEDEP) -R \${bindir} \${libdir}\`"
- LDRPATH_LOCAL="-Wl,-R,\\\$\$ORIGIN/\$(top_builddir)/libs/wine"])])
+ [rpath_opt="-Wl,-R"])])
+ if test -n "$rpath_opt"
+ then
+ LDRPATH_INSTALL="$rpath_opt,\\\$\$ORIGIN/\`\$(MAKEDEP) -R \${bindir} \${libdir}\`"
+ case $host_os in
+ netbsd)
+ LDRPATH_LOCAL="$rpath_opt,$ac_pwd/libs/wine"
+ ;;
+ *)
+ LDRPATH_LOCAL="$rpath_opt,\\\$\$ORIGIN/\$(top_builddir)/libs/wine"
+ ;;
+ esac
+ fi
WINE_TRY_CFLAGS([-Wl,--enable-new-dtags],
[LDRPATH_INSTALL="$LDRPATH_INSTALL -Wl,--enable-new-dtags"])
--
2.20.1
More information about the wine-devel
mailing list