diff options
-rw-r--r-- | src/build/build-msil.xml | 73 | ||||
-rw-r--r-- | src/build/msil.properties.SAMPLE (renamed from src/build/build-msil.properties.SAMPLE) | 0 | ||||
-rw-r--r-- | src/build/msil.xml | 197 |
3 files changed, 234 insertions, 36 deletions
diff --git a/src/build/build-msil.xml b/src/build/build-msil.xml index 0c07cfc342..8690ddb369 100644 --- a/src/build/build-msil.xml +++ b/src/build/build-msil.xml @@ -3,10 +3,6 @@ <project name="scala-msil" basedir="../.." default="build"> -<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 ============================================================================ --> @@ -16,7 +12,7 @@ PROPERTIES <property name="mono.dir" value="${src.dir}/mono"/> <!-- Loads custom properties definitions --> - <property file="${src.dir}/build/build-msil.properties"/> + <property file="${scripts.dir}/scripts/build-msil.properties"/> <!-- Sets location of build folders --> <property name="build.dir" value="${basedir}/build"/> @@ -24,7 +20,7 @@ PROPERTIES <property name="dist.dir" value="${basedir}/dists"/> <!-- =========================================================================== -MSIL BUILD +SETUP ============================================================================ --> <target name="msil.init" depends="init"> @@ -81,25 +77,43 @@ MSIL BUILD <target name="msil.sources" depends="msil.init"> <mkdir dir="${msil.dir}/src"/> <copy todir="${msil.dir}/src"> - <fileset dir="${src.dir}/dotnet-library" includes="**/*.scala, **/*.cs"/> + <fileset dir="${src.dir}/library" includes="**/*.scala"> + <not> + <present targetdir="${src.dir}/dotnet-library"/> + </not> + <exclude name="scala/collection/jcl/**/*.scala"/> + </fileset> </copy> <copy todir="${msil.dir}/src"> - <fileset dir="${src.dir}/library" includes="**/*.scala"/> + <fileset dir="${src.dir}/dotnet-library"> + <include name="**/*.scala"/> + </fileset> </copy> </target> <target name="msil.libraries" depends="msil.sources"> + <antcall target="build.quick"/> + <property name="quick.dir" value="${build.dir}/quick"/> + <path id="quick.classpath"> + <pathelement location="${quick.dir}/lib/library"/> + <pathelement location="${quick.dir}/lib/compiler"/> + <pathelement location="${fjbg.jar}"/> + <pathelement location="${msil.jar}"/> + </path> + <taskdef + name="quick" classname="scala.tools.ant.Scalac" + classpathref="quick.classpath"/> <mkdir dir="${msil.dir}/lib"/> - <scalac srcdir="${msil.dir}/src" target="msil" + <quick srcdir="${msil.dir}/src" usepredefs="no" target="msil" assemname="predef" assemrefs="${lib.dir}" failonerror="false"> <include name="**/*.scala"/> <exclude name="scala/ScalaObject.scala"/> - </scalac> + </quick> <pathconvert property="ilasm.infiles" pathsep=" "> <fileset dir="${msil.dir}" includes="*.msil"/> </pathconvert> - <exec executable="${ilasm.cmd} ${ilasm.infiles}" vmlauncher="no"> + <exec executable="${ilasm.cmd} {$ilasm.infiles}" vmlauncher="no"> <arg line="${ilasm.args}"/> </exec> </target> @@ -128,31 +142,18 @@ MSIL BUILD </filterset> </copy> <chmod perm="ugo+rx" dir="${msil.dir}/bin" includes="*-net*"/> - <if><isset property="os.win"/> - <then> - <copy todir="${quick.dir}/lib"> - <fileset dir="${msil.dir}" includes="*.dll"/> - <fileset dir="${lib.dir}" includes="*.dll"/> - </copy> - </then> - <else> - <symlink - link="${quick.dir}/lib/predef.dll" - resource="${msil.dir}/predef.dll" - overwrite="yes" failonerror="no"/> - <symlink - link="${quick.dir}/lib/scalaruntime.dll" - resource="${lib.dir}/scalaruntime.dll" - overwrite="yes" failonerror="no"/> - <symlink - link="${quick.dir}/lib/mscorlib.dll" - resource="${lib.dir}/mscorlib.dll" - overwrite="yes" failonerror="no"/> - </else> - </if> + <jar destfile="${msil.dir}/lib/${comp.jar.name}"> + <fileset dir="${quick.dir}/lib/compiler"/> + <zipfileset src="${fjbg.jar}"/> + <zipfileset src="${msil.jar}"/> + </jar> + <jar destfile="${msil.dir}/lib/${lib.jar.name}"> + <fileset dir="${strap.dir}/lib/library"/> + <fileset dir="${strap.dir}/lib/actors"/> + </jar> </target> - <!--<target name="msil.dist" depends="msil.build"> + <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}"/> @@ -166,7 +167,7 @@ MSIL BUILD <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 + <!-- Recreate the 'latest' link to point to this distribution --> <if><isset property="os.win"/> <then> <copy todir="${dist.dir}/latest-msil"> @@ -180,7 +181,7 @@ MSIL BUILD overwrite="yes" failonerror="no"/> </else> </if> - </target>--> + </target> <!-- =========================================================================== CLEAN diff --git a/src/build/build-msil.properties.SAMPLE b/src/build/msil.properties.SAMPLE index e50eb8db27..e50eb8db27 100644 --- a/src/build/build-msil.properties.SAMPLE +++ b/src/build/msil.properties.SAMPLE diff --git a/src/build/msil.xml b/src/build/msil.xml new file mode 100644 index 0000000000..d90379a74a --- /dev/null +++ b/src/build/msil.xml @@ -0,0 +1,197 @@ +<?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 +============================================================================ --> + + <import file="build-jvm15.xml"/> + + <property name="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.dir" value="${basedir}/build"/> + <property name="msil.dir" value="${build.dir}/msil"/> + <property name="dist.dir" value="${basedir}/dists"/> + +<!-- =========================================================================== +MSIL BUILD +============================================================================ --> + + <target name="msil.init" depends="init"> + <!-- Sets ilasm command (either Microsoft .NET Framework or Mono) --> + <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> + <echo level="verbose" message="Found: ${ilasm.cmd}"/> + <condition property="ilasm.cmd" value="ilasm"> + <and><available file="ilasm" filepath="${env.PATH}"/></and> + </condition> + <fail message="Command 'ilasm' not found"> + <condition><not><isset property="ilasm.cmd"/></not></condition> + </fail> + <!-- Sets ilasm arguments (either Windows or Unix) --> + <property name="ilasm.outfile" value="${msil.dir}/lib/predef.dll"/> + <if> + <isset property="os.win"/> + <then> + <property + name="ilasm.args" + value="/quiet /dll /output=${ilasm.outfile}" + /> + </then> + <else> + <property + name="ilasm.args" + value="/dll /output:${ilasm.outfile}" + /> + </else> + </if> + <property file="${number.file}"/> + <property + name="version.number" + value="${version.major}.${version.minor}.${version.patch}.r${svn.number}-b${time.short}"/> + <echo level="verbose" message="${version.number}"/> + </target> + + <target name="msil.sources" depends="msil.init"> + <mkdir dir="${msil.dir}/src"/> + <copy todir="${msil.dir}/src"> + <fileset dir="${src.dir}/dotnet-library" includes="**/*.scala, **/*.cs"/> + </copy> + <copy todir="${msil.dir}/src"> + <fileset dir="${src.dir}/library" includes="**/*.scala"/> + </copy> + </target> + + <target name="msil.libraries" depends="msil.sources"> + <mkdir dir="${msil.dir}/lib"/> + <scalac srcdir="${msil.dir}/src" destdir="${msil.dir}" target="msil" + assemname="predef" assemrefs="${lib.dir}" + failonerror="false"> + <include name="**/*.scala"/> + <exclude name="scala/ScalaObject.scala"/> + </scalac> + <pathconvert property="ilasm.infiles" pathsep=" "> + <fileset dir="${msil.dir}" includes="*.msil"/> + </pathconvert> + <echo>${ilasm.cmd} ${ilasm.infiles}</echo> + <exec executable="${ilasm.cmd} ${ilasm.infiles}" vmlauncher="no"> + <arg line="${ilasm.args}"/> + </exec> + </target> + + <target name="msil.build" depends="msil.libraries"> + <copy todir="${msil.dir}/bin"> + <fileset + dir="${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="${msil.dir}/bin"> + <fileset + dir="${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="${msil.dir}/bin" includes="*-net*"/> + <if><isset property="os.win"/> + <then> + <copy todir="${quick.dir}/lib"> + <fileset dir="${msil.dir}" includes="*.dll"/> + <fileset dir="${lib.dir}" includes="*.dll"/> + </copy> + </then> + <else> + <symlink + link="${quick.dir}/lib/predef.dll" + resource="${msil.dir}/predef.dll" + overwrite="yes" failonerror="no"/> + <symlink + link="${quick.dir}/lib/scalaruntime.dll" + resource="${lib.dir}/scalaruntime.dll" + overwrite="yes" failonerror="no"/> + <symlink + link="${quick.dir}/lib/mscorlib.dll" + resource="${lib.dir}/mscorlib.dll" + overwrite="yes" failonerror="no"/> + </else> + </if> + </target> + + <!--<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>--> + +<!-- =========================================================================== +CLEAN +============================================================================ --> + + <target name="msil.clean" depends="ant-init"> + <remove dir="${build.dir}/msil"/> + <delete includeemptydirs="true" quiet="yes" failonerror="no"> + <fileset dir="@{dist.dir}" includes="**/scala-msil*"/> + </delete> + <delete file="${dist.dir}/latest-msil" quiet="yes" failonerror="no"/> + </target> + +</project> |