From 868b714c5153a6410df588431dba5b7d1c7263e8 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Fri, 10 Aug 2007 13:06:54 +0000 Subject: [PATCH] Fix for [Bug 196852] Internal Builder does not expand macros in pre- and post- build steps --- .../internal/buildmodel/BuildStep.java | 40 ++++++++++++++----- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildStep.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildStep.java index 388679f6992..85f75f4ae7c 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildStep.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildStep.java @@ -260,18 +260,21 @@ public class BuildStep implements IBuildStep { } if(step != null && (step = step.trim()).length() > 0){ - String commands[] = step.split(";"); //$NON-NLS-1$ - if(cwd == null) - cwd = calcCWD(); - - List list = new ArrayList(); - for(int i = 0; i < commands.length; i++){ - IBuildCommand cmds[] = createCommandsFromString(commands[i], cwd, getEnvironment()); - for(int j = 0; j < cmds.length; j++){ - list.add(cmds[j]); + step = resolveMacros(step, resolveAll); + if(step != null && (step = step.trim()).length() > 0){ + String commands[] = step.split(";"); //$NON-NLS-1$ + if(cwd == null) + cwd = calcCWD(); + + List list = new ArrayList(); + for(int i = 0; i < commands.length; i++){ + IBuildCommand cmds[] = createCommandsFromString(commands[i], cwd, getEnvironment()); + for(int j = 0; j < cmds.length; j++){ + list.add(cmds[j]); + } } + return (IBuildCommand[])list.toArray(new BuildCommand[list.size()]); } - return (IBuildCommand[])list.toArray(new BuildCommand[list.size()]); } return new IBuildCommand[0]; } @@ -458,7 +461,22 @@ public class BuildStep implements IBuildStep { return result; } - + + private String resolveMacros(String str, boolean resolveAll){ + String result = str; + try { + IConfiguration cfg = getBuildDescription().getConfiguration(); + if(resolveAll){ + result = ManagedBuildManager.getBuildMacroProvider().resolveValue(str, "", " ", IBuildMacroProvider.CONTEXT_CONFIGURATION, cfg); //$NON-NLS-1$ //$NON-NLS-2$ + } else { + result = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(str, "", " ", IBuildMacroProvider.CONTEXT_CONFIGURATION, cfg); //$NON-NLS-1$ //$NON-NLS-2$ + } + } catch (CdtVariableException e) { + } + + return result; + } + private SupplierBasedCdtVariableSubstitutor createSubstitutor(IConfiguration cfg, IBuilder builder, IFileContextData fileData){ BuildMacroProvider prov = (BuildMacroProvider)ManagedBuildManager.getBuildMacroProvider(); IMacroContextInfo info = prov.getMacroContextInfo(IBuildMacroProvider.CONTEXT_FILE, fileData);