On 2018/12/28 02:53, Marc Espie wrote:
> > +.if ${_LD_PROGRAM} != ${_LD_DEFAULT}
> > +_NONDEFAULT_LD = Yes
> > +.else
> > +_NONDEFAULT_LD = No
> > +.endif
> > +
> What's this ? Especially where does _LD_DEFAULT come from ?

That was a remnant of an earlier version from before I spotted that lld
was in PROPERTIES. Removing that and fixing up the bug uncovered as a
result gives this (tested on a lld and ld.bfd arches with Yes/No)::

Index: bsd.port.mk
===================================================================
RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v
retrieving revision 1.1459
diff -u -p -r1.1459 bsd.port.mk
--- bsd.port.mk 12 Dec 2018 16:17:30 -0000      1.1459
+++ bsd.port.mk 2 Jan 2019 22:12:06 -0000
@@ -393,12 +393,6 @@ BASELOCALSTATEDIR ?= ${VARBASE}
 LOCALSTATEDIR ?= ${BASELOCALSTATEDIR}
 
 RCDIR ?= /etc/rc.d
-USE_LLD ?= No
-.if ${USE_LLD:L} == "yes"
-_LD_PROGRAM = /usr/bin/ld.lld
-.else
-_LD_PROGRAM = /usr/bin/ld
-.endif
 USE_WXNEEDED ?= No
 .if ${USE_WXNEEDED:L} == "yes"
 _WXNEEDED_FLAGS = -z wxneeded
@@ -798,6 +792,25 @@ CONFIGURE_ENV += ${_EXTRA_ENV}
 MAKE_ENV += ${_EXTRA_ENV}
 .endif
 
+.if ${PROPERTIES:Mlld}
+USE_LLD ?= Yes
+.else
+USE_LLD ?= No
+.endif
+
+.if ${USE_LLD:L} == "yes"
+_LD_PROGRAM = /usr/bin/ld.lld
+.  if ! ${PROPERTIES:Mlld}
+_NONDEFAULT_LD = Yes
+.  endif
+.else
+_LD_PROGRAM = /usr/bin/ld.bfd
+.  if ${PROPERTIES:Mlld}
+_NONDEFAULT_LD = Yes
+.  endif
+.endif
+_NONDEFAULT_LD ?= No
+
 # setup locations of compilers from the base system or environment variables.
 # MODULES for compilers (gcc4.port.mk, clang.port.mk) also append to this,
 # used to write wrappers to WRKDIR/bin which is at the head of the PATH.
@@ -2673,13 +2686,15 @@ ${_PATCH_COOKIE}: ${_EXTRACT_COOKIE}
 
 # Run as _pbuild
 _post-patch-finalize:
-.if ${USE_WXNEEDED:L} == "yes" || ${USE_LLD:L} == "yes"
+.if ${USE_WXNEEDED:L} == "yes"
        @wrktmp=`df -P ${WRKOBJDIR_${PKGPATH}} | awk 'END { print $$6 }'`; \
        if ! mount | grep -q " $${wrktmp} .*wxallowed"; then \
                echo "Fatal: ${WRKOBJDIR_${PKGPATH}} must be on a wxallowed 
filesystem" \
                        "(in ${PKGPATH})" >&2; \
                false; \
        fi
+.endif
+.if ${USE_WXNEEDED:L} == "yes" || ${_NONDEFAULT_LD:L} == "yes"
        @printf '#!/bin/sh\nexec ${_LD_PROGRAM} ${_WXNEEDED_FLAGS} "$$@"\n' 
>${WRKDIR}/bin/ld
        @chmod 555 ${WRKDIR}/bin/ld
 .endif

Reply via email to