diff options
author | Olivier Cochard <olivier@FreeBSD.org> | 2024-01-18 21:07:45 +0100 |
---|---|---|
committer | Olivier Cochard <olivier@FreeBSD.org> | 2024-01-18 21:13:43 +0100 |
commit | 0592024317abf61f3b824e4413ca301386c20d80 (patch) | |
tree | 8a116789f373bdb55febb664123747de06f58d77 /Mk | |
parent | 3ec82e80bbaafd1e2d16c5c2d947e581662d5a71 (diff) | |
download | freebsd-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.mk | 27 | ||||
-rw-r--r-- | Mk/bsd.port.mk | 2 |
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 |