summaryrefslogtreecommitdiff
path: root/Mk
diff options
context:
space:
mode:
authorOlivier Cochard <olivier@FreeBSD.org>2024-01-18 21:07:45 +0100
committerOlivier Cochard <olivier@FreeBSD.org>2024-01-18 21:13:43 +0100
commit0592024317abf61f3b824e4413ca301386c20d80 (patch)
tree8a116789f373bdb55febb664123747de06f58d77 /Mk
parent3ec82e80bbaafd1e2d16c5c2d947e581662d5a71 (diff)
downloadfreebsd-ports-0592024317abf61f3b824e4413ca301386c20d80.zip
features: Add support to enable sanitizers
Can be activated/deactivated globally via WITH_SANITIZE Can be activated individualy via WITH_SANITIZE_PORTS Each port can individually mark itself as not supporting the feature via SANITIZE_UNSAFE= Approved by: bapt, arrowd Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D43497
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Features/sanitize.mk27
-rw-r--r--Mk/bsd.port.mk2
2 files changed, 28 insertions, 1 deletions
diff --git a/Mk/Features/sanitize.mk b/Mk/Features/sanitize.mk
new file mode 100644
index 000000000000..6d2e3019705e
--- /dev/null
+++ b/Mk/Features/sanitize.mk
@@ -0,0 +1,27 @@
+# Sanitize Support
+#
+# Variables that can be used:
+#
+# WITH_SANITIZE Enable for all ports.
+# Sanitizer exits for each bug detected, so it is not
+# advisable to enable it globally.
+# WITH_SANITIZE_PORTS Enable for specified category/port-name
+# SANITIZE_FLAGS Comma-separated list of sanitizers to be enabled
+# Default: address
+#
+
+.if !defined(_SANITIZE_MK_INCLUDED)
+_SANITIZE_MK_INCLUDED= yes
+SANITIZE_Include_MAINTAINER= portmgr@FreeBSD.org
+
+. if !defined(SANITIZE_UNSAFE)
+ SANITIZE_FLAGS?= address
+. if defined(_INCLUDE_USES_MESON_MK)
+ MESON_ARGS+= -Db_sanitize=${SANITIZE_FLAGS}
+. else
+ CFLAGS+= -fsanitize=${SANITIZE_FLAGS}
+ CXXFLAGS+= -fsanitize=${SANITIZE_FLAGS}
+ LDFLAGS+= -fsanitize=${SANITIZE_FLAGS}
+. endif
+. endif
+.endif
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 203b78749fd7..f9eb4aebcb6a 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -1016,7 +1016,7 @@ LC_ALL= C
# These need to be absolute since we don't know how deep in the ports
# tree we are and thus can't go relative. They can, of course, be overridden
# by individual Makefiles or local system make configuration.
-_LIST_OF_WITH_FEATURES= debug lto ssp pie relro bind_now
+_LIST_OF_WITH_FEATURES= bind_now debug lto pie relro sanitize ssp
_DEFAULT_WITH_FEATURES= ssp
PORTSDIR?= /usr/ports
LOCALBASE?= /usr/local