diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping index f7755369..e40e7132 100644 --- a/src/Makefile.housekeeping +++ b/src/Makefile.housekeeping @@ -710,6 +710,31 @@ $(BIN)/version.o : ../.git/index endif endif +# Debug message autocolourisation range +# +DBGCOL_LIST := $(BIN)/.dbgcol.list +ifeq ($(wildcard $(DBGCOL_LIST)),) +DBGCOL_OLD := +else +DBGCOL_OLD := $(shell cat $(DBGCOL_LIST)) +endif +ifneq ($(DBGCOL_OLD),$(DBGCOL)) +$(shell $(ECHO) "$(DBGCOL)" > $(DBGCOL_LIST)) +endif + +$(DBGCOL_LIST) : $(MAKEDEPS) + +VERYCLEANUP += $(DBGCOL_LIST) + +DBGCOL_COLOURS := $(subst -, ,$(DBGCOL)) +DBGCOL_MIN := $(word 1,$(DBGCOL_COLOURS)) +DBGCOL_MAX := $(word 2,$(DBGCOL_COLOURS)) + +debug_DEPS += $(DBGCOL_LIST) + +CFLAGS_debug += $(if $(DBGCOL_MIN),-DDBGCOL_MIN=$(DBGCOL_MIN)) +CFLAGS_debug += $(if $(DBGCOL_MAX),-DDBGCOL_MAX=$(DBGCOL_MAX)) + # We automatically generate rules for any file mentioned in AUTO_SRCS # using the following set of templates. We use $(eval ...) if # available, otherwise we generate separate Makefile fragments and diff --git a/src/core/debug.c b/src/core/debug.c index 2161f973..7ded4708 100644 --- a/src/core/debug.c +++ b/src/core/debug.c @@ -118,6 +118,15 @@ void dbg_hex_dump_da ( unsigned long dispaddr, const void *data, } } +/** + * Base message stream colour + * + * We default to using 31 (red foreground) as the base colour. + */ +#ifndef DBGCOL_MIN +#define DBGCOL_MIN 31 +#endif + /** * Maximum number of separately coloured message streams * @@ -125,7 +134,9 @@ void dbg_hex_dump_da ( unsigned long dispaddr, const void *data, * of which will be the terminal default and one of which will be * invisible on the terminal because it matches the background colour. */ -#define NUM_AUTO_COLOURS 6 +#ifndef DBGCOL_MAX +#define DBGCOL_MAX ( DBGCOL_MIN + 6 - 1 ) +#endif /** A colour assigned to an autocolourised debug message stream */ struct autocolour { @@ -142,7 +153,7 @@ struct autocolour { * @ret colour Colour ID */ static int dbg_autocolour ( unsigned long stream ) { - static struct autocolour acs[NUM_AUTO_COLOURS]; + static struct autocolour acs[ DBGCOL_MAX - DBGCOL_MIN + 1 ]; static unsigned long use; unsigned int i; unsigned int oldest; @@ -180,7 +191,7 @@ static int dbg_autocolour ( unsigned long stream ) { */ void dbg_autocolourise ( unsigned long stream ) { dbg_printf ( "\033[%dm", - ( stream ? ( 31 + dbg_autocolour ( stream ) ) : 0 ) ); + ( stream ? ( DBGCOL_MIN + dbg_autocolour ( stream ) ) :0)); } /**