git: d697653cffd1 - main - Mk/bsd.port.mk: Allow WITHOUT_FEATURE_PORTS to cancel WITH_FEATURE

From: Gleb Popov <arrowd_at_FreeBSD.org>
Date: Thu, 29 Feb 2024 06:08:14 UTC
The branch main has been updated by arrowd:

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

commit d697653cffd19ddaf3cdee2589a830c72ab39777
Author:     Gleb Popov <arrowd@FreeBSD.org>
AuthorDate: 2024-02-17 16:39:51 +0000
Commit:     Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2024-02-29 06:07:12 +0000

    Mk/bsd.port.mk: Allow WITHOUT_FEATURE_PORTS to cancel WITH_FEATURE
    
    Differential Revision: https://reviews.freebsd.org/D43949
    
    Sponsored by:   Serenity Cybersecurity, LLC
---
 Mk/bsd.port.mk | 39 ++++++++++++++++++++++++++++++---------
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 32baeb54b242..1ec1e6c52c66 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -1322,18 +1322,39 @@ LDCONFIG32_DIR=	libdata/ldconfig32
 TMPDIR?=	/tmp
 .    endif # defined(PACKAGE_BUILDING)
 
+# If user specified WITH_FEATURE=yes for a feature that is disabled by default
+# treat it as enabled by default
+.    for feature in ${_LIST_OF_WITH_FEATURES}
+.      if ${_DEFAULT_WITH_FEATURES:N${feature}}
+.        if defined(WITH_${feature:tu})
+_DEFAULT_WITH_FEATURES+=	${feature}
+.        endif
+.      endif
+.    endfor
+
+.    for feature in ${_LIST_OF_WITH_FEATURES}
+# Create _{WITH,WITHOUT}_FEATURE vars based on user-provided {WITH,WITHOUT}_FEATURE
+.      if defined(WITH_${feature:tu})
+_WITH_${feature:tu}=	${WITH_${feature:tu}}
+.      endif
+.      if defined(WITHOUT_${feature:tu})
+_WITHOUT_${feature:tu}=	${WITHOUT_${feature:tu}}
+.      endif
 # For each Feature we support, process the
 # WITH_FEATURE_PORTS and WITHOUT_FEATURE_PORTS variables
-.    for feature in ${_LIST_OF_WITH_FEATURES}
 .      if ${_DEFAULT_WITH_FEATURES:M${feature}}
-_WITH_OR_WITHOUT=	WITHOUT
+.        if defined(WITHOUT_${feature:tu}_PORTS)
+.          if ${WITHOUT_${feature:tu}_PORTS:M${PKGORIGIN}}
+_WITHOUT_${feature:tu}=	yes
+.undef _WITH_${feature:tu}
+.          endif
+.        endif
 .      else
-_WITH_OR_WITHOUT=	WITH
-.      endif
-
-.      if defined(${_WITH_OR_WITHOUT}_${feature:tu}_PORTS)
-.        if ${${_WITH_OR_WITHOUT}_${feature:tu}_PORTS:M${PKGORIGIN}}
-${_WITH_OR_WITHOUT}_${feature:tu}=	yes
+.        if defined(WITH_${feature:tu}_PORTS)
+.          if ${WITH_${feature:tu}_PORTS:M${PKGORIGIN}}
+_WITH_${feature:tu}=	yes
+.undef _WITHOUT_${feature:tu}
+.          endif
 .        endif
 .      endif
 .    endfor
@@ -1787,7 +1808,7 @@ CFLAGS:=	${CFLAGS:C/${_CPUCFLAGS}//}
 .    endif
 
 .    for f in ${_LIST_OF_WITH_FEATURES}
-.      if defined(WITH_${f:tu}) || ( ${_DEFAULT_WITH_FEATURES:M${f}} &&  !defined(WITHOUT_${f:tu}) )
+.      if defined(_WITH_${f:tu}) || ( ${_DEFAULT_WITH_FEATURES:M${f}} &&  !defined(_WITHOUT_${f:tu}) )
 .include "${PORTSDIR}/Mk/Features/$f.mk"
 .      endif
 .    endfor