diff --git a/Makefile.dep b/Makefile.dep
index e083323e1b0e67d82efda6c7a4107840c9560b60..cc60f4681d952160e5426d3c4ec30e715306b553 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -445,10 +445,6 @@ ifneq (,$(filter lwip_sock_udp,$(USEMODULE)))
 endif
 
 ifneq (,$(filter lwip_%,$(USEMODULE)))
-  USEMODULE += lwip
-endif
-
-ifneq (,$(filter lwip,$(USEMODULE)))
   USEPKG += lwip
   USEMODULE += core_mbox
   USEMODULE += lwip_api
diff --git a/pkg/lwip/Makefile b/pkg/lwip/Makefile
index 04771373009ae6b836774383a004e6df53e66681..448027a187ff0cf5bc8a22a72eb7df668795fb52 100644
--- a/pkg/lwip/Makefile
+++ b/pkg/lwip/Makefile
@@ -3,9 +3,39 @@ PKG_URL=git://git.savannah.nongnu.org/lwip.git
 PKG_VERSION=STABLE-2_0_3_RELEASE
 PKG_LICENSE=BSD-3-Clause
 
-.PHONY: all
+LWIP_MODULES         = lwip_api lwip_core lwip_ipv4 lwip_ipv6 \
+                       lwip_netif lwip_netif_ppp lwip_polarssl
+LWIP_USEMODULE       = $(filter $(LWIP_MODULES),$(USEMODULE))
+LWIP_MODULE_MAKEFILE = $(RIOTBASE)/Makefile.base
 
-all: git-download
-	"$(MAKE)" -C $(PKG_BUILDDIR)
+.PHONY: all $(LWIP_MODULES)
+
+make_module = "$(MAKE)" -f $(LWIP_MODULE_MAKEFILE) MODULE=$(1) -C $(2)
+
+all: git-download lwip
+
+lwip: $(LWIP_USEMODULE)
+	$(call make_module,$@,$(PKG_BUILDDIR))
+
+lwip_api:
+	$(call make_module,$@,$(PKG_BUILDDIR)/src/api)
+
+lwip_core:
+	$(call make_module,$@,$(PKG_BUILDDIR)/src/core)
+
+lwip_ipv4:
+	$(call make_module,$@,$(PKG_BUILDDIR)/src/core/ipv4)
+
+lwip_ipv6:
+	$(call make_module,$@,$(PKG_BUILDDIR)/src/core/ipv6)
+
+lwip_netif:
+	$(call make_module,$@,$(PKG_BUILDDIR)/src/netif)
+
+lwip_netif_ppp:
+	$(call make_module,$@,$(PKG_BUILDDIR)/src/netif/ppp)
+
+lwip_polarssl:
+	$(call make_module,$@,$(PKG_BUILDDIR)/src/netif/ppp/polarssl)
 
 include $(RIOTBASE)/pkg/pkg.mk
diff --git a/pkg/lwip/patches/0001-Fix-warnings.patch b/pkg/lwip/patches/0001-Fix-warnings.patch
deleted file mode 100644
index c90f306ba72ebeebda08e245e705f1de5a13594c..0000000000000000000000000000000000000000
Binary files a/pkg/lwip/patches/0001-Fix-warnings.patch and /dev/null differ
diff --git a/pkg/lwip/patches/0002-Add-RIOT-Makefiles.patch b/pkg/lwip/patches/0002-Add-RIOT-Makefiles.patch
deleted file mode 100644
index d6e0000b72d9f96bc7d152fb5b40c34b9a10931d..0000000000000000000000000000000000000000
Binary files a/pkg/lwip/patches/0002-Add-RIOT-Makefiles.patch and /dev/null differ