gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/src/com/quemaster/ant/m2/m2compile.java b/src/com/quemaster/ant/m2/m2compile.java
--- /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();
+ }
+}