diff --git a/Makefile.dep b/Makefile.dep
index 4b23a0cf0eab54d3930e83bd327025b48fb455e3..289bebf9ccf89b33a34dcfdf064fb0a63c5ecda4 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -283,6 +283,11 @@ ifneq (,$(filter gnrc_pktdump,$(USEMODULE)))
 endif
 
 ifneq (,$(filter newlib,$(USEMODULE)))
+  # allow custom newlib syscalls implementations by adding
+  # newlib_syscalls_XXX to USEMODULE
+  ifeq (,$(filter newlib_syscalls_%,$(USEMODULE)))
+    USEMODULE += newlib_syscalls_default
+  endif
   USEMODULE += uart_stdio
 endif
 
diff --git a/sys/Makefile.include b/sys/Makefile.include
index 38b9fef9c644c12338fe8f8e80d5962b01815a4f..324c1d34d4a0451759d33a78f2dec53625cf12c8 100644
--- a/sys/Makefile.include
+++ b/sys/Makefile.include
@@ -61,7 +61,7 @@ ifneq (,$(filter log_%,$(USEMODULE)))
     include $(RIOTBASE)/sys/log/Makefile.include
 endif
 
-ifneq (,$(filter newlib,$(USEMODULE)))
+ifneq (,$(filter newlib_syscalls_default,$(USEMODULE)))
     include $(RIOTBASE)/sys/newlib/Makefile.include
 endif
 
diff --git a/sys/newlib/Makefile b/sys/newlib/Makefile
index 48422e909a47d7cd428d10fa73825060ccc8d8c2..586bc62601f730c33345fc66f7f1acda95dd0eb4 100644
--- a/sys/newlib/Makefile
+++ b/sys/newlib/Makefile
@@ -1 +1,3 @@
+MODULE = newlib_syscalls_default
+
 include $(RIOTBASE)/Makefile.base
diff --git a/sys/newlib/Makefile.include b/sys/newlib/Makefile.include
index 9a497e610247e7375f2163522eafe60e680a3290..28197b32798a56ffed358bbf02fa8859be31f891 100644
--- a/sys/newlib/Makefile.include
+++ b/sys/newlib/Makefile.include
@@ -1,4 +1,4 @@
-UNDEF := $(BINDIR)newlib/syscalls.o $(UNDEF)
+UNDEF := $(BINDIR)newlib_syscalls_default/syscalls.o $(UNDEF)
 
 # Search for Newlib include directories