Skip to content
build.xml 2.78 KiB
Newer Older
Carlos Galindo's avatar
Carlos Galindo committed
<?xml version="1.0" encoding="UTF-8"?>

<project name="e-Knife" default="dist" basedir=".">
  <!-- Properties -->
    <!-- Distribution -->
  <property name="author.name" value="David Insa Cabrera" />
  <property name="jar.name" value="${ant.project.name}.jar" />
  <property name="main.class" value="eknife.EKnife" />
  <property name="dist.base.dir" location="../dist" />
  <property name="dist.dir" location="${dist.base.dir}/${ant.project.name}" />
  <property name="workspace.location" location=".." />
    <!-- References (optional) -->
  <property name="Miscellanea.location" value="${workspace.location}/Miscellanea" />
  <property name="EDG.location" value="${workspace.location}/EDG" />

  <!-- Resources -->
  <property name="src.dir" location="src" />
  <property name="script.dir" location="script" />
  <property name="build.dir" location="build" />
  <property name="build.bin.dir" location="${build.dir}/bin" />
  <property name="build.script.dir" location="${build.dir}/script" />

  <!-- Creates the distribution version -->
  <target name="dist" depends="build.dist, clean" />

  <!-- Macros -->
  <!-- Macro to build subprojects -->
  <macrodef name="buildsubproject">
    <attribute name="dir" />
    <sequential>
      <ant dir="@{dir}" inheritAll="false" target="build.project" />
      <copy todir="${build.bin.dir}"><fileset dir="@{dir}/build/bin" /></copy>
    </sequential>
  </macrodef>

  <!-- Builds the project -->
  <target name="build.project" depends="build.erlang">
    <mkdir dir="${build.bin.dir}"/>
    <buildsubproject dir="${Miscellanea.location}" />
    <buildsubproject dir="${EDG.location}" />
    <javac includeantruntime="false" srcdir="${src.dir}" destdir="${build.bin.dir}"/>
    <!-- Project resources -->
    <copy todir="${build.script.dir}"><fileset erroronmissingdir="true" dir="${script.dir}"/></copy>
  </target>

  <target name="build.erlang">
    <exec executable="erlc" dir="${script.dir}" failonerror="true">
      <arg value="ast.erl"/>
      <arg value="saver.erl"/>
    </exec>
  </target>

  <!-- Builds the distribution version -->
  <target name="build.dist" depends="build.project">
    <mkdir dir="${dist.dir}" />
    <jar jarfile="${dist.dir}/${jar.name}" basedir="${build.bin.dir}">
      <manifest>
        <attribute name="Manifest-Version" value="1.0" />
        <attribute name="Main-Class" value="${main.class}"/>
      </manifest>
    </jar>
    <copy todir="${dist.dir}/Resources/script"><fileset dir="${build.script.dir}" /></copy>
  </target>

  <!-- Cleans the mess done -->
  <target name="clean">
    <ant dir="${Miscellanea.location}" inheritAll="false" target="clean" />
    <ant dir="${EDG.location}" inheritAll="false" target="clean" />
    <delete dir="${build.dir}" />
    <delete><fileset dir="${script.dir}" includes="**/*.beam"/></delete>
  </target>
</project>