<?xml version="1.0" encoding="UTF-8"?>
<project name="JOPE" default="makejars" basedir=".">

	<!-- give user a chance to override any of the following settings
         NOTE: any properties defined in one of these files will prevent
               the defaults provided below from being set - this means
               they will be effectively overriden!
	-->
	<property file=".ant.properties"/>
	<property file="${user.home}/.ant.properties"/>

	<!-- DEFAULTS -->
	<property name="src"       location="." />
	<property name="libs"      value="ThirdParty" />
	<property name="bin"       value="ant-obj" />
	<property name="bin.core"  value="${bin}" />
	<property name="bin.jetty" value="${bin}/jetty" />
	<property name="jardir"    value="${bin}/lib" />

	<!-- include the version file NOW -->
	<property file="version.properties" />

	<!-- products -->
	<property name="jarfile.jope"  value="${jardir}/jope-${version.major}.${version.minor}.jar" />
	<property name="jarfile.jetty" value="${jardir}/jettyrunner-${version.major}.${version.minor}.jar" />

	<!-- global compile options -->
	<property name="compile.debug"     value="off" />
	<property name="compile.listfiles" value="false" />
	<property name="compile.source"    value="1.4" />
	<property name="compile.target"    value="1.2" />

	<!--
	<property name="build.compiler"
		  value="org.eclipse.jdt.core.JDTCompilerAdaptor" />
  -->

	<!-- All the parts of the project...
	     We want to package everything excluding the unit tests,
	     thus we need to define the parts of the project with
	     several exclude rules
	-->
	<!-- Core -->
	<patternset id="appserver">
		<include name="org/opengroupware/jope/appserver/**/*.java" />
		<exclude name="org/opengroupware/jope/appserver/tests/" />
	</patternset>
	<patternset id="eoaccess">
		<include name="org/opengroupware/jope/eoaccess/**/*.java" />
		<exclude name="org/opengroupware/jope/eoaccess/tests/" />
	</patternset>
	<patternset id="eocontrol">
		<include name="org/opengroupware/jope/eocontrol/**/*.java" />
		<exclude name="org/opengroupware/jope/eocontrol/tests/" />
	</patternset>
	<patternset id="foundation">
		<include name="org/opengroupware/jope/foundation/**/*.java" />
		<exclude name="org/opengroupware/jope/foundation/tests/" />
	</patternset>

	<!-- Extensions -->
	<patternset id="woextensions">
		<include name="org/opengroupware/jope/woextensions/**/*.java" />
		<exclude name="org/opengroupware/jope/woextensions/tests/" />
	</patternset>
	<patternset id="weextensions">
		<include name="org/opengroupware/jope/weextensions/**/*.java" />
		<exclude name="org/opengroupware/jope/weextensions/tests/" />
	</patternset>
	<patternset id="weprototype">
		<include name="org/opengroupware/jope/weprototype/**.java" />
		<exclude name="org/opengroupware/jope/weprototype/tests/" />
	</patternset>

	<!-- Adaptors -->
	<patternset id="jetty">
		<include name="org/opengroupware/jope/jetty/**/*.java" />
		<exclude name="org/opengroupware/jope/jetty/tests/" />
	</patternset>
	<patternset id="servlets">
		<include name="org/opengroupware/jope/servlets/**/*.java" />
		<exclude name="org/opengroupware/jope/servlets/tests/"  />
	</patternset>

	<!-- Resources -->
	<patternset id="jope.resources">
		<include name="**/*.properties" />
		<include name="**/*.txt" />
		
		<!-- scripts -->
		<include name="**/*.js" />
		
		<!-- licenses -->
		<include name="**/MIT-LICENSE" />

		<!-- don't copy from products or the www directory -->
		<exclude name="${bin}/**" />
		<exclude name="www/**" />
		<exclude name="bin/**" />

		<!-- eclipse product directory -->
		<!-- special files we don't want to put in the package -->
		<exclude name="log4j.properties" />
		<exclude name="version.properties" />
	</patternset>

	<!-- Setup classpath necessary for building -->
	<path id="build.classpath">
		<pathelement path="${classpath}" />
		<!-- third party libs ... required for building und running -->
		<fileset dir="${libs}">
			<include name="*.jar" />
		</fileset>
	</path>

	<!-- clean bin and lib ... this should probably be split? -->
	<target name="clean.all">
		<delete dir="${bin}"    />
		<delete dir="${jardir}" />
		<mkdir  dir="${bin}"    />
		<mkdir  dir="${jardir}" />
	</target>

	<target name="clean.jetty">
		<delete dir="${bin.jetty}" />
		<mkdir  dir="${bin.jetty}" />
	</target>

	<!-- no need to clean up before! -->
	<target name="compile.core">
		<!-- compile it -->
		<javac srcdir="${src}" destdir="${bin.core}" debug="${compile.debug}"
		 listfiles="${compile.listfiles}">
			<classpath refid="build.classpath" />

			<patternset refid="appserver"    />
			<patternset refid="eoaccess"     />
			<patternset refid="eocontrol"    />
			<patternset refid="foundation"   />
			<patternset refid="woextensions" />
			<patternset refid="weextensions" />
			<patternset refid="weprototype"  />
		</javac>

		<!-- copy resources -->
		<copy todir="${bin.core}">
			<fileset dir="${src}">
				<patternset refid="jope.resources" />
			</fileset>
		</copy>
	</target>

	<target name="compile.jetty" depends="compile.core">
		<javac srcdir="${src}" destdir="${bin.jetty}" debug="${compile.debug}"
		 listfiles="${compile.listfiles}">
			<classpath refid="build.classpath" />
			<patternset refid="jetty" />
		</javac>
	</target>

	<target name="compile.servlets" depends="compile.core">
		<javac srcdir="${src}" destdir="${bin.core}" debug="${compile.debug}"
                 listfiles="${compile.listfiles}">
			<classpath refid="build.classpath" />
			<patternset refid="servlets" />
		</javac>
	</target>

	<target name="makejars" depends="makejar.jope, makejar.jetty" />

	<!-- we clean stuff in advance in order to guarantee that no artifacts
	     (if any) are being packaged in this release
	-->
	<target name="makejar.jope" depends="clean.all, compile.servlets">
		<jar destfile="${jarfile.jope}" basedir="${bin}" index="true" compress="true">
			<manifest>
				<section name="org/opengroupware/jope">
					<attribute name="Specification-Title"    value="JOPE" />
					<attribute name="Specification-Version"  value="${version.major}.${version.minor}" />
					<attribute name="Specification-Vendor"   value="OpenGroupware.org" />
					<attribute name="Implementation-Title"   value="org.opengroupware.jope" />
					<attribute name="Implementation-Version" value="${version.major}.${version.minor}.${version.subminor}" />
					<attribute name="Implementation-Vendor"  value="OpenGroupware.org" />
				</section>
			</manifest>
		</jar>
	</target>

	<target name="makejar.jetty" depends="clean.jetty, compile.jetty">
		<jar destfile="${jarfile.jetty}" basedir="${bin.jetty}" index="true" compress="true">
			<manifest>
				<section name="org/opengroupware/jope/jetty">
					<attribute name="Specification-Title"    value="WOJettyRunner" />
					<attribute name="Specification-Version"  value="${version.major}.${version.minor}" />
					<attribute name="Specification-Vendor"   value="OpenGroupware.org" />
					<attribute name="Implementation-Title"   value="org.opengroupware.jope.jetty.WOJettyRunner" />
					<attribute name="Implementation-Version" value="${version.major}.${version.minor}.${version.subminor}" />
					<attribute name="Implementation-Vendor"  value="OpenGroupware.org" />
				</section>
			</manifest>
		</jar>
	</target>
</project>
