2004-05-02 16:24:19 +02:00
<?xml version="1.0"?>
<project name= "FreeCol" default= "package" >
2006-09-18 16:30:44 +02:00
<property name= "freecol.name" value= "freecol" />
<property environment= "env" />
2004-08-04 15:42:17 +02:00
<property name= "freecol.data.dir" value= "${basedir}/data" />
2004-05-11 00:34:42 +02:00
<property name= "freecol.src.dir" value= "${basedir}/src" />
2006-02-03 09:16:17 +01:00
<property name= "freecol.build.dir" value= "${basedir}/build" />
2006-09-18 16:30:44 +02:00
<property name= "freecol.packaging.dir" value= "${basedir}/packaging" />
2006-09-22 15:35:07 +02:00
<property name= "freecol.release.dir" value= "${basedir}/dist" />
<property name= "freecol.javadoc.dir" value= "${basedir}/doc/javadoc" />
2004-05-02 16:24:19 +02:00
<property name= "freecol.jar.file" value= "${basedir}/FreeCol.jar" />
2006-09-22 15:35:07 +02:00
<property name= "freecol.metaserver.jar.file" value= "${basedir}/FreeCol-metaserver.jar" />
2004-08-18 23:15:51 +02:00
<property name= "freecol.overview.file" value= "${freecol.src.dir}/overview.html" />
2006-03-11 19:48:50 +01:00
<path id= "test.class.path" >
<fileset dir= "test/lib" includes= "*.jar" />
2007-04-14 14:59:53 +02:00
<fileset dir= "${basedir}/jars/" includes= "*.jar" />
2006-03-11 19:48:50 +01:00
</path>
2007-03-10 16:05:22 +01:00
<condition property= "isOsUnixLike" >
<os family= "unix" />
</condition>
2006-09-22 15:35:07 +02:00
<!-- TASK DEFINITIONS -->
<taskdef name= "jsmoothgen"
classname="net.charabia.jsmoothgen.ant.JSmoothGen"
classpath="${freecol.build.dir}/jars/jsmoothgen-ant.jar"
/>
<taskdef name= "izpack"
classname="com.izforge.izpack.ant.IzPackTask"
classpath="${freecol.build.dir}/jars/standalone-compiler.jar"
/>
2007-03-10 16:05:22 +01:00
2007-03-10 09:47:42 +01:00
<!-- JarBundler is a feature - rich Ant task which will create a Mac OS X
application bundle from a list of Jar files and a main class name.
(GPL-Software) -> http://informagen.com/JarBundler/
Download and place jarbundler.jar into ${freecol.build.dir}/jars-->
<taskdef name= "jarbundler"
classname="net.sourceforge.jarbundler.JarBundler"
classpath="${freecol.build.dir}/jars/jarbundler.jar"
/>
2004-05-02 16:24:19 +02:00
<target name= "init" unless= "TSTAMP" >
<tstamp />
</target>
2006-09-22 15:35:07 +02:00
<!-- Compiles the java source files and updates the version numbers. -->
2004-05-02 16:24:19 +02:00
<target name= "compile" depends= "init" >
<mkdir dir= "${freecol.build.dir}" />
2006-09-22 15:35:07 +02:00
2004-05-02 16:24:19 +02:00
<javac srcdir= "${freecol.src.dir}"
destdir="${freecol.build.dir}"
2007-03-17 13:45:51 +01:00
classpath="${basedir}/jars/higlayout.jar:${basedir}/jars/jsr173_1.0_api.jar:${basedir}/jars/wstx-lgpl-4.0pr1.jar"
2004-05-02 16:24:19 +02:00
debug="on"
optimize="on"
deprecation="off"
2006-12-08 12:14:40 +01:00
source="1.5"
2006-09-22 15:35:07 +02:00
/>
2004-08-04 15:42:17 +02:00
</target>
2006-09-22 15:35:07 +02:00
2006-01-05 08:23:56 +01:00
<target name= "compile-test" depends= "init" >
<mkdir dir= "${freecol.build.dir}" />
<javac srcdir= "test/src"
destdir="${freecol.build.dir}"
2006-01-16 06:01:09 +01:00
classpath="test/lib/junit.jar"
2006-01-05 08:23:56 +01:00
debug="on"
optimize="on"
deprecation="off"
source="1.4"
/>
</target>
2006-09-22 15:35:07 +02:00
<target name= "build" depends= "init,compile" description= "Compiles the source files." >
2006-01-15 07:39:54 +01:00
<copy todir= "${freecol.build.dir}" >
<fileset dir= "${freecol.src.dir}" includes= "**/*.xml" />
</copy>
2005-12-14 03:31:44 +01:00
<native2ascii src= "${freecol.src.dir}" dest= "${freecol.build.dir}"
2007-04-14 20:39:13 +02:00
encoding="UTF-8"
includes="**/*.properties"
excludes="classes/** **/*_de_DE.properties **/*_hu.properties **/*_pt_BR.properties"/>
2006-09-11 21:21:57 +02:00
<native2ascii src= "${freecol.src.dir}" dest= "${freecol.build.dir}"
2007-04-14 20:39:13 +02:00
encoding="ISO-8859-1"
includes="**/*_de_DE.properties **/*_hu.properties **/*_pt_BR.properties"
excludes="classes/**" />
2004-05-02 16:24:19 +02:00
</target>
2004-08-27 17:40:44 +02:00
2006-09-22 15:35:07 +02:00
<!-- Compiles the source files and creates a JAR - file. -->
<target name= "package" depends= "init,build" description= "Compiles the source files and creates a JAR-file." >
2005-02-19 20:53:22 +01:00
<jar jarfile= "${freecol.jar.file}"
basedir="${freecol.build.dir}"
manifest="${basedir}/src/MANIFEST.MF"
2006-09-22 15:35:07 +02:00
includes="net/**, org/**"
2005-02-19 20:53:22 +01:00
excludes="**/CVS/**, **/metaserver/**"
/>
</target>
2006-01-15 07:39:54 +01:00
2006-09-22 15:35:07 +02:00
<!-- Compiles the metaserver and creates a JAR - file. -->
<target name= "metaserver" depends= "init,build" description= "Compiles the metaserver and creates a JAR-file." >
<jar jarfile= "${freecol.metaserver.jar.file}"
2004-05-02 16:24:19 +02:00
basedir="${freecol.build.dir}"
2004-05-11 00:34:42 +02:00
manifest="${basedir}/src/MANIFEST.MF"
2006-09-22 15:35:07 +02:00
includes="net/**, org/**"
2004-05-02 16:24:19 +02:00
excludes="**/CVS/**"
/>
</target>
2006-09-22 15:35:07 +02:00
<!--
Creates archives and installers for distribution and places these in the
"dist" directory.
-->
2006-11-26 12:21:23 +01:00
<target name= "dist" description= "Creates archives and installers for distribution." >
2007-03-10 09:47:42 +01:00
2006-11-26 12:21:23 +01:00
<input message= "Please specify the release version (x.y.z): " addproperty= "freecol.version" defaultvalue= "custom_build" />
<property name= "freecol.release.name" value= "${freecol.name}-${freecol.version}" />
<replaceregexp file= "${freecol.src.dir}/net/sf/freecol/FreeCol.java"
match="FREECOL_VERSION\s*=\s*" (.*?)" \;"
replace="FREECOL_VERSION = " ${freecol.version}" \;"
/>
<echo message= "Game version updated in FreeCol.java" />
<antcall target= "clean" />
<antcall target= "package" />
2006-09-18 16:30:44 +02:00
<mkdir dir= "${freecol.release.dir}" />
<mkdir dir= "${freecol.release.dir}/${freecol.name}" />
2006-11-26 12:21:23 +01:00
2006-09-18 16:30:44 +02:00
<copy todir= "${freecol.release.dir}/${freecol.name}" >
<fileset dir= "${basedir}" includes= "FreeCol.jar" />
<fileset dir= "${freecol.packaging.dir}/common" excludes= "**/CVS/**" />
2006-09-22 15:35:07 +02:00
<fileset dir= "${basedir}" includes= "data/**" excludes= "**/CVS/**" />
<fileset dir= "${basedir}" includes= "jars/**" excludes= "**/CVS/**" />
2006-09-18 16:30:44 +02:00
</copy>
<zip destfile= "${freecol.release.dir}/${freecol.release.name}.zip" >
<fileset dir= "${freecol.release.dir}" includes= "${freecol.name}/**" />
</zip>
<tar destfile= "${freecol.release.dir}/${freecol.release.name}.tar.gz" compression= "gzip" >
<tarfileset dir= "${freecol.release.dir}" includes= "${freecol.name}/**" />
</tar>
<copy todir= "${freecol.release.dir}/${freecol.name}" >
<fileset dir= "${basedir}" includes= "src/**" excludes= "**/CVS/**" />
<fileset dir= "${basedir}" includes= "build.xml" />
</copy>
<zip destfile= "${freecol.release.dir}/${freecol.release.name}-src.zip" >
<fileset dir= "${freecol.release.dir}" includes= "${freecol.name}/**" />
</zip>
<tar destfile= "${freecol.release.dir}/${freecol.release.name}-src.tar.gz" compression= "gzip" >
<tarfileset dir= "${freecol.release.dir}" includes= "${freecol.name}/**" />
</tar>
2006-09-22 15:35:07 +02:00
<copy tofile= "${freecol.build.dir}/installer-tmp.xml" >
<fileset file= "${freecol.build.dir}/installer.xml" />
</copy>
<replace file= "${freecol.build.dir}/installer-tmp.xml"
token="%ant:freecol.version%"
value="${freecol.version}"
/>
2007-03-10 16:05:22 +01:00
2006-09-22 15:35:07 +02:00
<jsmoothgen project= "${freecol.build.dir}/startup.jsmooth" skeletonroot= "${freecol.build.dir}/skeletons" />
<move todir= "${freecol.release.dir}/${freecol.name}" >
<fileset dir= "${freecol.build.dir}" includes= "freecol.exe" />
</move>
<mkdir dir= "${freecol.release.dir}/${freecol.name}/Uninstaller" />
<jsmoothgen project= "${freecol.build.dir}/uninstaller.jsmooth" skeletonroot= "${freecol.build.dir}/skeletons" />
<move todir= "${freecol.release.dir}/${freecol.name}/Uninstaller" >
<fileset dir= "${freecol.build.dir}" includes= "uninstaller.exe" />
</move>
<izpack input= "${freecol.build.dir}/installer-tmp.xml"
output="${freecol.release.dir}/${freecol.release.name}-installer.jar" installerType="standard"
basedir="${freecol.release.dir}/${freecol.name}"
izpackdir="${freecol.build.dir}"
/>
<delete quiet= "true" file= "${freecol.build.dir}/installer-tmp.xml" />
<copy todir= "${freecol.release.dir}" >
<fileset dir= "${freecol.build.dir}" includes= "installer.jsmooth" />
</copy>
<replace file= "${freecol.release.dir}/installer.jsmooth"
token="%ant:freecol.release.name%"
value="${freecol.release.name}"
/>
<replace file= "${freecol.release.dir}/installer.jsmooth"
token="%ant:freecol.installerjar%"
value="${freecol.release.dir}/${freecol.release.name}-installer.jar"
/>
<jsmoothgen project= "${freecol.release.dir}/installer.jsmooth" skeletonroot= "${freecol.build.dir}/skeletons" />
2006-09-18 16:30:44 +02:00
<delete quiet= "true" dir= "${freecol.release.dir}/${freecol.name}" />
2006-09-22 15:35:07 +02:00
<delete quiet= "true" file= "${freecol.release.dir}/installer.jsmooth" />
2007-03-10 09:47:42 +01:00
<antcall target= "macJavaBundle" />
<antcall target= "tarMacJavaBundle" />
<antcall target= "tarMacJavaBundleOnWindows" />
2006-09-22 15:35:07 +02:00
<echo message= "" />
<echo message= "-------------------------------------------------" />
<echo message= "Distribution files created:" />
<echo message= "${freecol.release.dir}" />
<echo message= "-------------------------------------------------" />
2006-09-18 16:30:44 +02:00
</target>
2006-09-22 15:35:07 +02:00
2007-03-10 09:47:42 +01:00
<target name= "macJavaBundle" description= "Buils a doubleclickable application bundle running on Mac os X" >
2007-03-10 16:05:22 +01:00
<mkdir dir= "${freecol.release.dir}" />
<!-- Mac OS X -->
2007-03-10 09:47:42 +01:00
<jarbundler dir= "${freecol.release.dir}"
name="FreeCol"
mainclass="net.sf.freecol.FreeCol"
version="${freecol.version}"
vmoptions="-Xmx256M"
jvmversion="1.5+"
arguments="--windowed --freecol-data FreeCol.app/Contents/Resources/"
stubfile="${freecol.build.dir}/skeletons/FreeCol"
icon="${basedir}/FreeCol.icns">
<!--
TODO: Where should I place the icon file?
Replace the value of the icon-attribute with the future icon path
-->
<jarfilelist dir= "${basedir}" files= "FreeCol.jar" />
<jarfileset dir= "${basedir}/jars/" >
<include name= "**/*.jar" />
<exclude name= "**/CVS" />
</jarfileset>
<resourcefileset dir= "${basedir}/data" >
<exclude name= "**/CVS" />
</resourcefileset>
</jarbundler>
</target>
<target name= "tarMacJavaBundle" if= "isOsUnixLike" depends= "macJavaBundle" >
<delete file= "${freecol.release.dir}/FreeCol.app/Contents/MacOS/FreeCol" />
<symlink link= "${freecol.release.dir}/FreeCol.app/Contents/MacOS/FreeCol" resource= "/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub" />
<exec executable= "tar" >
<arg value= "cfvj" />
<arg value= "${freecol.release.dir}/${freecol.release.name}-mac.tar.bz2" />
<arg value= "-C" />
<arg value= "${freecol.release.dir}" />
<arg value= "FreeCol.app/" />
</exec>
<delete quiet= "true" dir= "${freecol.release.dir}/FreeCol.app" />
</target>
<target name= "tarMacJavaBundleOnWindows" depends= "macJavaBundle" unless= "isOsUnixLike" >
<echo message= "Warning: You are building a Mac Os X Java Application Bundle containing a Copy Java Application Stub. Creating a bundle with the current copy of Java Launching Stub could lead to a future situation where the JavaApplicationStub file could become incompatible with a future OS X update. To avoid this, use a unix like system ... " />
<tar destfile= "${freecol.release.dir}/${freecol.release.name}-mac.tar.bz2" compression= "bzip2" >
<tarfileset dir= "${freecol.release.dir}" mode= "755"
includes="FreeCol.app/Contents/MacOS/FreeCol"
excludes="**/freecol*"
followsymlinks="false"
/>
<tarfileset followsymlinks= "false" dir= "${freecol.release.dir}" >
<include name= "FreeCol.app/**" />
<exclude name= "**/freecol*" />
<exclude name= "FreeCol.app/Contents/MacOS/FreeCol" />
</tarfileset>
</tar>
<delete quiet= "true" dir= "${freecol.release.dir}/FreeCol.app" />
</target>
2007-03-10 16:05:22 +01:00
2006-09-22 15:35:07 +02:00
<!-- Cleans the directories by removing auto - generated files. -->
<target name= "clean" depends= "init" description= "Cleans the directories by removing auto-generated files." >
2004-05-02 16:24:19 +02:00
<delete quiet= "true" includeEmptyDirs= "true" >
<fileset dir= "${freecol.build.dir}" includes= "net/**" />
<fileset dir= "${freecol.build.dir}" includes= "timestamp.inf" />
2006-09-18 16:30:44 +02:00
<fileset dir= "${freecol.release.dir}" />
2004-05-02 16:24:19 +02:00
</delete>
<delete quiet= "true" file= "${freecol.jar.file}" />
<delete quiet= "true" dir= "${freecol.javadoc.dir}" />
</target>
2006-01-15 07:39:54 +01:00
2004-05-02 16:24:19 +02:00
<target name= "fix" depends= "init" >
<fixcrlf srcdir= "${freecol.src.dir}"
includes="**/*.java"
eol="asis"
tab="remove"
javafiles="yes"
tablength="4"
eof="asis"
/>
</target>
2006-01-15 07:39:54 +01:00
2006-09-22 15:35:07 +02:00
<!-- Generate JavaDoc documentation. -->
<target name= "javadoc" depends= "init" description= "Generate JavaDoc documentation." >
2004-05-02 16:24:19 +02:00
<mkdir dir= "${freecol.javadoc.dir}" />
<javadoc sourcepath= "${freecol.src.dir}"
2004-08-18 23:15:51 +02:00
overview="${freecol.overview.file}"
2004-05-02 16:24:19 +02:00
destdir="${freecol.javadoc.dir}"
packagenames="net.sf.freecol.*"
2007-03-17 13:45:51 +01:00
classpath="${basedir}/jars/higlayout.jar:${basedir}/jars/jsr173_1.0_api.jar:${basedir}/jars/wstx-lgpl-4.0pr1.jar"
2004-05-02 16:24:19 +02:00
Author="true"
Windowtitle="FreeCol Code Documentation"
/>
2006-09-22 15:35:07 +02:00
<echo message= "" />
<echo message= "-------------------------------------------------" />
<echo message= "JavaDoc-generated documentation created:" />
<echo message= "${freecol.javadoc.dir}" />
<echo message= "-------------------------------------------------" />
2004-05-02 16:24:19 +02:00
</target>
2006-03-11 19:48:50 +01:00
<!-- example:
ant -lib test/lib/junit.jar -Dtest=common.model.Building test
-->
<target name= "test" depends= "build, build-unit-tests"
2006-09-22 15:35:07 +02:00
description="Runs a particular unit test"
2006-03-11 19:48:50 +01:00
>
<echo message= "if the next task fails then please read the build script" />
<!-- if the next fails then here is the long answer:
http://ant.apache.org/faq.html#delegating-classloader
the short answer depends.
if you have Ant 1.6:
ant -lib test/lib/junit.jar testall
if you have a version of Ant prior to 1.6 on Windows:
set CLASSPATH=%CLASSPATH%;test\lib\junit.jar
ant testall
if you have a version of Ant prior to 1.6 on UNIX:
export CLASSPATH=${CLASSPATH}:test/lib/junit.jar; ant testall
-->
<junit printsummary= "yes" >
<classpath >
<pathelement location= "${freecol.build.dir}" />
</classpath>
<formatter type= "plain" />
<test todir= "${freecol.build.dir}" name= "net.sf.freecol.${test}Test" />
</junit>
</target>
<target name= "testall" depends= "build-unit-tests"
2006-09-22 15:35:07 +02:00
description="Runs all unit tests"
2006-03-11 19:48:50 +01:00
>
<echo message= "if the next task fails then please read the build script" />
<!-- if the next fails then here is the long answer:
http://ant.apache.org/faq.html#delegating-classloader
the short answer depends.
if you have Ant 1.6:
ant -lib test/lib/junit.jar testall
if you have a version of Ant prior to 1.6 on Windows:
set CLASSPATH=%CLASSPATH%;test\lib\junit.jar
ant testall
if you have a version of Ant prior to 1.6 on UNIX:
export CLASSPATH=${CLASSPATH}:test/lib/junit.jar; ant testall
-->
<junit printsummary= "yes" >
<classpath >
<pathelement location= "${freecol.build.dir}" />
</classpath>
<formatter type= "plain" />
<batchtest fork= "yes" todir= "${freecol.build.dir}" >
<fileset dir= "test/src" includes= "**/*Test.java" />
</batchtest>
</junit>
</target>
<target name= "build-unit-tests" depends= "build" >
<depend srcDir= "test/src" destDir= "${freecol.build.dir}"
cache="${freecol.build.dir}" />
<javac srcdir= "test/src" destdir= "${freecol.build.dir}"
classpathref="test.class.path" debug="on" deprecation="off"
2007-04-14 14:59:53 +02:00
source="1.5" />
2006-03-11 19:48:50 +01:00
</target>
2007-04-08 11:35:40 +02:00
<target name= "print-manual"
description="Creates the printable user guide.">
2006-12-07 08:44:35 +01:00
<delete file= "doc/FreeCol.ind" />
2006-09-11 18:15:55 +02:00
<exec executable= "pdflatex" dir= "doc" >
<arg file= "doc/FreeCol.tex" />
</exec>
2006-12-07 08:44:35 +01:00
<exec executable= "makeindex" dir= "doc" >
<arg file= "doc/FreeCol.idx" />
</exec>
2006-09-11 18:15:55 +02:00
<exec executable= "pdflatex" dir= "doc" >
<arg file= "doc/FreeCol.tex" />
</exec>
</target>
2007-04-08 11:35:40 +02:00
<target name= "online-manual"
description="Creates the online user guide.">
2006-12-07 08:44:35 +01:00
<delete file= "doc/FreeCol.ind" />
<exec executable= "htlatex" dir= "doc" >
<arg file= "doc/FreeCol.tex" />
</exec>
<exec executable= "tex" dir= "doc" >
<arg line= "\def\filename{{FreeCol}{idx}{4dx}{ind}} \input idxmake.4ht" />
</exec>
<exec executable= "makeindex" dir= "doc" >
<arg file= "doc/FreeCol.4dx" />
</exec>
2006-09-11 18:15:55 +02:00
<exec executable= "htlatex" dir= "doc" >
<arg file= "doc/FreeCol.tex" />
</exec>
</target>
2007-04-08 11:35:40 +02:00
<target name= "manual" depends= "print-manual,online-manual"
description="Creates the printable and online user guides.">
2006-09-11 18:15:55 +02:00
</target>
2007-03-18 12:13:37 +01:00
<target name= "fixTabsWindows" >
<fixcrlf srcdir= "${freecol.src.dir}" tab= "remove" tablength= "4"
includes="**/*.java" eol="crlf"
/>
</target>
<target name= "fixTabsUnix" >
<fixcrlf srcdir= "${freecol.src.dir}" tab= "remove" tablength= "4"
includes="**/*.java" eol="lf"
/>
</target>
2007-04-08 11:35:40 +02:00
2007-04-08 12:40:02 +02:00
<!-- Prints a report on certain translations, which you can specify
by setting the localeKey property ("-DlocaleKey=fi", for example),
or all translations. Use "-emacs" in order to suppress extensive
logging. -->
2007-04-08 11:35:40 +02:00
<target name= "translation-report" depends= "build"
description="Creates report on translations.">
<condition property= "localeKey" else= "" >
<isset property= "localeKey" />
</condition>
<java classname= "net.sf.freecol.tools.TranslationReport"
classpath="build/" >
<arg value= "src/net/sf/freecol/client/gui/i18n/" />
<arg value= "${localeKey}" />
</java>
</target>
2007-03-10 16:05:22 +01:00
</project>