@ -29,6 +29,11 @@ endef
lastdir = $( word $( words $( subst /, ,$( 1) ) ) ,$( subst /, ,$( 1) ) )
diralias = $( if $( findstring $( 1) ,$( call lastdir,$( 1) ) ) ,,$( call lastdir,$( 1) ) )
subdir_make_opts = \
-r -C $( 1) \
BUILD_SUBDIR = " $( 1) " \
BUILD_VARIANT = " $( 4) "
# 1: subdir
# 2: target
# 3: build type
@ -38,11 +43,19 @@ log_make = \
$( if $( BUILD_LOG) , \
set -o pipefail; \
mkdir -p $( BUILD_LOG_DIR) /$( 1) $( if $( 4) ,/$( 4) ) ; ) \
$$ ( SUBMAKE) -r -C $( 1) $( if $( 3) ,$( 3) -) $( 2) \
BUILD_SUBDIR = " $( 1) " \
BUILD_VARIANT = " $( 4) " \
$$ ( SUBMAKE) $( subdir_make_opts) $( if $( 3) ,$( 3) -) $( 2) \
$( if $( BUILD_LOG) ,SILENT= 2>& 1 | tee $( BUILD_LOG_DIR) /$( 1) $( if $( 4) ,/$( 4) ) /$( if $( 3) ,$( 3) -) $( 2) .txt)
i f d e f C O N F I G _ A U T O R E M O V E
rebuild_check = \
@-$$ ( NO_TRACE_MAKE) $( subdir_make_opts) check-depends >/dev/null 2>/dev/null; \
$( if $( BUILD_LOG) ,mkdir -p $( BUILD_LOG_DIR) /$( 1) $( if $( 4) ,/$( 4) ) ; ) \
$$ ( NO_TRACE_MAKE) $( if $( BUILD_LOG) ,-d) -q $( subdir_make_opts) .$( if $( 3) ,$( 3) -) $( 2) \
> $( if $( BUILD_LOG) ,$( BUILD_LOG_DIR) /$( 1) $( if $( 4) ,/$( 4) ) /check-$( if $( 3) ,$( 3) -) $( 2) .txt,/dev/null) 2>& 1 || \
$$ ( SUBMAKE) $( subdir_make_opts) clean >/dev/null 2>/dev/null
e n d i f
# Parameters: <subdir>
d e f i n e s u b d i r
$( call warn,$( 1) ,d,D $( 1) )
@ -58,6 +71,7 @@ define subdir
$( call warn_eval,$( 1) /$( bd) ,t,T,$( 1) /$( bd) /$( target) : $( if $( QUILT) ,,$( $( 1) /$( bd) /$( target) ) $( call $( 1) //$( target) ,$( 1) /$( bd) ) ) )
$( foreach variant,$( if $( BUILD_VARIANT) ,$( BUILD_VARIANT) ,$( if $( strip $( $( 1) /$( bd) /variants) ) ,$( $( 1) /$( bd) /variants) ,$( if $( $( 1) /$( bd) /default-variant) ,$( $( 1) /$( bd) /default-variant) ,__default) ) ) ,
$( if $( BUILD_LOG) ,@mkdir -p $( BUILD_LOG_DIR) /$( 1) /$( bd) /$( filter-out __default,$( variant) ) )
$( if $( $( 1) /autoremove) ,$( call rebuild_check,$( 1) /$( bd) ,$( target) ,,$( filter-out __default,$( variant) ) ) )
$( call log_make,$( 1) /$( bd) ,$( target) ,,$( filter-out __default,$( variant) ) ) \
$( if $( findstring $( bd) ,$( $( 1) /builddirs-ignore-$( target) ) ) , || $( call ERROR,$( 1) , ERROR: $( 1) /$( bd) failed to build$( if $( filter-out __default,$( variant) ) , ( build variant: $( variant) ) ) .) )
)