1# 2# $FreeBSD$ 3# 4# Generic mechanism to deal with WITH and WITHOUT options and turn 5# them into MK_ options. 6# 7# For each option FOO in __DEFAULT_YES_OPTIONS, MK_FOO is set to 8# "yes", unless WITHOUT_FOO is defined, in which case it is set to 9# "no". 10# 11# For each option FOO in __DEFAULT_NO_OPTIONS, MK_FOO is set to "no", 12# unless WITH_FOO is defined, in which case it is set to "yes". 13# 14# For each entry FOO/BAR in __DEFAULT_DEPENDENT_OPTIONS, 15# MK_FOO is set to "no" if WITHOUT_FOO is defined, 16# "yes" if WITH_FOO is defined, otherwise the value of MK_BAR. 17# 18# If both WITH_FOO and WITHOUT_FOO are defined, WITHOUT_FOO wins and 19# MK_FOO is set to "no" regardless of which list it was in. 20# 21# All of __DEFAULT_YES_OPTIONS, __DEFAULT_NO_OPTIONS and 22# __DEFAULT_DEPENDENT_OPTIONS are undef'd after all this processing, 23# allowing this file to be included multiple times with different lists. 24# 25# Other parts of the build system will set BROKEN_OPTIONS to a list 26# of options that are broken on this platform. This will not be unset 27# before returning. Clients are expected to always += this variable. 28# 29# Users should generally define WITH_FOO or WITHOUT_FOO, but the build 30# system should use MK_FOO={yes,no} when it needs to override the 31# user's desires or default behavior. 32# 33 34# 35# MK_* options which default to "yes". 36# 37.for var in ${__DEFAULT_YES_OPTIONS} 38.if !defined(MK_${var}) 39.if defined(WITH_${var}) && ${WITH_${var}} == "no" 40.warning "Use WITHOUT_${var}=1 instead of WITH_${var}=no" 41.endif 42.if defined(WITHOUT_${var}) # WITHOUT always wins 43MK_${var}:= no 44.else 45MK_${var}:= yes 46.endif 47.else 48.if ${MK_${var}} != "yes" && ${MK_${var}} != "no" 49.error "Illegal value for MK_${var}: ${MK_${var}}" 50.endif 51.endif # !defined(MK_${var}) 52.endfor 53.undef __DEFAULT_YES_OPTIONS 54 55# 56# MK_* options which default to "no". 57# 58.for var in ${__DEFAULT_NO_OPTIONS} 59.if !defined(MK_${var}) 60.if defined(WITH_${var}) && ${WITH_${var}} == "no" 61.warning "Use WITHOUT_${var}=1 instead of WITH_${var}=no" 62.endif 63.if defined(WITH_${var}) && !defined(WITHOUT_${var}) # WITHOUT always wins 64MK_${var}:= yes 65.else 66MK_${var}:= no 67.endif 68.else 69.if ${MK_${var}} != "yes" && ${MK_${var}} != "no" 70.error "Illegal value for MK_${var}: ${MK_${var}}" 71.endif 72.endif # !defined(MK_${var}) 73.endfor 74.undef __DEFAULT_NO_OPTIONS 75 76# 77# MK_* options which are always no, usually because they are 78# unsupported/badly broken on this architecture. 79# 80.for var in ${BROKEN_OPTIONS} 81MK_${var}:= no 82.endfor 83 84.for vv in ${__DEFAULT_DEPENDENT_OPTIONS} 85.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H}) 86MK_${vv:H}?= no 87.elif defined(WITH_${vv:H}) 88MK_${vv:H}?= yes 89.elif defined(WITHOUT_${vv:H}) 90MK_${vv:H}?= no 91.else 92MK_${vv:H}?= ${MK_${vv:T}} 93.endif 94MK_${vv:H}:= ${MK_${vv:H}} 95.endfor 96.undef __DEFAULT_DEPENDENT_OPTIONS 97