diff --git a/Makefile b/Makefile
index b023258751898b8cdeaa2dbac03bc543f6f419ce..78aab6c6ccf42ce61cb034bfd07a679d9d7afdd9 100644
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,31 @@ LC_ALL:=C
 LANG:=C
 export LC_ALL LANG
 
+ifneq ($(GLUON_BUILD),1)
+
+override GLUON_BUILD=1
+export GLUON_BUILD
+TARGETS := all prepare images
+SUBMAKE := $(MAKE) --no-print-directory
+
+FORCE: ;
+
+$(TARGETS): FORCE
+	@$(SUBMAKE) $@
+
+image/%:: FORCE
+	@$(SUBMAKE) $@
+
+clean: FORCE
+	@$(SUBMAKE) clean-gluon
+
+cleanall: FORCE
+	@$(SUBMAKE) clean
+
+.PHONY: FORCE
+
+else
+
 GLUONMAKE = $(SUBMAKE) -C $(GLUON_OPENWRTDIR) -f $(GLUONDIR)/Makefile
 
 ifneq ($(OPENWRT_BUILD),1)
@@ -38,6 +63,9 @@ prepare: FORCE
 images: FORCE
 	+@$(GLUONMAKE) images
 
+image/%:: FORCE
+	+@$(GLUONMAKE) $@
+
 clean: clean-gluon
 
 clean-gluon:
@@ -130,3 +158,4 @@ images: $(patsubst %,image/%,$(PROFILES))
 .PHONY: all images prepare clean cleanall
 
 endif
+endif