Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/CommandBuilder.java63
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/GenDirInfo.java26
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties5
3 files changed, 63 insertions, 31 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/CommandBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/CommandBuilder.java
index f41a3f5c6fd..0582ae28aba 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/CommandBuilder.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/CommandBuilder.java
@@ -19,6 +19,7 @@ import java.util.Map;
import org.eclipse.cdt.core.CommandLauncher;
import org.eclipse.cdt.managedbuilder.buildmodel.IBuildCommand;
+import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
@@ -36,6 +37,8 @@ public class CommandBuilder implements IBuildModelBuilder {
private IBuildCommand fCmd;
private Process fProcess;
private String fErrMsg;
+ private static final String BUILDER_MSG_HEADER = "InternalBuilder.msg.header"; //$NON-NLS-1$
+ private static final String LINE_SEPARATOR = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
protected class OutputStreamWrapper extends OutputStream {
private OutputStream fOut;
@@ -92,31 +95,35 @@ public class CommandBuilder implements IBuildModelBuilder {
fProcess.getOutputStream().close();
} catch (IOException e) {
}
- //wrapping out and err streams to avoid their closure
- int st = launcher.waitAndRead(wrap(out), wrap(err),
- new SubProgressMonitor(monitor,
- IProgressMonitor.UNKNOWN));
- switch(st){
- case CommandLauncher.OK:
- if(fProcess.exitValue() != 0)
- status = STATUS_ERROR_BUILD;
- break;
- case CommandLauncher.COMMAND_CANCELED:
- status = STATUS_CANCELLED;
- break;
- default:
- status = STATUS_ERROR_LAUNCH;
- fErrMsg = launcher.getErrorMessage();
- break;
- }
- } else {
+ }
+
+ //wrapping out and err streams to avoid their closure
+ int st = launcher.waitAndRead(wrap(out), wrap(err),
+ new SubProgressMonitor(monitor,
+ IProgressMonitor.UNKNOWN));
+ switch(st){
+ case CommandLauncher.OK:
+ if(fProcess.exitValue() != 0)
+ status = STATUS_ERROR_BUILD;
+ break;
+ case CommandLauncher.COMMAND_CANCELED:
+ status = STATUS_CANCELLED;
fErrMsg = launcher.getErrorMessage();
if(DbgUtil.DEBUG)
- DbgUtil.trace("error launching the command: " + fErrMsg); //$NON-NLS-1$
-
+ DbgUtil.trace("command cancelled: " + fErrMsg); //$NON-NLS-1$
+
+ printMessage(fErrMsg, out);
+ break;
+ case CommandLauncher.ILLEGAL_COMMAND:
+ default:
status = STATUS_ERROR_LAUNCH;
+ fErrMsg = launcher.getErrorMessage();
+ if(DbgUtil.DEBUG)
+ DbgUtil.trace("error launching the command: " + fErrMsg); //$NON-NLS-1$
+
+ printMessage(fErrMsg, out);
+ break;
}
-
return status;
}
@@ -137,4 +144,18 @@ public class CommandBuilder implements IBuildModelBuilder {
return (String[])list.toArray(new String[list.size()]);
}
+
+ protected void printMessage(String msg, OutputStream os){
+ if (os != null) {
+ msg = ManagedMakeMessages.getFormattedString(BUILDER_MSG_HEADER, msg) + LINE_SEPARATOR;
+ try {
+ os.write(msg.getBytes());
+ os.flush();
+ } catch (IOException e) {
+ // ignore;
+ }
+ }
+
+ }
+
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/GenDirInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/GenDirInfo.java
index a4475267ef7..cc6f7768976 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/GenDirInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/GenDirInfo.java
@@ -47,18 +47,26 @@ public class GenDirInfo {
if(path != null
&& fProjPath.isPrefixOf(path)){
path = path.removeLastSegments(1).removeFirstSegments(1);
- if(path.segmentCount() > 0 && fDirPathSet.add(path)){
- IFolder folder = fProject.getFolder(path);
- if(!folder.exists()){
- try {
- folder.create(true, true, monitor);
- folder.setDerived(true);
- } catch (CoreException e) {
- //TODO: log the error
- }
+ createDir(path, monitor);
+ }
+ }
+
+ protected void createDir(IPath path, IProgressMonitor monitor){
+ if(path.segmentCount() > 0 && fDirPathSet.add(path)){
+ IFolder folder = fProject.getFolder(path);
+ if(!folder.exists()){
+ createDir(path.removeLastSegments(1), monitor);
+ try {
+ folder.create(true, true, monitor);
+ folder.setDerived(true);
+ } catch (CoreException e) {
+ if(DbgUtil.DEBUG)
+ DbgUtil.trace("GenDirInfo: failed to create dir: " + e.getLocalizedMessage()); //$NON-NLS-1$
+ //TODO: log the error
}
}
}
+
}
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties
index 7ad3ff47398..5527f49ed2a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties
@@ -115,4 +115,7 @@ BuildMacroStatus.value.undefined=
ResourceChangeHandler.buildInfoSerializationJob=Build Info Serialization
#ManagedBuilderCorePlugin messages
-ManagedBuilderCorePlugin.resourceChangeHandlingInitializationJob=Initializing Resource Change Handling \ No newline at end of file
+ManagedBuilderCorePlugin.resourceChangeHandlingInitializationJob=Initializing Resource Change Handling
+
+#Internal Builder messages
+InternalBuilder.msg.header=Internal Builder: {0} \ No newline at end of file

Back to the top