changeset 14:992793931a2f

Add dist.native task (compiles Tema to native code).
author Mikhail Kryshen <mikhail@kryshen.net>
date Tue, 24 Mar 2009 17:57:28 +0300
parents ac5f1bc82b13
children e9d13c7ffeb1
files build.xml compile-native
diffstat 2 files changed, 37 insertions(+), 20 deletions(-) [+]
line diff
     1.1 --- a/build.xml	Tue Mar 24 16:00:55 2009 +0300
     1.2 +++ b/build.xml	Tue Mar 24 17:57:28 2009 +0300
     1.3 @@ -10,11 +10,15 @@
     1.4      <property name="doc"      value="doc"/>
     1.5      <property name="lib"      value="${dist}/lib"/>
     1.6      <property name="jar_file" value="tema.jar"/>
     1.7 +    <property name="native_file" value="tema"/>
     1.8 +    <property name="main_class" value="kryshen.tema.Tema"/>
     1.9 +    <property name="task_class" value="kryshen.tema.ant.TemaTask"/>
    1.10      
    1.11      <property name="ant_jar" value="/usr/share/java/ant.jar"/>
    1.12 +    <property name="gcj" value="gcj"/>
    1.13      
    1.14      <path id="project.libs">
    1.15 -        <fileset dir="${lib}">
    1.16 +        <fileset id="project.libs.fileset" dir="${lib}">
    1.17              <include name="**/*.jar"/>
    1.18          </fileset>
    1.19      </path>
    1.20 @@ -36,16 +40,39 @@
    1.21              <fileset dir="${res}"/>
    1.22          </copy>
    1.23      </target>
    1.24 -    
    1.25 +
    1.26      <target name="dist" depends="compile">
    1.27          <jar jarfile="${dist}/${jar_file}" manifest="${src}/Manifest.mf">
    1.28              <fileset dir="${build}" includes="**/*.class"/>
    1.29              <fileset dir="${build}" includes="**/*.template"/>
    1.30          </jar>
    1.31      </target>
    1.32 -      
    1.33 +
    1.34 +    <target name="dist.native" depends="compile">
    1.35 +        <property name="demo_template" value="kryshen/tema/demo/demo.template"/>
    1.36 +
    1.37 +        <exec executable="${gcj}">
    1.38 +            <arg value="-c"/>
    1.39 +            <arg value="-o"/>
    1.40 +            <arg value="${build}/${demo_template}.o" />
    1.41 +            <arg value="--resource" />
    1.42 +            <arg value="${demo_template}" />
    1.43 +            <arg value="${build}/${demo_template}" />
    1.44 +        </exec>
    1.45 +
    1.46 +        <apply executable="${gcj}" parallel="true">
    1.47 +            <fileset dir="${build}"
    1.48 +                     includes="**/*.class **/*.o"
    1.49 +                     excludes="kryshen/tema/ant/**"/>
    1.50 +            <fileset refid="project.libs.fileset"/>
    1.51 +            <arg value="--main=${main_class}"/>
    1.52 +            <arg value="-o"/>
    1.53 +            <arg value="${dist}/${native_file}"/>
    1.54 +        </apply>
    1.55 +    </target>
    1.56 +
    1.57      <target name="run" depends="compile">
    1.58 -        <java classname="kryshen.tema.Tema" fork="true">
    1.59 +        <java classname="${main_class}" fork="true">
    1.60              <classpath>
    1.61                  <pathelement location="${build}"/>
    1.62                  <path refid="project.libs"/>
    1.63 @@ -54,7 +81,7 @@
    1.64      </target>
    1.65      
    1.66      <target name="run.demo" depends="compile">
    1.67 -        <java classname="kryshen.tema.Tema" fork="true">
    1.68 +        <java classname="${main_class}" fork="true">
    1.69              <classpath>
    1.70                  <pathelement location="${build}"/>
    1.71                  <path refid="project.libs"/>
    1.72 @@ -65,7 +92,7 @@
    1.73      
    1.74      <target name="doc.manual" depends="dist">
    1.75          <taskdef name="tema"
    1.76 -                 classname="kryshen.tema.ant.TemaTask"
    1.77 +                 classname="${task_class}"
    1.78                   classpath="${dist}/tema.jar"/>
    1.79                   
    1.80          <tema infile="${doc}/manual/manual.tema"
    1.81 @@ -88,17 +115,20 @@
    1.82               compression="gzip">
    1.83              <tarfileset dir="${basedir}"
    1.84                          prefix="${ant.project.name}-${version}">
    1.85 +		<exclude name=".hg/**"/>
    1.86 +		<exclude name=".hg*"/>
    1.87                  <exclude name="${build}/**"/>
    1.88                  <exclude name="misc/**"/>
    1.89                  <exclude name="test/**"/>
    1.90                  <exclude name="nbproject/**"/>
    1.91                  <exclude name="${dist}/${ant.project.name}-*.tar.gz"/>
    1.92                  <exclude name="${dist}/tema"/>
    1.93 +                <exclude name="${dist}/tema.sh"/>
    1.94              </tarfileset>
    1.95              <tarfileset dir="${basedir}"
    1.96                          prefix="${ant.project.name}-${version}"
    1.97                          mode="755">
    1.98 -                <include name="${dist}/tema"/>
    1.99 +                <include name="${dist}/tema.sh"/>
   1.100              </tarfileset>
   1.101          </tar>
   1.102      </target>
     2.1 --- a/compile-native	Tue Mar 24 16:00:55 2009 +0300
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,13 +0,0 @@
     2.4 -#!/bin/sh
     2.5 -#
     2.6 -# Compile Tema to native code using GCJ.
     2.7 -#
     2.8 -
     2.9 -ant compile
    2.10 -
    2.11 -compile_classes=$(find build -name '*.class' | grep -v tema/ant)
    2.12 -
    2.13 -gcj -o build/demo.template.o -c --resource kryshen/tema/demo/demo.template build/kryshen/tema/demo/demo.template
    2.14 -gcj -g --main=kryshen.tema.Tema -o dist/tema dist/lib/commons-cli-1.1.jar $compile_classes build/demo.template.o
    2.15 -
    2.16 -rm build/demo.template.o