diff --git a/tools/ade b/tools/ade
index 3e5580a633d13240fffad5ba5f839fef6ed6bb63..1fd24917821a653fcb0ab3ec49289332cf1e9250 100755
--- a/tools/ade
+++ b/tools/ade
@@ -972,6 +972,20 @@ class Ade:
             self.die("No target (simulator, sysroot or device) specified")
         return target
 
+    def unpack_sysroot(self, target):
+        if isinstance(target, Device):
+            sdk = self.get_sdk()
+            version = target.version
+            if sdk and version.is_compatible(sdk.version):
+                return sdk # Native compilation; SDK version matches device image version
+            else:
+                sysroot = self.get_sysroot_manager().get_installed(version)
+                if not sysroot:
+                    self.die("No sysroot currently installed for {0}{1}{2}"
+                             .format(Colors.OKBLUE, version.get_name(), Colors.ENDC))
+                return sysroot
+        return target
+
     def do_sysroot_list(self):
         manager = self.get_sysroot_manager()
         versions = manager.get_versions()
@@ -1192,19 +1206,7 @@ class Ade:
                 print("AppVersion:{0}".format(obj.version))
 
     def do_configure(self):
-        target = self.get_target()
-
-        if isinstance(target, Device):
-            sdk = self.get_sdk()
-            version = target.version
-            if sdk and version.is_compatible(sdk.version):
-                target = sdk # Native compilation; SDK version matches device image version
-            else:
-                target = self.get_sysroot_manager().get_installed(version)
-                if not target:
-                    self.die("No sysroot currently installed for {0}{1}{2}"
-                             .format(Colors.OKBLUE, version.get_name(), Colors.ENDC))
-
+        target = self.unpack_sysroot(self.get_target())
         try:
             project = Project(bundle_id=self.bundle_id)
             project.configure(target, debug=self.debug, force=self.force, args=self.args)