Skip to content
Snippets Groups Projects
Select Git revision
  • 3fbc9aee07865f4da91865ad15739ed1ee5028dd
  • master default
  • labcomm2006
  • typedefs
  • anders.blomdell
  • typeref
  • pragma
  • compiler-refactoring
  • labcomm2013
  • v2014.4
  • v2006.0
  • v2014.3
  • v2014.2
  • v2014.1
  • v2014.0
  • v2013.0
16 results

build.xml

Blame
  • Forked from Anders Blomdell / LabComm
    130 commits behind, 2 commits ahead of the upstream repository.
    Anders Blomdell's avatar
    Anders Blomdell authored
    4d657ef3
    History
    build.xml 8.43 KiB
    <!--
     Targets for working from terminal window:
           build (default) - generates java files and compiles them
           clean           - removes all generated files and class files
     Targets for working from Eclipse:
           gen             - generates java files
           cleanGen        - removes all generated files and their class files
    -->
    <project name="LabComm" default="all" basedir=".">
    
    <!-- "tools" is the directory where generators and libraries are located. -->
    <property name="tools" value="tools"/>
    	
    <!-- "jflex" is an ant task class for the scanner generator in JFlex.jar -->
    <taskdef name="jflex" classname="JFlex.anttask.JFlexTask" classpath="tools/JFlex.jar"/>
    <!-- "beaver" is an ant task class for the parser generator in beaver.jar -->
    <taskdef name="beaver" classname="beaver.comp.run.AntTask" classpath="tools/beaver-ant.jar"/>
    <!-- "jastadd" is an ant task class in jastadd2.jar -->
    <taskdef name="jastadd" classname="jastadd.JastAddTask"
             classpath="tools/jastadd2.jar"/>
    
    <target name="jastadd.cu">
      <uptodate property="jastadd.u">
        <srcfiles dir='.'>
          <include name="${version}/*.ast"/>
          <include name="${version}/*.jrag"/>
          <include name="${version}/*.jadd"/>
        </srcfiles>
        <mapper type="merge" 
                to="${outdir}/${package_path}/jastadd.uptodate"/>
      </uptodate>
    </target>
    
    <target name="jastadd" depends="jastadd.cu" unless="jastadd.u">
      <echo message = "Running JastAdd"/>
      <jastadd package="${package}" rewrite="true" beaver="true" 
               novisitcheck="true" lazyMaps="true" outdir="${outdir}">
        <fileset dir=".">
          <include name="${version}/*.ast"/>
          <include name="${version}/*.jrag"/>
          <include name="${version}/*.jadd"/>
        </fileset>
      </jastadd>
      <touch file="${outdir}/${package_path}/jastadd.uptodate"/>
    </target>
    
    <target name="scanner.cu">
      <uptodate property="scanner.u">
        <srcfiles dir='.'>
          <include name="${version}/LabCommScanner.flex"/>
          <!--include name="${tools}/JFlex.jar"/-->
        </srcfiles>
        <mapper type="merge" 
                to="${outdir}/${package_path}/LabCommScanner.java"/>
      </uptodate>
    </target>
    
    <target name="scanner" depends="scanner.cu" unless="scanner.u">
      <echo message = "Generating scanner ${version}"/>
      <echo message = "Running jflex -> ${package} ${outdir}/${package_path}"/>
      <jflex file="${version}/LabCommScanner.flex" 
             outdir="${outdir}/${package_path}" nobak="yes"/>
    </target>
    
    <target name="parser.1.cu">
      <uptodate property="parser.1.u">
        <srcfiles dir='.'>
          <include name="${version}/*.parser"/>
        </srcfiles>
        <mapper type="merge" 
                to="${outdir}/${package_path}/LabCommParser.all"/>
      </uptodate>
    </target>
    
    <target name="parser.1" depends="parser.1.cu" unless="parser.1.u">
      <!-- generate the parser phase 1, create a full .lalr specification 
           from fragments-->
      <echo message = "Joining parser fragments"/>
      <concat destfile="${outdir}/${package_path}/LabCommParser.all" binary="true">
        <fileset dir=".">
          <include name="${version}/*.parser"/>
        </fileset>
      </concat>
    </target>
    
    <target name="parser.2.cu">
      <uptodate property="parser.2.u">
        <srcfiles dir='.'>
          <include name="${outdir}/${package_path}/LabCommParser.all"/>
        </srcfiles>
        <mapper type="merge" 
                to="${outdir}/${package_path}/LabCommParser.beaver"/>
      </uptodate>
    </target>
    
    <target name="parser.2" depends="parser.1, parser.2.cu" unless="parser.2.u">
      <!-- generate the parser phase 2, translating .lalr to .beaver -->
      <echo message = "translating .lalr to .beaver"/>
      <java fork="true" dir="${basedir}" 
            classpath="${tools}/proj.jar:${tools}/beaver-rt.jar" classname="Main">
        <arg line="${outdir}/${package_path}/LabCommParser.all 
                   ${outdir}/${package_path}/LabCommParser.beaver"/>
      </java>
    </target>
    
    <target name="parser.3.cu">
      <uptodate property="parser.3.u">
        <srcfiles dir='.'>
          <include name="${outdir}/${package_path}/LabCommParser.beaver"/>
        </srcfiles>
        <mapper type="merge" 
                to="${outdir}/${package_path}/LabCommParser.java"/>
      </uptodate>
    </target>
    
    <target name="parser.3" depends="parser.2, parser.3.cu" unless="parser.3.u">
      <echo message = "translating .beaver to .java"/>
      <beaver file="${outdir}/${package_path}/LabCommParser.beaver"
              terminalNames="yes" compress="yes" useSwitch="yes"/>
    </target>
    
    <target name="all.version" depends="jastadd, scanner, parser.3">
    </target>
    
    <target name="compile.cu">
      <uptodate property="compile.u">
        <srcfiles dir='.'>
          <include name="*.java"/>
          <include name="2006/*.java"/>
          <include name="2014/*.java"/>
          <include name="${outdir}/**/*.java"/>
        </srcfiles>
        <mapper type="merge" 
                to="${outdir}/compile.uptodate"/>
      </uptodate>
    </target>
    
    <target name="compile" depends="compile.cu" unless="compile.u">
      <echo message = "compiling"/>
      <javac debug="true" srcdir="." destdir="${outdir}"
             includes="*.java 2006/*.java 2014/*.java gen/**/*.java" 
             classpath="${outdir}:${tools}/beaver-rt.jar:${tools}/junit.jar"
             includeantruntime="false"
             fork="true" memoryMaximumSize="128M">
        <!--compilerarg value="-Xlint"/-->
      </javac>
      <touch file="${outdir}/compile.uptodate"/>
    </target>
    
    <target name="jar.version.cu">
      <uptodate property="jar.version.u">
        <srcfiles dir=".">
          <include name="${outdir}/${package_path}/*.class"/>
        </srcfiles>
        <mapper type="merge" 
                to="labcomm${version}_compiler.jar"/>
      </uptodate>
    </target>
    
    <target name="jar.version" depends="jar.version.cu" unless="jar.version.u">
      <echo message = "Generating labcomm${version}_compiler.jar"/>
      <jar destfile="labcomm${version}_compiler.jar">
        <fileset dir="${outdir}" 
                 includes="${package_path}/*.class"/>
        <zipfileset src="tools/beaver-rt.jar" includes="beaver/*.class"/>
        <manifest>
          <attribute name="Main-Class" 
                     value="${package}.LabComm"/>
        </manifest>
      </jar>
    </target>
    
    <target name="jar.all.cu">
      <uptodate property="jar.all.u">
        <srcfiles dir=".">
          <include name="${outdir}/**/*.class"/>
        </srcfiles>
        <mapper type="merge" 
                to="labcomm_compiler.jar"/>
      </uptodate>
    </target>
    
    <target name="jar.all" depends="jar.all.cu" unless="jar.all.u">
      <echo message = "Generating labcomm_compiler.jar"/>
      <jar destfile="labcomm_compiler.jar">
        <fileset dir="${outdir}" 
                 includes="**/*.class"/>
        <zipfileset src="tools/beaver-rt.jar" includes="beaver/*.class"/>
        <manifest>
          <attribute name="Main-Class" 
                     value="LabComm"/>
        </manifest>
      </jar>
    </target>
    
    <target name="do.version">
      <!-- Wrapper that sets up package and package_path based on ${version} -->
      <local name="package"/>
      <local name="package_path"/>
      <property name="package" value="se.lth.control.labcomm${version}.compiler"/>
      <loadresource property="package_path">
        <propertyresource name="package"/>
        <filterchain>
          <tokenfilter>
            <filetokenizer/>
            <replacestring from="." to="/"/>
          </tokenfilter>
        </filterchain>
      </loadresource>  
      <echo>${do} ${version} ${outdir}</echo>
      <mkdir dir="${outdir}"/>
      <antcall target="${do}">
        <param name="version" value="${version}"/>
        <param name="outdir" value="${outdir}"/>
        <param name="package" value="${package}"/>
        <param name="package_path" value="${package_path}"/>
      </antcall>
    </target>
    
    <target name="all">
      <antcall target="do.version">
        <param name="do" value="all.version"/>
        <param name="version" value="2006"/>
        <param name="outdir" value="gen"/>
      </antcall>
      <antcall target="do.version">
        <param name="do" value="all.version"/>
        <param name="version" value="2014"/>
        <param name="outdir" value="gen"/>
      </antcall>
      <antcall target="compile">
        <param name="outdir" value="gen"/>
      </antcall>
      <antcall target="do.version">
        <param name="do" value="jar.version"/>
        <param name="version" value="2006"/>
        <param name="outdir" value="gen"/>
      </antcall>
      <antcall target="do.version">
        <param name="do" value="jar.version"/>
        <param name="version" value="2014"/>
        <param name="outdir" value="gen"/>
      </antcall>
      <antcall target="jar.all">
        <param name="outdir" value="gen"/>
      </antcall>
    </target>
    
    <target name="clean">
      <delete dir="gen"/>
    </target>
      
    <target name="distclean" depends="clean">
      <delete>
        <fileset dir="." includes="labcomm*_compiler.jar"/>
      </delete>
    </target>
    
    <target name="test">
      <echo>No tests defined yet</echo>
    </target>
      
    </project>