diff --git a/build.sh b/build.sh index 62e80e88..9477d79b 100755 --- a/build.sh +++ b/build.sh @@ -3,7 +3,8 @@ boards=("maestro9610" "universal9630" "maestro9820" "smdk9830" "universal9830_bringup" "phoenix9830" "c1s" "c2s" "r8s" "x1s" "y2s" "z3s" "erd3830" "universal3830") user_mode=false -debug_mode=0 +debug_mode=false +verbose_mode=0 board="" while [[ $# -gt 0 ]]; do @@ -13,9 +14,13 @@ while [[ $# -gt 0 ]]; do shift ;; -d|--debug) + debug_mode=true + shift + ;; + -v|--verbose) case "$2" in - y) debug_mode=1 ;; - n) debug_mode=-1 ;; + y) verbose_mode=1 ;; + n) verbose_mode=-1 ;; *) echo "Invalid parameter for --debug. Use 'y' or 'n'."; exit 1 ;; esac shift 2 @@ -34,7 +39,7 @@ done echo -e "\n-----------------------------------------------------------------" echo "Board: $board" echo "User mode: $user_mode" -echo "Debug mode: $debug_mode" +echo "Debug mode: $verbose_mode" echo "-----------------------------------------------------------------" if [[ " ${boards[@]} " =~ " $board " ]]; then @@ -42,9 +47,11 @@ if [[ " ${boards[@]} " =~ " $board " ]]; then rm -rf build-$board make_cmd="make $board" [[ $user_mode == true ]] && make_cmd+=" user" + [[ $debug_mode == true ]] && make_cmd+=" print_debug" make_cmd+=" -j16" + echo "Running: $make_cmd" - if [[ $debug_mode -eq -1 ]]; then + if [[ $verbose_mode -eq -1 ]]; then $make_cmd > >(while IFS= read -r line; do printf '\r%*s\r%s' "$(tput cols)" '' "$line"; done) 2>&1 || exit 1 else $make_cmd @@ -56,9 +63,10 @@ elif [[ "$board" == "all" ]]; then args=() args+=("$b") [[ $user_mode == true ]] && args+=("-u") - args+=("-d") + [[ $debug_mode == true ]] && args+=("-d") + args+=("-v") debug_flag="y" - [[ $debug_mode -le 0 ]] && debug_flag="n" + [[ $verbose_mode -le 0 ]] && debug_flag="n" args+=("$debug_flag") "${BASH_SOURCE[0]}" ${args[@]} || exit 1 fi @@ -70,7 +78,8 @@ else echo "" echo "Flags:" echo " -u -user user mode does not enter ramdump mode when a problem occurs." - echo " -d -debug [y/N] show make output." + echo " -d -debug debug mode." + echo " -v -verbose [y/N] show make output." echo "" echo "Available boards:" for board in "${boards[@]}"; do diff --git a/engine.mk b/engine.mk index 0e3b033c..eb1c9253 100644 --- a/engine.mk +++ b/engine.mk @@ -188,6 +188,11 @@ endif ifeq ($(USER), user) GLOBAL_DEFINES += RAMDUMP_MODE_OFF endif + +ifeq ($(PRINT_DEBUG), 1) +GLOBAL_DEFINES += PRINT_DEBUG +endif + # allow additional defines from outside the build system ifneq ($(EXTERNAL_DEFINES),) GLOBAL_DEFINES += $(EXTERNAL_DEFINES) diff --git a/makefile b/makefile index c38689cb..24ea8d75 100644 --- a/makefile +++ b/makefile @@ -29,6 +29,14 @@ else USER := eng endif +ifeq ($(findstring print_debug, $(MAKECMDGOALS)), print_debug) +PRINT_DEBUG := 1 +TEMP := $(filter-out print_debug, $(MAKECMDGOALS)) +MAKECMDGOALS = $(TEMP) +else +PRINT_DEBUG := 0 +endif + ifeq ($(MAKECMDGOALS), maestro9820) LK_PAD_SIZE := 1048576 SB_SIGN_TYPE := 3 @@ -62,6 +70,7 @@ export BUILDROOT export DEFAULT_PROJECT export TOOLCHAIN_PREFIX export USER +export PRINT_DEBUG $(warning OS_INFO=$(OS_INFO)) # veneer makefile that calls into the engine with lk as the build root @@ -78,4 +87,6 @@ $(MAKECMDGOALS): _top user: @echo This is user build! -.PHONY: _top user +print_debug: + @echo This is print_debug build! +.PHONY: _top user print_debug diff --git a/platform/exynos9830/debug.c b/platform/exynos9830/debug.c index 019c4823..abf0c205 100644 --- a/platform/exynos9830/debug.c +++ b/platform/exynos9830/debug.c @@ -94,7 +94,9 @@ void uart_char_out(char cData); void platform_dputc(char c) { - putc_fb(c); + #ifdef PRINT_DEBUG + putc_fb(c); + #endif uart_char_out(c); }