From d4404ea9c7a5f37e148d22dbe05d804f2df93b11 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Fri, 11 Jan 2008 23:40:22 +0000 Subject: [PATCH] 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}