gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
moved sources to src folder
[pub/donny/ant-tasks.git] / src / com / quemaster / ant / m2 / m2compile.java
diff --git a/src/com/quemaster/ant/m2/m2compile.java b/src/com/quemaster/ant/m2/m2compile.java
new file mode 100644 (file)
index 0000000..3206334
--- /dev/null
@@ -0,0 +1,64 @@
+package com.quemaster.ant.m2;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.condition.Os;
+import java.util.ArrayList;
+
+import java.io.*;
+
+/**
+ m2compile is an Ant Task that executes a Modula 2 compiler on the give
+     module in the given dir. Currently it just assumes that the Native
+     XDS Modula 2 compiler "xc" is in the PATH, and if the OS is not
+     in the Windows family uses "wine" to execute it.
+ */
+public class m2compile extends Task {
+    private String module="program";
+    private File dir=null;
+
+    
+    
+    // needs to check wheter the compilation is needed
+    // based on the timestamps of the exe and mod
+    
+    // The method executing the task
+    public void execute() throws BuildException {
+       int exit = -1;
+       ArrayList<String> list = new ArrayList<String>();
+       if (!Os.isFamily(Os.FAMILY_WINDOWS)) 
+           list.add("wine");
+        list.add("xc");
+        list.add("=make");
+        list.add("=all");
+        list.add(module);
+       try{
+               ProcessBuilder pb = new ProcessBuilder(list);
+               pb.directory(dir);
+               pb.inheritIO();
+               
+               Process p = pb.start();
+               p.waitFor();
+               exit = p.exitValue();
+               
+       }catch (Exception ex) {
+               throw new BuildException(ex);
+       }
+        if (exit != 0) 
+               throw new BuildException("compilation ended with code "+exit);
+    }
+    
+    public void setModule(String msg) {
+        this.module = msg;
+    }
+    
+    public void setDir(File msg) {
+        this.dir = msg;
+    }
+    
+    public static void main(String[] args){
+               m2compile m = new m2compile();
+               
+               m.execute();
+    }
+}
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner