From d4404ea9c7a5f37e148d22dbe05d804f2df93b11 Mon Sep 17 00:00:00 2001
From: Roy Marples <roy@marples.name>
Date: Fri, 11 Jan 2008 23:40:22 +0000
Subject: Ensure we link against libraries in /lib instead of anywhere else and
 always use the linker in /libexec instead of anywhere else.

---
 mk/lib.mk  |  2 ++
 mk/prog.mk | 11 +++++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/mk/lib.mk b/mk/lib.mk
index 43856bf2..825af96d 100644
--- a/mk/lib.mk
+++ b/mk/lib.mk
@@ -25,6 +25,8 @@ lib${LIB}.a:	${OBJS} ${STATICOBJS}
 
 ${SHLIB_NAME}: ${VERSION_MAP}
 LDFLAGS+=	-Wl,--version-script=${VERSION_MAP}
+# We need to ensure we use libraries in /lib
+LDFLAGS+=	-L/${LIBNAME} -Wl,-rpath=/${LIBNAME}
 
 ${SHLIB_NAME}:	${SOBJS}
 	@${ECHO} building shared library $@
diff --git a/mk/prog.mk b/mk/prog.mk
index cf1ea0a9..4e27becd 100644
--- a/mk/prog.mk
+++ b/mk/prog.mk
@@ -8,11 +8,14 @@ OBJS+=			${SRCS:.c=.o}
 include ${MK}/sys.mk
 # Some systems don't include /lib in their standard link path
 # so we should embed it if different
-_RPATH_SH=		if test "${SHLIBDIR}" != "/usr/${LIBNAME}"; then \
-				echo "-Wl,-rpath=/${LIBNAME}"; \
+# This is currently hardcoded for NetBSD which has two dynamic linkers
+# and we need to use the one in /libexec instead of /usr/libexec
+_DYNLINK_SH=		if test -e /libexec/ld.elf_so; then \
+				echo "-Wl,-dynamic-linker=/libexec/ld.elf_so"; \
 			fi
-_RPATH!=		${_RPATH_SH}
-LDFLAGS+=		${_RPATH}$(shell ${_RPATH_SH})
+_DYNLINK!=		${_DYNLINK_SH}
+LDFLAGS+=		${_DYNLINK}$(shell ${_DYNLINK_SH})
+LDFLAGS+=		-Wl,-rpath=/${LIBNAME} -L/${LIBNAME}
 LDFLAGS+=		${PROGLDFLAGS}
 
 all: depend ${PROG}
-- 
cgit v1.2.3