aboutsummaryrefslogtreecommitdiff
path: root/src/makefile/command_line.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/makefile/command_line.rs')
-rw-r--r--src/makefile/command_line.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/makefile/command_line.rs b/src/makefile/command_line.rs
index 1b4b4b4..f9cd876 100644
--- a/src/makefile/command_line.rs
+++ b/src/makefile/command_line.rs
@@ -80,6 +80,10 @@ impl CommandLine {
}
pub fn execute(&self, file: &Makefile, target: &Target) -> eyre::Result<()> {
+ let is_recursive = self.execution_line.tokens().any(|x| match x {
+ Token::MacroExpansion { name, .. } => name == "MAKE",
+ _ => false,
+ });
let execution_line = file.expand_macros(&self.execution_line, Some(target))?;
let mut self_ignore_errors = self.ignore_errors;
let mut self_silent = self.silent;
@@ -110,8 +114,9 @@ impl CommandLine {
println!("{}", execution_line);
}
- let should_execute =
- self_always_execute || !(file.args.dry_run || file.args.question || file.args.touch);
+ let should_execute = self_always_execute
+ || is_recursive
+ || !(file.args.dry_run || file.args.question || file.args.touch);
if !should_execute {
return Ok(());
}