diff options
author | Melody Horn <melody@boringcactus.com> | 2021-04-06 20:37:24 -0600 |
---|---|---|
committer | Melody Horn <melody@boringcactus.com> | 2021-04-06 20:37:24 -0600 |
commit | 06eeecc0defec91a6e0fa8eb4acff27a59785e66 (patch) | |
tree | d820b6dc97399f74b86baa968d833ab683fc74ac /src | |
parent | aa386feb7f0a78d3d8789b18cd280db405941b21 (diff) | |
download | makers-06eeecc0defec91a6e0fa8eb4acff27a59785e66.tar.gz makers-06eeecc0defec91a6e0fa8eb4acff27a59785e66.zip |
skip rule-specific macros instead of trying to parse them as prereqs
Diffstat (limited to 'src')
-rw-r--r-- | src/makefile/input.rs | 5 | ||||
-rw-r--r-- | src/makefile/token.rs | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/makefile/input.rs b/src/makefile/input.rs index e5473a1..9c895e1 100644 --- a/src/makefile/input.rs +++ b/src/makefile/input.rs @@ -474,7 +474,6 @@ impl<'a, 'parent, R: BufRead> MakefileReader<'a, 'parent, R> { let (targets, not_targets) = line_tokens .split_once(':') .ok_or_else(|| eyre!("read_rule couldn't find a ':' on line {}", line_number))?; - // TODO handle rule-specific variables let targets = self.expand_macros(&targets)?; let targets = targets.split_whitespace().collect::<Vec<_>>(); let (prerequisites, mut commands) = match not_targets.split_once(';') { @@ -484,6 +483,10 @@ impl<'a, 'parent, R: BufRead> MakefileReader<'a, 'parent, R> { } None => (not_targets, vec![]), }; + if prerequisites.contains_text("=") { + log::error!("rule-specific macros are not implemented yet"); + return Ok(()); + } let prerequisites = self.expand_macros(&prerequisites)?; let prerequisites = prerequisites .split_whitespace() diff --git a/src/makefile/token.rs b/src/makefile/token.rs index 63c48d9..294e80d 100644 --- a/src/makefile/token.rs +++ b/src/makefile/token.rs @@ -134,6 +134,16 @@ impl TokenString { _ => false, } } + + pub fn contains_text(&self, pattern: &str) -> bool { + self.0.iter().any(|x| { + if let Token::Text(x) = x { + x.contains(pattern) + } else { + false + } + }) + } } impl fmt::Display for TokenString { |