From 47442d9f526c7118b56c7cd963862256a3154a54 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Wed, 13 Apr 2016 11:46:18 +0300
Subject: [PATCH] lib/utils/printf: Rework overriding printer of
 DEBUG_printf().

By default it uses mp_plat_print, but a port may override it to another
value with MICROPY_DEBUG_PRINTER_DEST.
---
 esp8266/mpconfigport.h |  1 +
 lib/utils/printf.c     | 11 ++++-------
 unix/mpconfigport.h    |  4 +++-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/esp8266/mpconfigport.h b/esp8266/mpconfigport.h
index 764ce7667..7d5914191 100644
--- a/esp8266/mpconfigport.h
+++ b/esp8266/mpconfigport.h
@@ -9,6 +9,7 @@
 #define MICROPY_EMIT_INLINE_THUMB   (0)
 #define MICROPY_MEM_STATS           (0)
 #define MICROPY_DEBUG_PRINTERS      (1)
+#define MICROPY_DEBUG_PRINTER_DEST  mp_debug_print
 #define MICROPY_ENABLE_GC           (1)
 #define MICROPY_STACK_CHECK         (1)
 #define MICROPY_REPL_EVENT_DRIVEN   (0)
diff --git a/lib/utils/printf.c b/lib/utils/printf.c
index 136056a3e..308525b6e 100644
--- a/lib/utils/printf.c
+++ b/lib/utils/printf.c
@@ -59,14 +59,11 @@ int vprintf(const char *fmt, va_list ap) {
 int DEBUG_printf(const char *fmt, ...) {
     va_list ap;
     va_start(ap, fmt);
-    #if defined(MICROPY_DEBUG_STDERR) && MICROPY_DEBUG_STDERR
-    // Printing debug to stderr may give a chance tests which
-    // check stdout to pass, etc.
-    extern const mp_print_t mp_stderr_print;
-    int ret = mp_vprintf(&mp_stderr_print, fmt, ap);
-    #else
-    int ret = mp_vprintf(&mp_plat_print, fmt, ap);
+    #ifndef MICROPY_DEBUG_PRINTER_DEST
+    #define MICROPY_DEBUG_PRINTER_DEST mp_plat_print
     #endif
+    extern const mp_print_t MICROPY_DEBUG_PRINTER_DEST;
+    int ret = mp_vprintf(&MICROPY_DEBUG_PRINTER_DEST, fmt, ap);
     va_end(ap);
     return ret;
 }
diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h
index daaac4395..1a6eb6f8d 100644
--- a/unix/mpconfigport.h
+++ b/unix/mpconfigport.h
@@ -51,7 +51,9 @@
 #define MICROPY_MALLOC_USES_ALLOCATED_SIZE (1)
 #define MICROPY_MEM_STATS           (1)
 #define MICROPY_DEBUG_PRINTERS      (1)
-#define MICROPY_DEBUG_STDERR        (1)
+// Printing debug to stderr may give tests which
+// check stdout a chance to pass, etc.
+#define MICROPY_DEBUG_PRINTER_DEST  mp_stderr_print
 #define MICROPY_USE_READLINE_HISTORY (1)
 #define MICROPY_HELPER_REPL         (1)
 #define MICROPY_REPL_EMACS_KEYS     (1)
-- 
GitLab