diff --git a/.github/filters.yml b/.github/filters.yml
index bde1a69df6a34f7bf253ac3a73978cc61fde229b..0a812af9f3d9d2f104157d1d358a0bfb044630fe 100644
--- a/.github/filters.yml
+++ b/.github/filters.yml
@@ -21,7 +21,8 @@
     "Makefile",
     "patches/**",
     "targets/generic",
-    "targets/targets.mk"
+    "targets/targets.mk",
+    "targets/bcm27xx.inc"
   ],
   "bcm27xx-bcm2709": [
     "targets/bcm27xx-bcm2709",
@@ -29,7 +30,8 @@
     "Makefile",
     "patches/**",
     "targets/generic",
-    "targets/targets.mk"
+    "targets/targets.mk",
+    "targets/bcm27xx.inc"
   ],
   "ipq40xx-generic": [
     "targets/ipq40xx-generic",
@@ -133,7 +135,8 @@
     "Makefile",
     "patches/**",
     "targets/generic",
-    "targets/targets.mk"
+    "targets/targets.mk",
+    "targets/x86.inc"
   ],
   "x86-geode": [
     "targets/x86-geode",
@@ -149,7 +152,8 @@
     "Makefile",
     "patches/**",
     "targets/generic",
-    "targets/targets.mk"
+    "targets/targets.mk",
+    "targets/x86.inc"
   ],
   "x86-64": [
     "targets/x86-64",
@@ -158,6 +162,7 @@
     "patches/**",
     "targets/generic",
     "targets/targets.mk",
+    "targets/x86.inc",
     "contrib/ci/minimal-site/**",
     "package/**"
   ],
@@ -167,7 +172,8 @@
     "Makefile",
     "patches/**",
     "targets/generic",
-    "targets/targets.mk"
+    "targets/targets.mk",
+    "targets/bcm27xx.inc"
   ],
   "mvebu-cortexa9": [
     "targets/mvebu-cortexa9",
diff --git a/Makefile b/Makefile
index 401f8cb6ccf4d4925d5ff83252073bc4018e34ec..b49ebe804f97c16e2bdcabb5d8b0ff9abf35c113 100644
--- a/Makefile
+++ b/Makefile
@@ -104,7 +104,7 @@ update-modules: FORCE
 	@scripts/update-modules.sh
 
 update-ci: FORCE
-	@scripts/update-ci.sh
+	@$(GLUON_ENV) scripts/update-ci.sh
 
 GLUON_TARGETS :=
 
diff --git a/contrib/actions/generate-target-filters.py b/contrib/actions/generate-target-filters.py
index 084ce104fd7a402e35e490d82650af3db7d6bdd2..b74bfe4e2321df793a14bcb27cb6fc84306e706b 100755
--- a/contrib/actions/generate-target-filters.py
+++ b/contrib/actions/generate-target-filters.py
@@ -3,6 +3,8 @@
 # Update target filters using
 #   make update-ci
 
+import re
+import os
 import sys
 import json
 
@@ -23,6 +25,13 @@ extra = [
 
 _filter = dict()
 
+# INCLUDE_PATTERN matches:
+# include '...'
+# include "..."
+# include("...")
+# include('...')
+INCLUDE_PATTERN = "^\\s*include *\\(? *[\"']([^\"']+)[\"']"
+
 # construct filters map from stdin
 for target in sys.stdin:
     target = target.strip()
@@ -31,6 +40,11 @@ for target in sys.stdin:
         f"targets/{target}"
     ] + common
 
+    target_file = os.path.join(os.environ['GLUON_TARGETSDIR'], target)
+    with open(target_file) as f:
+        includes = re.findall(INCLUDE_PATTERN, f.read(), re.MULTILINE)
+        _filter[target].extend([f"targets/{i}" for i in includes])
+
     if target == "x86-64":
         _filter[target].extend(extra)