diff --git a/Kconfig b/Kconfig
index f1161aea880598e1f96d57521c7b43897c19f0c3..eedb41bccecd6c2be929759f5a5515f59cf09028 100644
--- a/Kconfig
+++ b/Kconfig
@@ -5,6 +5,15 @@ config MPRINTF
 	boolean
 	default y
 
+config PP_PRINTF
+       boolean
+       default !MPRINTF
+
+config PRINT_BUFSIZE
+       depends on PP_PRINTF
+       int "Size for the temporary output string of pp_printf"
+       default 128
+
 config ETHERBONE
 	boolean "Compile Etherbone support in wrpc-sw"
 	help
diff --git a/Makefile b/Makefile
index dacb5a2f73d5baf60db5ee35d6afc87fdd88f545..a0c2806f78bc24a0fc69638b0a11de34b4dd9671 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@ obj-y += wrc_main.o wrc_ptp.o monitor/monitor.o
 cflags-y = -include $(CURDIR)/include/generated/autoconf.h \
 	-Iinclude -I.
 
-cflags-$(CONFIG_PP_PRINTF) += -I $(CURDIR)/pp_printf
+cflags-$(CONFIG_PP_PRINTF) += -I$(CURDIR)/pp_printf
 
 cflags-$(CONFIG_PTP_NOPOSIX) += \
 	-ffreestanding \
@@ -61,6 +61,7 @@ LDFLAGS_PLATFORM = -mmultiply-enabled -mbarrel-shift-enabled \
 include shell/shell.mk
 include tests/tests.mk
 include lib/lib.mk
+include pp_printf/printf.mk
 include sockitowm/sockitowm.mk
 include dev/dev.mk
 
diff --git a/pp_printf/printf.mk b/pp_printf/printf.mk
new file mode 100644
index 0000000000000000000000000000000000000000..00039157873c85afab468df7286310e2a6900113
--- /dev/null
+++ b/pp_printf/printf.mk
@@ -0,0 +1,15 @@
+# This is included from ../Makefile, for the wrc build system.
+# The Makefile in this directory is preserved from the upstream version
+
+obj-$(CONFIG_PP_PRINTF) += pp_printf/printf.o
+
+ppprintf-$(CONFIG_PRINTF_FULL) += pp_printf/vsprintf-full.o
+ppprintf-$(CONFIG_PRINTF_MINI) += pp_printf/vsprintf-mini.o
+ppprintf-$(CONFIG_PRINTF_NONE) += pp_printf/vsprintf-none.o
+ppprintf-$(CONFIG_PRINTF_XINT) += pp_printf/vsprintf-xint.o
+
+ppprintf-y ?= pp_printf/vsprintf-xint.o
+
+obj-$(CONFIG_PP_PRINTF) += $(ppprintf-y)
+
+