Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Jan 2025 13:50:49 GMT
From:      Joseph Mingrone <jrm@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 7a0d64f7840e - main - Mk/Uses/elfctl.mk: Add `build` and `stage` arguments
Message-ID:  <202501051350.505DonpA037656@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jrm:

URL: https://cgit.FreeBSD.org/ports/commit/?id=7a0d64f7840e94f000f3cacbd959147d54cfe37b

commit 7a0d64f7840e94f000f3cacbd959147d54cfe37b
Author:     Joseph Mingrone <jrm@FreeBSD.org>
AuthorDate: 2025-01-04 22:11:25 +0000
Commit:     Joseph Mingrone <jrm@FreeBSD.org>
CommitDate: 2025-01-05 13:50:45 +0000

    Mk/Uses/elfctl.mk: Add `build` and `stage` arguments
    
    Introduce new arguments, `build` and `stage`, to control the location
    and timing of ELF feature flag modifications.
    
    Files listed in ELF_FEATURES are interpreted as relative to:
    
        - ${BUILD_WRKSRC} when the `build` argument is supplied
        - ${STAGEDIR} when the `stage` argument is supplied
    
    Operating on binaries under ${STAGEDIR} is useful when binaries are
    modified after the build phase.  Conversely, working with binaries under
    ${BUILD_WRKSRC} is preferable when test targets are run against the
    build tree.
    
    Reviewed by:    arrowd
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D48324
---
 Mk/Uses/elfctl.mk | 37 +++++++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/Mk/Uses/elfctl.mk b/Mk/Uses/elfctl.mk
index 442f13db596f..446a57c43425 100644
--- a/Mk/Uses/elfctl.mk
+++ b/Mk/Uses/elfctl.mk
@@ -1,26 +1,39 @@
-# Change an ELF binary's feature control note
+# Set ELF binary feature control notes
 #
 # Feature:	elfctl
-# Usage:	USES=elfctl
-# Valid ARGS:	none
+# Usage:	USES=elfctl or USES=elfctl:ARGS
+# Valid ARGS:	build (default, implicit), stage
 #
-# Variables
+# Files listed in ELF_FEATURES are relative to:
+#   - ${BUILD_WRKSRC} when the `build` argument is supplied
+#   - ${STAGEDIR} when the `stage` argument is supplied.
 #
-#   ELF_FEATURES=	featurelist:path/to/file1 \
-#			featurelist:path/to/file1 \
-			featurelist:path/to/file2
+# Variables:
 #
-# The file paths listed in ELF_FEATURES are relative to ${BUILD_WRKSRC}.
+# ELF_FEATURES=	featurelist:path/to/file1 \
+#		featurelist:path/to/file2
 #
 
 .if !defined(_INCLUDE_USES_ELFCTL_MK)
 _INCLUDE_USES_ELFCTL_MK=	yes
 
-.  if ! empty(ELF_FEATURES)
-_USES_build+=	720:elfctl-post-build
-elfctl-post-build:
+.  if empty(elfctl_ARGS)
+elfctl_ARGS=	build
+.  endif
+
+.  if ${elfctl_ARGS} == "build"
+_ELFCTL_TOPDIR=	${BUILD_WRKSRC}
+.  elif ${elfctl_ARGS} == "stage"
+_ELFCTL_TOPDIR=	${STAGEDIR}
+.  else
+IGNORE=	USES=elfctl - invalid args: [${elfctl_ARGS}] specified
+.  endif
+
+.  if !empty(ELF_FEATURES)
+_USES_${elfctl_ARGS}+=	720:elfctl-post-${elfctl_ARGS}
+elfctl-post-${elfctl_ARGS}:
 .    for feat in ${ELF_FEATURES}
-	${ELFCTL} -i -e ${feat:C/:.*//} ${BUILD_WRKSRC}/${feat:C/.*://}
+	${ELFCTL} -i -e ${feat:C/:.*//} ${_ELFCTL_TOPDIR}/${feat:C/.*://}
 .    endfor
 .  endif
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202501051350.505DonpA037656>