summaryrefslogblamecommitdiff
path: root/build-nsc.xml
blob: 2ebfa48c56666ea7755a3c85d8fd5cad4c9179cd (plain) (tree)
1
2
3
4
5
6
7
8
9
                                      


                           
                                              
 
                                                                        
 
                                        
 
                                                 
 
                                                                        
 


                         
 


                                                                           



                              
                                                                       
 
                                                
 
                                                                            
 
                                         
 























                                                                             
 



                                                 
                                          
           
 
  

                                                                         

                                                                               
                                                           
 
                                                                                                 


                                               
                                               

                                              
                                        




                                                               

                                                                          
 
                                                                             
 

                                                                                                        


                                                                         
                                                  
 

             
                                                             


           
                       



                                                  


           

                                                  

                                                                               
 

                                                                                                      


                                                              
 
                                                                     

           





                                                                            
          
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE project [
  <!ENTITY userExcludes "">
]>
<project name="scala.nsc" default="build.nsc">

  <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                                    nsc 

                               new scala compiler

       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

       %%%
       %%%  Preliminaries
       %%%

	   1) working scala compiler ($fjbg.jar, $scala.jar and $tools.jar)

	   if you want to use the latest CVS one, type 

       make jar target=LIBRARY
       make jar target=TOOLS

	   and set the variables to the places in your projectoutputdir

	   2) working pizza compiler ($jaco.jar)

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->

  <!-- %%% properties and taskdefs %%%-->

  <property file="build-nsc.properties.${platform}" prefix="nsc." />

  <target name="check.env">
    <fail>
      <condition><not><available file="${nsc.fjbg_jar}" /></not></condition>
      Missing library file ${nsc.fjbg_jar}.
      Check your property file build-nsc.properties.${platform}.
    </fail>
    <fail>
      <condition><not><available file="${nsc.scala_jar}" /></not></condition>
      Missing library file ${nsc.scala_jar}.
      Check your property file build-nsc.properties.${platform}.
    </fail>
    <fail>
      <condition><not><available file="${nsc.tools_jar}" /></not></condition>
      Missing library file ${nsc.tools_jar}.
      Check your property file build-nsc.properties.${platform}.
    </fail>
    <fail>
      <condition><not><available file="${nsc.jaco_jar}" /></not></condition>
      Missing library file ${nsc.jaco_jar}.
      Check your property file build-nsc.properties.${platform}.
    </fail>
  </target>

  <target name="init" depends="check.env">
    <mkdir dir="${nsc.tools_util_runtime_dir}" />
    <mkdir dir="${nsc.jars_dir}" />
    <mkdir dir="${nsc.nsc_dir}" />
    <mkdir dir="${nsc.nsc4ant_dir}" />    
  </target>

  
  <!-- taskdef for nsc comes later, because has to be compiled before -->

  <target name="build.nsc" depends="init">
    <taskdef name="scalac" classname="scala.tools.scala4ant.ScalacTask$class"/>
    <taskdef name="pico"   classname="jaco.pizza.AntTask"/>

    <pico srcdir="sources" destdir="${nsc.tools_util_runtime_dir}" source="1.4" scalaHack="true">
      <include name="scala/*.java"/>
      <include name="scala/runtime/*.java"/>
      <include name="scala/runtime/**/*.java"/>
      <include name="scala/tools/util/*.java"/>

      <exclude name="scala/ScalaObject.java"/>
      <exclude name="scala/Array.java"/>
    </pico> 

    <!-- we do *not* want the ScalaObject.class file,
         because in nsc's eyes ScalaObject is a scala file. -->

    <delete file="${nsc.tools_util_runtime_dir}/scala/ScalaObject.class"/>
    <delete file="${nsc.tools_util_runtime_dir}/scala/Array.class"/>

    <jar destfile="${nsc.nsrt_jar}" basedir="${nsc.tools_util_runtime_dir}"/>

    <scalac srcdir="sources" destdir="${nsc.nsc_dir}" debug="on"
            classpath="${nsc.tools_util_runtime_dir}:${nsc.fjbg_jar}" sourcePath="sources" force="true">
      <!-- force = "true" always recompiles all source files, because 
           scalac does not always go find the latest source file (*3) -->

      <include name="scala/tools/nsc/**/*.scala"/>

    </scalac>

    <jar destfile="${nsc.nsc_jar}" basedir="${nsc.nsc_dir}"/>

  </target>

  <target name="clean">
    <delete dir="${nsc.tools_util_runtime_dir}" />
    <delete dir="${nsc.jars_dir}" />
    <delete dir="${nsc.nsc_dir}" />
    <delete dir="${nsc.nsc4ant_dir}" />
  </target>


  <!-- builds NscTask for use in this ant file -->

  <target name="build.nsc4ant" depends="init">
    <taskdef name="scalac" classname="scala.tools.scala4ant.ScalacTask$class"/>

    <scalac srcdir="sources" destdir="${nsc.nsc4ant_dir}/" sourcePath="sources"
            classpath="${nsc.ant_jar}:${nsc.nsc_dir}:${nsc.tools_util_runtime_dir}:${nsc.scala_jar}" >
      <include name="scala/tools/scala4ant/NscAdaptor.scala"/>
      <include name="scala/tools/scala4ant/NscTask.scala"/>
    </scalac>

    <jar destfile="${nsc.nsc4ant_jar}" basedir="${nsc.nsc4ant_dir}"/>
  </target>

  <!--
    (*3) for Java, and pico, files are only recompiled if the source file is
    newer than the class file. This would work for scala, but mixin
    composition sometimes needs additional source files. These can
    be unavailable for some reason.
  -->
</project>