diff --git commands/make/make.drush.inc commands/make/make.drush.inc
index 85b55d3..2d9bb3e 100644
--- commands/make/make.drush.inc
+++ commands/make/make.drush.inc
@@ -53,6 +53,7 @@ function make_drush_command() {
       'no-cache' => 'Do not use the pm-download caching (defaults to cache enabled).',
       'no-clean' => 'Leave temporary build directories in place instead of cleaning up after completion.',
       'no-core' => 'Do not require a Drupal core project to be specified.',
+      'no-recursion' => 'Do not recurse into the makefiles of any downloaded projects; you can also set [do_recursion] = 0 on a per-project basis in the makefile.',
       'no-patch-txt' => 'Do not write a PATCHES.txt file in the directory of each patched project.',
       'no-gitinfofile' => 'Do not modify .info files when cloning from Git.',
       'prepare-install' => 'Prepare the built site for installation. Generate a properly permissioned settings.php and files directory.',
diff --git commands/make/make.project.inc commands/make/make.project.inc
index c73eedd..171e3f5 100644
--- commands/make/make.project.inc
+++ commands/make/make.project.inc
@@ -40,6 +40,12 @@ class DrushMakeProject {
   protected $overwrite = TRUE;
 
   /**
+   * Recursively process any makefiles found in downloaded projects.
+   */
+  protected $do_recursion = TRUE;
+
+
+  /**
    * Set attributes and retrieve project information.
    */
   protected function __construct($project) {
@@ -455,6 +461,11 @@ class DrushMakeProject {
    * processing.
    */
   function recurse($path) {
+    if (!$this->do_recursion || drush_get_option('no-recursion')) {
+      drush_log(dt("Preventing recursive makefile parsing for !project",
+                array("!project" => $this->name)), 'notice');
+      return FALSE;
+    }
     $makefile = $this->download_location . '/' . $this->name . '.make';
     if (!file_exists($makefile)) {
       $makefile = $this->download_location . '/drupal-org.make';
