diff --git a/asdf.lisp b/asdf.lisp
index af7e7b7dc0b841fab8a4be3451592535d849c3be..4098436601ddcd8f87e9025a10b1a9d0c87b2c7c 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -2229,15 +2229,11 @@ by PATHNAME-AS-DIRECTORY."
         dir
         (concatenate 'string dir "/"))))
 
-(defun recurse-directory (directory &optional (exclusions *default-exclusions*) undetect)
+(defun recurse-directory (directory &optional (exclusions *default-exclusions*))
   (declare (ignorable exclusions))
-  (let* ((f (directory (merge-pathnames
-                        (if undetect
-                          #P"**/*.*"
-                          (progn
-                            #+(or asdf sbcl) #P"**/*.asd"
-                            #+xcvb #P"**/*.xcvb"))
-                        directory)))
+  (let* ((f (directory (merge-pathnames #P"**/*.asd" directory)
+                       #+sbcl #+sbcl :resolve-symlinks nil
+                       #+clisp #+clisp :circle t))
          (dirs (remove-duplicates (mapcar #'pathname-directory f) :test #'equal)))
     (loop
      :for dir :in dirs