diff --git a/include/package.mk b/include/package.mk
index 76e109e23e14816651b531a070aea63bab7ba995..9d35ad3c38eb3b4ef5fb040da47462f06a7de831 100644
--- a/include/package.mk
+++ b/include/package.mk
@@ -1,3 +1,6 @@
+# Dependencies for LuaSrcDiet
+PKG_BUILD_DEPENDS += luci-base/host lua/host
+
 include $(INCLUDE_DIR)/package.mk
 
 # Annoyingly, make's shell function replaces all newlines with spaces, so we have to do some escaping work. Yuck.
@@ -33,3 +36,16 @@ define GluonInstallI18N
 		fi; \
 	done
 endef
+
+define GluonSrcDiet
+	rm -rf $(2)
+	$(CP) $(1) $(2)
+	$(FIND) $(2) -type f | while read src; do \
+	if $(STAGING_DIR_HOST)/bin/lua $(STAGING_DIR_HOST)/bin/LuaSrcDiet \
+		--noopt-binequiv -o "$$$$src.o" "$$$$src"; \
+	then \
+		chmod $$$$(stat -c%a "$$$$src") "$$$$src.o"; \
+		mv "$$$$src.o" "$$$$src"; \
+	fi; \
+	done
+endef