Source code: com/port80/eclipse/builder/MakeBuilder.java
1 /*
2 * Created on Apr 25, 2003
3 */
4 package com.port80.eclipse.builder;
5
6 import java.util.ArrayList;
7 import java.util.Iterator;
8 import java.util.List;
9 import java.util.Map;
10
11 import org.eclipse.core.resources.IProject;
12 import org.eclipse.core.runtime.CoreException;
13 import org.eclipse.swt.widgets.Shell;
14
15 /**
16 * A builder that invoke make on any specified target.
17 *
18 * @author chrisl
19 */
20 public class MakeBuilder extends AbstractBuilder {
21
22 private static final String NAME = "MakeBuilder";
23
24 String fFilename, fTarget;
25
26 public MakeBuilder() {
27 super();
28 }
29
30 public String getBuilderName() {
31 return MakeBuilder.class.getName();
32 }
33
34 public String[] getCommand(Map args) {
35 List a = new ArrayList();
36 a.add("make");
37 a.add("-f");
38 a.add(fFilename);
39 if (args != null) {
40 String key, value;
41 for (Iterator it = args.keySet().iterator(); it.hasNext();) {
42 key = (String) it.next();
43 value = (String) args.get(key);
44 a.add(key + '=' + value);
45 }
46 }
47 a.add(fTarget);
48 return (String[]) a.toArray(new String[a.size()]);
49 }
50
51 public void build(
52 final IProject project,
53 final String work_dir,
54 final String filename,
55 final String target,
56 final Map args,
57 final Shell shell) {
58 //
59 fTarget = target;
60 fFilename = filename;
61 Thread t = new Thread(new Runnable() {
62 public void run() {
63 try {
64 build(project, work_dir, args);
65 } catch (CoreException e) {
66 System.err.println(
67 NAME
68 + ".build(): "
69 + ": builder="
70 + getBuilderName()
71 + ", target="
72 + target
73 + ", "
74 + e.toString());
75 }
76 }
77 });
78 t.start();
79 }
80
81 }