aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mk/Uses/elfctl.mk27
-rw-r--r--Mk/bsd.commands.mk1
2 files changed, 28 insertions, 0 deletions
diff --git a/Mk/Uses/elfctl.mk b/Mk/Uses/elfctl.mk
new file mode 100644
index 000000000000..442f13db596f
--- /dev/null
+++ b/Mk/Uses/elfctl.mk
@@ -0,0 +1,27 @@
+# Change an ELF binary's feature control note
+#
+# Feature: elfctl
+# Usage: USES=elfctl
+# Valid ARGS: none
+#
+# Variables
+#
+# ELF_FEATURES= featurelist:path/to/file1 \
+# featurelist:path/to/file1 \
+ featurelist:path/to/file2
+#
+# The file paths listed in ELF_FEATURES are relative to ${BUILD_WRKSRC}.
+#
+
+.if !defined(_INCLUDE_USES_ELFCTL_MK)
+_INCLUDE_USES_ELFCTL_MK= yes
+
+. if ! empty(ELF_FEATURES)
+_USES_build+= 720:elfctl-post-build
+elfctl-post-build:
+. for feat in ${ELF_FEATURES}
+ ${ELFCTL} -i -e ${feat:C/:.*//} ${BUILD_WRKSRC}/${feat:C/.*://}
+. endfor
+. endif
+
+.endif
diff --git a/Mk/bsd.commands.mk b/Mk/bsd.commands.mk
index 620c62eb1533..221a04e4b8f2 100644
--- a/Mk/bsd.commands.mk
+++ b/Mk/bsd.commands.mk
@@ -34,6 +34,7 @@ DIALOG4PORTS?= ${LOCALBASE}/bin/dialog4ports
DIFF?= /usr/bin/diff
DIRNAME?= /usr/bin/dirname
EGREP?= /usr/bin/egrep
+ELFCTL?= /usr/bin/elfctl
EXPR?= /bin/expr
FALSE?= false # Shell builtin
FILE?= /usr/bin/file