From 013b7794ef5836d57cb9a50f7ef71875ea3be062 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Mon, 8 Sep 2003 20:10:52 +0000 Subject: [PATCH] be aware of += and :: and := --- .../internal/core/makefile/MacroDefinition.java | 10 +++++++++- .../make/internal/core/makefile/MakefileUtil.java | 14 +++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/makefile/MacroDefinition.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/makefile/MacroDefinition.java index 07848a9fd72..0fde14f1319 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/makefile/MacroDefinition.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/makefile/MacroDefinition.java @@ -22,7 +22,15 @@ public class MacroDefinition extends Statement implements IMacroDefinition { value = new StringBuffer(); int index = line.indexOf('='); if (index != -1) { - name = line.substring(0, index).trim(); + int separator = index; + // Check for "+=", ":=" + if (index > 0) { + char c = line.charAt(index - 1); + if (c == ':' || c =='+') { + separator = index -1; + } + } + name = line.substring(0, separator).trim(); value.append(line.substring(index + 1)); } else { name = line; diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/makefile/MakefileUtil.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/makefile/MakefileUtil.java index 95469676290..892770454da 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/makefile/MakefileUtil.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/makefile/MakefileUtil.java @@ -50,7 +50,19 @@ public class MakefileUtil { return isTargetRule(line.toCharArray()); } public static boolean isTargetRule(char[] line) { - return indexOf(line, ':') != -1; + int colon = indexOf(line, ':'); + if (colon != -1) { + colon++; + // Things like := are not targets but :: is + if (colon < line.length) { + char c = line[colon]; + if (c == '=') { + return false; + } + } + return true; + } + return false; } public static boolean isCommand(String line) {