diff --git a/openwrt/package/mtd/Makefile b/openwrt/package/mtd/Makefile
index fdb43eee15d..f6e94303af8 100644
--- a/openwrt/package/mtd/Makefile
+++ b/openwrt/package/mtd/Makefile
@@ -2,8 +2,8 @@
 
 include $(TOPDIR)/rules.mk
 
-PKG_NAME := mtd
-PKG_RELEASE := 4
+PKG_NAME:=mtd
+PKG_RELEASE:=4
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
@@ -18,13 +18,20 @@ DESCRIPTION:=Update utility for trx firmware images. To update \\\
 from other firmware or older OpenWrt releases.
 endef
 
+define Build/Prepare
+	mkdir -p $(PKG_BUILD_DIR)
+	$(CP) ./src/* $(PKG_BUILD_DIR)/
+endef
+
 define Build/Compile
-	$(TARGET_CC) $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/mtd mtd.c
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \
+		all
 endef
 
 define Package/mtd/install
 	install -d -m0755 $(1)/sbin
-	install -m0755 $(PKG_BUILD_DIR)/mtd $(1)/sbin
+	install -m0755 $(PKG_BUILD_DIR)/mtd $(1)/sbin/
 endef
 
 $(eval $(call BuildPackage,mtd))
diff --git a/openwrt/package/mtd/src/Makefile b/openwrt/package/mtd/src/Makefile
new file mode 100644
index 00000000000..b9f256ad0cc
--- /dev/null
+++ b/openwrt/package/mtd/src/Makefile
@@ -0,0 +1,12 @@
+# $Id$
+
+all: mtd
+
+%.o: %.c
+	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $^
+
+mtd: mtd.o
+	$(CC) -o $@ $^
+
+clean:
+	rm -f *.o mtd
diff --git a/openwrt/package/mtd/mtd.c b/openwrt/package/mtd/src/mtd.c
similarity index 100%
rename from openwrt/package/mtd/mtd.c
rename to openwrt/package/mtd/src/mtd.c