blob: 6f311367d9999db8f510d12cffe54063d189b32d (
plain) (
tree)
|
|
<?xml version="1.0" encoding="UTF-8"?>
<project name="sabbus-msil">
<description>
SuperSabbus extension for the MSIL library targeted for the dotnet framework. THIS FILE IS NOT STAND-ALONE AND SHOULD ONLY BE USED THROUGH ENTRY POINTS IN SUPERSABBUS.
</description>
<!-- ===========================================================================
PROPERTIES
============================================================================ -->
<!-- contains the scala-net / scalac-net commands -->
<property name="src-mono.dir" value="${src.dir}/mono"/>
<!-- Loads custom properties definitions -->
<property file="${src.dir}/build/msil.properties"/>
<!-- Sets location of build folders -->
<property name="build-msil.dir" value="${build.dir}/msil"/>
<property name="build-msil-src.dir" value="${build.dir}/msil-src"/>
<property name="build-msil-pack.dir" value="${build.dir}/msil-pack"/>
<!-- ===========================================================================
INITIALISATION
============================================================================ -->
<target name="msil.init">
<!-- define the "ilasm" task (and others). they are in fact already there from
antlib.xml, but in a deprecated version. -->
<!-- <taskdef resource="org/apache/ant/dotnet/antlib.xml"
classpath="${lib-ant.dir}/ant-dotnet-1.0.jar"/> -->
<!-- Sets ilasm command. Search in
- dotnet.home/ilasm.exe
- unix.mono.home/ilasm
- win.mono.home/lib/mono/2.0/ilasm.exe
- path
(the ".home"s can be set in msil.properties) -->
<condition property="ilasm.cmd" value="${dotnet.home}/ilasm.exe">
<and>
<os family="windows"/><isset property="dotnet.home"/>
<available file="${dotnet.home}/ilasm.exe"/>
</and>
</condition>
<condition property="ilasm.cmd" value="${unix.mono.home}/ilasm">
<and>
<os family="unix"/><isset property="unix.mono.home"/>
<available file="${unix.mono.home}/ilasm"/>
</and>
</condition>
<condition property="ilasm.cmd" value="${win.mono.home}/ilasm">
<and>
<os family="windows"/><isset property="win.mono.home"/>
<available file="${win.mono.home}/lib/mono/2.0/ilasm.exe"/>
</and>
</condition>
<condition property="ilasm.cmd" value="ilasm">
<and><available file="ilasm" filepath="${env.PATH}"/></and>
</condition>
<echo level="verbose" message="Found: ${ilasm.cmd}"/>
<fail message="Command 'ilasm' not found">
<condition><not><isset property="ilasm.cmd"/></not></condition>
</fail>
<!-- Sets ilasm arguments (either Windows or Unix) -->
<if>
<isset property="os.win"/>
<then>
<property
name="ilasm.args"
value="/quiet /dll /output="
/>
</then>
<else>
<property
name="ilasm.args"
value="/dll /output:"
/>
</else>
</if>
</target>
<!-- ===========================================================================
MSIL BUILD
============================================================================ -->
<target name="msil.start" depends="msil.init"/>
<target name="msil.src" depends="msil.start">
<mkdir dir="${build-msil-src.dir}"/>
<sync todir="${build-msil-src.dir}">
<fileset dir="${src.dir}/library"/>
</sync>
<copy todir="${build-msil-src.dir}" overwrite="true">
<fileset dir="${src.dir}/dotnet-library"/>
</copy>
</target>
<target name="msil.lib" depends="msil.src">
<stopwatch name="msil.lib.timer"/>
<mkdir dir="${build-msil.dir}/library"/>
<!-- <ilasm srcdir="${msil.dir}/il" includes="*.msil" outputfile="${msil.dir}/lib/predef.dll"/> -->
<scalac
srcdir="${build-msil-src.dir}"
destdir="${build-msil.dir}/library"
target="msil"
assemname="predef" assemrefs="${lib.dir}"
failonerror="false">
<include name="**/*.scala"/>
<exclude name="scala/ScalaObject.scala"/>
</scalac>
<stopwatch name="four.lib.timer" action="total"/>
</target>
<target name="msil.done" depends="msil.lib"/>
<target name="msil.clean" depends="msil-pack.clean">
<delete dir="${build-msil.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/>
<delete dir="${build-msil-src.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/>
</target>
<!-- ===========================================================================
PACKED MSIL BUILD (MSIL-PACK)
============================================================================ -->
<target name="msil-pack.start" depends="msil.done"/>
<target name="msil-pack.lib" depends="msil-pack.start">
<mkdir dir="${build-msil-pack.dir}/lib"/>
<pathconvert property="ilasm.infiles" pathsep=" ">
<fileset dir="${build-msil.dir}/library" includes="*.msil"/>
</pathconvert>
<property name="msil-pack-lib.file" value="${build-msil-pack.dir}/lib/predef.dll"/>
<!-- spawn="true" will prevent the ilasm command from printing anything to
the console. remove for debugging -->
<exec executable="${ilasm.cmd}"
vmlauncher="no" spawn="true">
<arg line="${ilasm.args}${msil-pack-lib.file} ${ilasm.infiles}"/>
</exec>
</target>
<target name="msil-pack.bin" depends="msil-pack.lib">
<mkdir dir="${build-msil-pack.dir}/bin"/>
<copy todir="${build-msil-pack.dir}/bin">
<fileset
dir="${src-mono.dir}/bin"
includes="scala-net*"
/>
<filterset>
<filter token="VERSION" value="${version.number}"/>
<filter token="COPYRIGHT" value="${copyright.string}"/>
<filter token="NAME" value="Scala code runner"/>
</filterset>
</copy>
<copy todir="${build-msil-pack.dir}/bin">
<fileset
dir="${src-mono.dir}/bin"
includes="scalac-net*"
/>
<filterset>
<filter token="VERSION" value="${version.number}"/>
<filter token="COPYRIGHT" value="${copyright.string}"/>
<filter token="NAME" value="Scala compiler"/>
</filterset>
</copy>
<chmod perm="ugo+rx" dir="${build-msil-pack.dir}/bin" includes="*-net*"/>
<if>
<isset property="os.win"/>
<then>
<copy todir="${build-msil-pack.dir}/lib">
<fileset
dir="${lib.dir}"
includes="mscorlib.dll scalaruntime.dll"/>
<fileset
dir="${build-pack.dir}/lib"
includes="scala-compiler.jar scala-library.jar"/>
</copy>
</then>
<else>
<symlink
link="${build-msil-pack.dir}/lib/mscorlib.dll"
resource="${lib.dir}/mscorlib.dll"
overwrite="yes"/>
<symlink
link="${build-msil-pack.dir}/lib/scalaruntime.dll"
resource="${lib.dir}/scalaruntime.dll"
overwrite="yes"/>
<symlink
link="${build-msil-pack.dir}/lib/scala-compiler.jar"
resource="${build-pack.dir}/lib/scala-compiler.jar"
overwrite="yes"/>
<symlink
link="${build-msil-pack.dir}/lib/scala-library.jar"
resource="${build-pack.dir}/lib/scala-library.jar"
overwrite="yes"/>
</else>
</if>
</target>
<target name="msil-pack.done" depends="msil-pack.bin"/>
<target name="msil-pack.clean">
<delete dir="${build-msil-pack.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/>
</target>
<!-- ===========================================================================
DISTRIBUTION
============================================================================ -->
<!--<target name="msil.dist" depends="msil.build">
<antcall target="binaries"/>
<property name="dist.current.dir" value="${dist.dir}/scala-msil-${version.number}"/>
<mkdir dir="${dist.current.dir}"/>
<copy todir="${dist.current.dir}">
<fileset dir="${msil.dir}" includes="bin/**,lib/**"/>
</copy>
<chmod perm="ugo+rx" dir="${dist.current.dir}/bin" includes="*-net*"/>
<copy todir="${dist.current.dir}/lib">
<fileset dir="${lib.dir}" includes="*.dll"/>
</copy>
<copy todir="${dist.current.dir}/lib">
<fileset dir="${dist.dir}/latest/lib" includes="scala*.jar"/>
</copy>
<! Recreate the 'latest' link to point to this distribution
<if><isset property="os.win"/>
<then>
<copy todir="${dist.dir}/latest-msil">
<fileset dir="${dist.current.dir}"/>
</copy>
</then>
<else>
<symlink
link="${dist.dir}/latest-mono"
resource="${dist.current.dir}"
overwrite="yes" failonerror="no"/>
</else>
</if>
</target>-->
</project>
|