diff --git a/meta/classes-recipe/kernel-fit-image.bbclass b/meta/classes-recipe/kernel-fit-image.bbclass
index 7b2bcd4673..d6a41d4979 100644
--- a/meta/classes-recipe/kernel-fit-image.bbclass
+++ b/meta/classes-recipe/kernel-fit-image.bbclass
@@ -32,8 +32,12 @@ python () {
     # Parse loadables config
     loadables = d.getVar('FIT_LOADABLES')
     if loadables:
-        # Check that the loadables configuration variables are not set directly
-        # directly, then assign them a synthetic value for testability purposes
+        # Check that the loadables configuration variables are not set
+        # directly, then assign them a synthetic value for testability purposes.
+        # do_compile only reads the flags of these variables, never their
+        # values, and as the flag names are not literals bitbake cannot track
+        # these accesses. Add the variables to the do_compile vardeps to get
+        # all their flags into the task signature.
         for v in ['FIT_LOADABLE_ARCH', 'FIT_LOADABLE_COMPRESSION',
                   'FIT_LOADABLE_DESCRIPTION', 'FIT_LOADABLE_ENTRYPOINT',
                   'FIT_LOADABLE_FILENAME', 'FIT_LOADABLE_LOADADDRESS',
@@ -43,6 +47,7 @@ python () {
 
             synt_value = " ? ".join([ d.getVarFlag(v, loadable) or "" for loadable in loadables.split() ])
             d.setVar(v, synt_value)
+            d.appendVarFlag('do_compile', 'vardeps', ' ' + v)
 }
 
 do_configure[noexec] = "1"
