From d41ec5a3bc3e10a4670ea14f89285ad28a499144 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Wed, 12 Jul 2017 16:14:50 -0700 Subject: [PATCH] Stop using make wrapper around soong_ui Instead of running make -> makeparallel -> soong_ui, just run soong_ui. Soong_ui now handles user-facing argument parsing. The user visible changes should only be: * Most `make` command line options are no longer supported. Many didn't do anything useful before this change either. * `-j` is now implied, so not specifying it will default to full parallelism instead of a single-threaded build. * `make` debug messages are removed: make: Entering directory ... make: Leaving directory ... make: *** [run_soong_ui] Error 1 We still support the make workflow for users that don't use envsetup.sh -- the build servers primarily, but also various helper scripts. These will be converted later. Test: in $TOP; make nothing Test: in $TOP/bionic; make (runs real make, fails w/no makefile) Test: in $TOP; m nothing Test: in $TOP; mm nothing Test: in $TOP; mma nothing Test: in bionic/libc; m nothing Test: in bionic/libc; mm Test: in bionic/libc; mma Test: in $TOP; mmm bionic/libc Test: in $TOP; mmma bionic/libc Test: in bionic; mmm libc Test: in bionic; mmma libc Test: set WITH_STATIC_ANALYZER=1, repeat above Change-Id: Ic00190ac65a6aa924dad35d3d540c11d653b9c53 --- envsetup.sh | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/envsetup.sh b/envsetup.sh index b71a8256a..d2bcd369d 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -741,7 +741,7 @@ function m() local T=$(gettop) local DRV=$(getdriver $T) if [ "$T" ]; then - $DRV make -C $T -f build/core/main.mk $@ + _wrap_build $DRV $T/build/soong/soong_ui.bash --make-mode $@ else echo "Couldn't locate the top of the tree. Try setting TOP." return 1 @@ -770,9 +770,9 @@ function mm() local T=$(gettop) local DRV=$(getdriver $T) # If we're sitting in the root of the build tree, just do a - # normal make. - if [ -f build/core/envsetup.mk -a -f Makefile ]; then - $DRV make $@ + # normal build. + if [ -f build/soong/soong_ui.bash ]; then + _wrap_build $DRV $T/build/soong/soong_ui.bash --make-mode $@ else # Find the closest Android.mk file. local M=$(findmakefile) @@ -807,7 +807,7 @@ function mm() if [ "1" = "${WITH_TIDY_ONLY}" -o "true" = "${WITH_TIDY_ONLY}" ]; then MODULES=tidy_only fi - ONE_SHOT_MAKEFILE=$M $DRV make -C $T -f build/core/main.mk $MODULES $ARGS + ONE_SHOT_MAKEFILE=$M _wrap_build $DRV $T/build/soong/soong_ui.bash --make-mode $MODULES $ARGS fi fi } @@ -875,7 +875,7 @@ function mmm() fi # Convert "/" to "-". MODULES_IN_PATHS=${MODULES_IN_PATHS//\//-} - ONE_SHOT_MAKEFILE="$MAKEFILE" $DRV make -C $T -f build/core/main.mk $DASH_ARGS $MODULES $MODULES_IN_PATHS $ARGS + ONE_SHOT_MAKEFILE="$MAKEFILE" _wrap_build $DRV $T/build/soong/soong_ui.bash --make-mode $DASH_ARGS $MODULES $MODULES_IN_PATHS $ARGS else echo "Couldn't locate the top of the tree. Try setting TOP." return 1 @@ -886,8 +886,8 @@ function mma() { local T=$(gettop) local DRV=$(getdriver $T) - if [ -f build/core/envsetup.mk -a -f Makefile ]; then - $DRV make $@ + if [ -f build/soong/soong_ui.bash ]; then + _wrap_build $DRV $T/build/soong/soong_ui.bash --make-mode $@ else if [ ! "$T" ]; then echo "Couldn't locate the top of the tree. Try setting TOP." @@ -899,7 +899,7 @@ function mma() local MODULES_IN_PATHS=MODULES-IN-$(dirname ${M}) # Convert "/" to "-". MODULES_IN_PATHS=${MODULES_IN_PATHS//\//-} - $DRV make -C $T -f build/core/main.mk $@ $MODULES_IN_PATHS + _wrap_build $DRV $T/build/soong/soong_ui.bash --make-mode $@ $MODULES_IN_PATHS fi } @@ -937,7 +937,7 @@ function mmma() done # Convert "/" to "-". MODULES_IN_PATHS=${MODULES_IN_PATHS//\//-} - $DRV make -C $T -f build/core/main.mk $DASH_ARGS $ARGS $MODULES_IN_PATHS + _wrap_build $DRV $T/build/soong/soong_ui.bash --make-mode $DASH_ARGS $ARGS $MODULES_IN_PATHS else echo "Couldn't locate the top of the tree. Try setting TOP." return 1 @@ -1583,13 +1583,18 @@ function pez { function get_make_command() { - echo command make + # If we're in the top of an Android tree, use soong_ui.bash instead of make + if [ -f build/soong/soong_ui.bash ]; then + echo build/soong/soong_ui.bash --make-mode + else + echo command make + fi } -function make() +function _wrap_build() { local start_time=$(date +"%s") - $(get_make_command) "$@" + "$@" local ret=$? local end_time=$(date +"%s") local tdiff=$(($end_time-$start_time)) @@ -1608,9 +1613,9 @@ function make() fi echo if [ $ret -eq 0 ] ; then - echo -n "${color_success}#### make completed successfully " + echo -n "${color_success}#### build completed successfully " else - echo -n "${color_failed}#### make failed to build some targets " + echo -n "${color_failed}#### failed to build some targets " fi if [ $hours -gt 0 ] ; then printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs @@ -1624,6 +1629,11 @@ function make() return $ret } +function make() +{ + _wrap_build $(get_make_command) "$@" +} + function provision() { if [ ! "$ANDROID_PRODUCT_OUT" ]; then