Index: Mk/bsd.options.mk =================================================================== --- Mk/bsd.options.mk +++ Mk/bsd.options.mk @@ -192,6 +192,15 @@ PLIST_SUB PORTDOCS PORTEXAMPLES SUB_FILES SUB_LIST \ TEST_TARGET USES BINARY_ALIAS _OPTIONS_DEPENDS= PKG FETCH EXTRACT PATCH BUILD LIB RUN TEST +_ALL_OPTIONS_HELPERS= ${_OPTIONS_DEPENDS:S/$/_DEPENDS/} \ + ${_OPTIONS_DEPENDS:S/$/_DEPENDS_OFF/} \ + ${_OPTIONS_FLAGS:S/$/_OFF/} ${_OPTIONS_FLAGS} \ + CMAKE_BOOL CMAKE_BOOL_OFF CMAKE_OFF CMAKE_ON \ + CONFIGURE_ENABLE CONFIGURE_OFF CONFIGURE_ON \ + CONFIGURE_WITH IMPLIES MESON_ARGS MESON_DISABLED \ + MESON_ENABLED MESON_FALSE MESON_OFF MESON_ON MESON_TRUE \ + PREVENTS PREVENTS_MSG QMAKE_OFF QMAKE_ON USE USE_OFF \ + VARS VARS_OFF # The format here is target_family:priority:target-type _OPTIONS_TARGETS= fetch:300:pre fetch:500:do fetch:700:post \ @@ -606,6 +615,18 @@ _OPTIONS_${_target}:= ${_OPTIONS_${_target}} ${_prio}:${_type}-${_target}-${opt}-off . endfor . endif +.endfor + +# Collect which options helpers are defined at this point for +# bsd.sanity.mk later to make sure no other options helper is +# defined after bsd.port.options.mk. +_OPTIONS_HELPERS_SEEN= +.for opt in ${_REALLY_ALL_POSSIBLE_OPTIONS} +. for helper in ${_ALL_OPTIONS_HELPERS} +. if defined(${opt}_${helper}) +_OPTIONS_HELPERS_SEEN+= ${opt}_${helper} +. endif +. endfor .endfor .undef (SELECTED_OPTIONS) Index: Mk/bsd.sanity.mk =================================================================== --- Mk/bsd.sanity.mk +++ Mk/bsd.sanity.mk @@ -168,6 +168,18 @@ . endif .endfor +_BROKEN_OPTIONS_HELPERS= +.for opt in ${_REALLY_ALL_POSSIBLE_OPTIONS} +. for helper in ${_ALL_OPTIONS_HELPERS} +. if defined(${opt}_${helper}) && empty(_OPTIONS_HELPERS_SEEN:M${opt}_${helper}) +_BROKEN_OPTIONS_HELPERS+= ${opt}_${helper} +. endif +. endfor +.endfor +.if !empty(_BROKEN_OPTIONS_HELPERS) +DEV_ERROR+= "The following options helpers are incorrectly set after bsd.port.options.mk and are ineffective: ${_BROKEN_OPTIONS_HELPERS}" +.endif + SANITY_UNSUPPORTED= USE_OPENAL USE_FAM USE_MAKESELF USE_ZIP USE_LHA USE_CMAKE \ USE_READLINE USE_ICONV PERL_CONFIGURE PERL_MODBUILD \ USE_PERL5_BUILD USE_PERL5_RUN USE_DISPLAY USE_FUSE \