diff --git a/Makefile b/Makefile
index f06b151eb28e2b35c54610457513cea6560f6a64..e2430164fe992a3671e3ea4760578c24c33f3259 100644
--- a/Makefile
+++ b/Makefile
@@ -44,11 +44,10 @@ endif
 package/%/Makefile: ;
 target/%/Makefile: ;
 
-tmp/.packageinfo: $(wildcard package/*/Makefile include/package*.mk include/kernel.mk) FORCE
-tmp/.targetinfo: $(wildcard target/*/Makefile include/kernel*.mk)  FORCE
-tmp/.%info:
+tmp/.packageinfo tmp/.targetinfo: FORCE
 	mkdir -p tmp/info
-	$(NO_TRACE_MAKE) -s -f include/scan.mk SCAN_TARGET="$*info" SCAN_DIR="$(patsubst target,target/linux,$*)" SCAN_NAME="$*" SCAN_DEPS="$(filter-out FORCE, $^)" SCAN_EXTRA=""
+	$(NO_TRACE_MAKE) -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPS="" SCAN_TARGET_DEPS="$(wildcard target/*/Makefile include/kernel*.mk)" SCAN_EXTRA=""
+	$(NO_TRACE_MAKE) -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(wildcard package/*/Makefile include/package*.mk include/kernel.mk)" SCAN_EXTRA=""
 
 tmpinfo-clean: FORCE
 	-rm -rf tmp/.*info
diff --git a/include/scan.mk b/include/scan.mk
index 1597112d039597a0439a8c65903d33d09c1cac39..976eb3842782d6f5d6a9cf6f2d3336b5988d4e47 100644
--- a/include/scan.mk
+++ b/include/scan.mk
@@ -38,8 +38,8 @@ endif
 
 define scanfiles
 $(foreach FILE,$(SCAN),
-  tmp/.$(SCAN_TARGET): tmp/info/.$(SCAN_TARGET)-$(FILE) $(SCAN_DEPS)
-  tmp/info/.$(SCAN_TARGET)-$(FILE): $(SCAN_DIR)/$(FILE)/Makefile $(SCAN_STAMP)
+  tmp/.$(SCAN_TARGET): tmp/info/.$(SCAN_TARGET)-$(FILE) $(SCAN_TARGET_DEPS) $(SCAN_DEPS)
+  tmp/info/.$(SCAN_TARGET)-$(FILE): $(SCAN_DIR)/$(FILE)/Makefile $(SCAN_STAMP) $(SCAN_TARGET_DEPS)
 	grep -E 'include (\$$$$\(INCLUDE_DIR\)|\$$$$\(TOPDIR\)/include)/' $(SCAN_DIR)/$(FILE)/Makefile >/dev/null && { \
 		$$(call progress,Collecting $(SCAN_NAME) info: $(SCAN_DIR)/$(FILE)) \
 		echo Source-Makefile: $(SCAN_DIR)/$(FILE)/Makefile; \