Commits

Fred Grott committed d36c393

major reorg now to refactor the build.xml logic, etc

Comments (0)

Files changed (1026)

 bin/*
 gen/*
 local.properties
-ext-libs/*
+ext-libs/*
+libs/*
     </description>
 
 	<!-- ======================================= -->
-	<!-- === GWSAntDroid env vars                                     == -->
+	<!-- === GWSAntDroid env vars             == -->
+	<!-- === ${TSTAMP} ${DSTAMP}              == -->
 	<!-- ======================================= -->
 	<property environment="env"/>
 	<tstamp/>
 	<!-- ************************************************ -->
-	<!-- **         first part of build.template from sdk      *** -->
-	<!-- **         namely the import properties files part *** -->
+	<!-- ** first part of build.template from sdk     *** -->
+	<!-- ** namely the import properties files part   *** -->
 	<!-- ************************************************ -->
 	<!-- The local.properties file is created and updated by the 'android' tool.
 	        It contains the path to the SDK. It should *NOT* be checked into
 	                unless="sdk.dir"
 	        />
 	<!-- ========================================= -->
-	<!-- ==         More GWSAntDroid build system               == -->
-	<!-- ==        Bootstrap Initialization                                   == -->
+	<!-- == More GWSAntDroid build system       == -->
+	<!-- == Bootstrap Initialization            == -->
 	<!-- ========================================= -->
 	<property name="project.root.dir" location="${basedir}"/>
 	<property name="project.bootstrapjars.dir" location="${project.root.dir}/bootstrapjars"/>
 	<property name="projectdocs.dir" location="${project.bin.dir}/projectdocs"/>
 	<property name="assets.temp.dir" location="${project.bin.dir}/assetstemp"/>
 	<property name="assets.temp.abs.dir" location="${assets.temp.dir}"/>
-	<!-- =========================================== -->
+	<!-- =================================================== -->
 	<!-- ==  GWSAntDroid  Build system bootstrap paths    == -->
-	<!-- ==   temp artifact dirs                                                        == -->
-	<!-- =========================================== -->
+	<!-- ==   temp artifact dirs                          == -->
+	<!-- =================================================== -->
 	<mkdir dir="${buildlogs.dir}"/>
 	<mkdir dir="${ivyreports.dir}"/>
 	<mkdir dir="${projectdocs.dir}"/>
 	<mkdir dir="${assets.temp.dir}"/>
-	<!-- ============================================= -->
-	<!-- == GWSAntDroid build system bootstrap initpaths     == -->
-	<!-- ============================================= -->
+	<!-- ====================================================== -->
+	<!-- == GWSAntDroid build system bootstrap init paths    == -->
+	<!-- ====================================================== -->
 	<!-- JWare path for both Log4Ant and Antrxas and the required logger jar-->
 	    <path id="jware.path">
 	        <fileset dir="${bootstrapjarslog4ant.dir}/dep">
 	    <emit:show message="${log4ant.label}"/> 
 	    <emit:show message="${slf4j.label}"/>
 	    <emit:show message="${slf4j-impl.label}"/>
-	<!-- ===================================== -->
+	<!-- ========================================== -->
 	<!-- == GWSAntDroid build system macro defs  == -->
-	<!-- ===================================== -->
+	<!-- ========================================== -->
 	<!-- our wrap error macro to obtain the error trace in all targets that have it applied -->
 	    <presetdef name="wrap">
 	       <oja:protect>
 	<mkdir dir="${ext-libs.dir}"/>
 	<ivy:resolve/>
 	<ivy:report todir="${ivyreports.dir}"/>
-	<ivy:retrieve pattern="${ext-libs.dir}/[conf]/[artifact].[ext]" conf="ant, compile, doclet, aptfactory, javadoc, nativedriver"/>
+	<ivy:retrieve pattern="${ext-libs.dir}/[conf]/[artifact].[ext]" conf="ant, appcompile, doclet, aptfactory, javadoc"/>
     <!-- rest of buildsystem project properties-->
 	<property name="buildsys.dir" location="${project.root.dir}/buildsys"/>
 	<!-- =============================================== -->
-	<!-- == GWSAntDroid codeqa initialization                                    == -->
+	<!-- == GWSAntDroid codeqa initialization         == -->
 	<!-- =============================================== -->
 	<property name="codeqa.dir" location="${buildsys.dir}/codeqa"/>
 	<property name="codeqa.images.dir" location="${codeqa.dir}/images"/>
 	<property name="jdepend2dot.xsl" location="${codeqa.xsls.dir}/jdepend2dot.xsl"/>
 	<property name="jsdoctoolkit" location="${buildsys.dir}/jsdoc-toolkit"/>
 	<!-- ============================================================ -->
-	<!-- == GWSAntDroid projectdocs initialization                                                          == -->
+	<!-- == GWSAntDroid projectdocs initialization                 == -->
 	<!-- ============================================================ -->
 	<property name="doclava.app.projectdocs.dir" location="${buildsys.dir}/app.projectdocs"/>
 	<property name="doclava.app.htmldir" location="${doclava.app.projectdocs.dir}/htmldir"/>
-	<property name="doclava.app.templates" location="${doclava.app.projectdocs.dir}/projectassets/tempaltes"/>
-	<property name="doclava.app.assets" location="${doclava.app.templates}/assets"/>
+	<property name="doclava.app.templates" location="${doclava.app.projectdocs.dir}/projectassets/templates"/>
+	
 	<property name="doclava.library.projectdocs.dir" location="${buildsys.dir}/library.projectdocs"/>
 	<property name="doclava.library.htmldir" location="${doclava.library.projectdocs.dir}/htmldir"/>
-	<property name="doclava.library.templates" location="${doclava.library.projectdocs.dir}/projectassets/tempaltes"/>
-	<property name="doclava.library.assets" location="${doclava.library.templates}/assets"/>
+	<property name="doclava.library.templates" location="${doclava.library.projectdocs.dir}/projectassets/templates"/>
+
 	<property name="doclava.test.projectdocs.dir" location="${buildsys.dir}/test.projectdocs"/>
 	<property name="doclava.test.htmldir" location="${doclava.test.projectdocs.dir}/htmldir"/>
 	<property name="doclava.test.templates" location="${doclava.test.projectdocs.dir}/projectassets/templates"/>
-	<property name="doclava.test.assets" location="${doclava.test.templates}/assets"/>
+	
 	<property name="doclava.testapp.projectdocs.dir" location="${buildsys.dir}/testapp.projectdocs"/>
 	<property name="doclava.testapp.htmldir" location="${doclava.testapp.projectdocs.dir}/htmldir"/>
 	<property name="doclava.testapp.templates" location="${doclava.testapp.projectdocs.dir}/projectassets/templates"/>
-	<property name="doclava.testapp.assets" location="${doclava.testapp.templates}/assets"/>
+	
 	<property name="doclava.guitar.projectdocs.dir" location="${buildsys.dir}/guitar.projectdocs"/>
 	<property name="doclava.guitar.htmldir" location="${doclava.guitar.projectdocs.dir}/htmldir"/>
 	<property name="doclava.guitar.templates" location="${doclava.guitar.projectdocs.dir}/projectassets/templates"/>
-	<property name="doclava.guitar.assets" location="${doclava.guitar.templates}/assets"/>
+	
 	<property name="doclava.javamonkey.projectdocs.dir" location="${buildsys.dir}/javamonkey.projectdocs"/>
 	<property name="doclava.javamonkey.htmldir" location="${doclava.javamonkey.projectdocs.dir}/htmldir"/>
 	<property name="doclava.javamonkey.templates" location="${doclava.javamonkey.projectdocs.dir}/projectassets/templates"/>
-	<property name="doclava.javamonkey.assets" location="${doclava.javamonkey.templates}/assets"/>
+	
 	<property name="doclava.monkeyrunner.projectdocs.dir" location="${buildsys.dir}/monkeyrunner.projectdocs"/>
 	<property name="doclava.monkeyrunner.htmldir" location="${doclava.monkeyrunner.projectdocs.dir}/htmldir"/>
 	<property name="doclava.monkeyrunner.templates" location="${doclava.monkeyrunner.projectdocs.dir}/projectassets/templates"/>
-	<property name="doclava.monkeyrunner.assets" location="${doclava.monkeyrunner.templates}/assets"/>
+	
 	<property name="doclava.cucumber.projectdocs.dir" location="${buildsys.dir}/cucumber.projectdocs"/>
 	<property name="doclava.cucumber.htmldir" location="${doclava.cucumber.projectdocs.dir}/htmldir"/>
 	<property name="doclava.cucumber.templates" location="${doclava.cucumber.projectdocs.dir}/projectassets/templates"/>
-	<property name="doclava.cucumber.assets" location="${doclava.cucumber.templates}/assets"/>
+	
+	
+	
+	<!-- projectdocs artifacts locations in bin subfolders
+	       need to setup tallysets and tallies to verfiy these 
+	       dirs in repsective doclava packs as othewise the dirs 
+	       will not get created by doclava 
+	       
+	       only androdi java project types shown to be brief
+	       app build type:
+	                    bin/projectdocs/
+	                              javaqa/
+	                                    androidlint/
+	                                    checkstyle/
+	                                    classycle/
+	                                    jdepend/
+	                                    javancss/
+	                                    pmd/
+	                                    uml/
+	                               ndk/
+	                                   doxygen/
+	                                   tests/
+	                              guitar/
+	                              javamonkey/
+	                              instrumented/
+	                                  junit/
+	                              webview/
+	                                jsdoc/
+	                                jslint/
+	                                junit/
+	                              monkeyrunner/
+	                              
+	             library build type:
+	                       bin/projectdocs/
+	                            javaqa/
+	                                 androidlint/
+	                                 checkstyle/
+	                                 classycle/
+	                                 javancss/
+	                                 jdepend/
+	                                 pmd
+	                                 uml/
+	                             instrumented/
+	                                 junit/
+	                             
+	             test build type:
+	                       bin/projectdocs/
+	                              javaqa/
+	                                    androidlint/
+	                                    checkstyle/
+	                                    classycle/
+	                                    javancss/
+	                                    jdepend/
+	                                    pmd/
+	                                    uml/
+	                              instrumented/
+	                                    junit/
+	                              
+	                 testapp build type:
+	                          bin/projectdocs/
+	                                  javaqa/
+	                                      androidlint/
+	                                      checkstyle/
+	                                      classycle/
+	                                      jdepend/
+	                                      javancsss/
+	                                      pmd/
+	                                      uml/
+	                                  instrumented/
+	                                      junit/
+	       -->
+	
+	<property name="bin.projectdocs.javaqa.dir" location="${projectdocs.dir}/javaqa"/>
+	<property name="bin.projectdocs.javaqa.androidlint.dir" location="${bin.projectdocs.javaqa.dir}/androidlint"/>
+	<property name="bin.projectdocs.javaqa.checkstyle.dir" location="${bin.projectdocs.javaqa.dir}/checkstyle"/>
+	<property name="bin.projectdocs.javaqa.classycle.dir" location="${bin.projectdocs.javaqa.dir}/classycle"/>
+	<property name="bin.projectdocs.javaqa.javancss.dir" location="${bin.projectdocs.javaqa.dir}/javancss"/>
+	<property name="bin.projectdocs.javaqa.jdepend.dir" location="${bin.projectdocs.javaqa.dir}/jdepend"/>
+	<property name="bin.projectdocs.javaqa.pmd.dir" location="${bin.projectdocs.javaqa.dir}/pmd"/>
+	<property name="bin.projectdocs.javaqa.uml.dir" location="${bin.projectdocs.javaqa.dir}/uml"/>
+	
+    <property name="bin.projectdocs.instrumented.dir" location="${projectdocs.dir}/instrumented"/>
+    <property name="bin.projectdocs.instrumented.emma.dir" location="${bin.projectdocs.instrumented.dir}/emma"/>
+	<property name="bin.projectdocs.instrumented.junit.dir" location="${bin.projectdocs.instrumented.dir}/junit"/>
+		
+    <property name="bin.projectdocs.ndk.dir" locatin="${projectdocs.dir}/ndk"/>
+	<property name="bin.projectdocs.ndk.docs.dir" location="${bin.projectdocs.ndk.dir}/docs"/>
+	<property name="bin.projectdocs.ndk.tests.dir" location="${bin.projectdocs.ndk.dir}/tests"/>
+		
+	<property name="bin.projectdocs.guitar.dir" location="${projectdocs.dir}/guitar"/>
+	
+	<property name="bin.projectdocs.javamonkey.dir" location="${projectdocs.dir}/javamonkey"/>
+	
+	<property name="bin.projectdocs.webview.dir" location="${projectdocs.dir}/webview" />
+	<property name="bin.projectdocs.webview.jsdoc.dir" location="${bin.projectdocs.webview.dir}/jsdoc"/>
+	<property name="bin.projectdocs.webview.jslint.dir" location="${bin.projectdocs.webview.dir}/jslint"/>
+	<property name="bin.projectdocs.webivew.junit.dir" location="${bin.projectdocs.webview.dir}/junit"/>
+	
+	
+	
+	
+	
+	<!-- will set junit.output file to root of instrumented test project-->
+	<property name="junit.ouput" value="_tmptestresults.txt" />
 	
 	
 	<!-- aptfactory and nativedriver are soft fails, if not there they do not stop 
 	<property name="ext-libs.ant.dir" location="${ext-libs.dir}/ant"/>
 	<property name="ext-libs.aptfactory.dir" location="${ext-libs.dir}/aptfactory"/>
 	<property name="ext-libs.appcompile.dir" location="${ext-libs.dir}/appcompile"/>
-	
 	<property name="ext-libs.testappcompile.dir" location="${ext-libs.dir}/testappcompile"/>
-	<property name="ext-libs.instrumentedtest.dir" location="${ext-libs.dir}/instrumented-test"/>
-	<property name="ext-libs.instrumentedruntime.dir" location="${ext-libs.dir}/instrumented-runtime"/>
+	<property name="ext-libs.testcompile.dir" location="${ext-libs.dir}/testcompile"/>
 	<property name="ext-libs.librarycompile.dir" location="${ext-libs.dir}/librarycompile"/>
 	<property name="ext-libs.doclet.dir" location="${ext-libs.dir}/doclet"/>
 	<property name="doclet.doclava.jar" location="${ext-libs.doclet.dir}/doclava.jar"/>
 	<!-- == only in a project type that is not using them.                    == -->
 	<!-- ================================================ -->
 	
+	<!-- We need to exclude nativdriver server-->
 	<path id="testappcompile.path">
 	             <fileset dir="${ext-libs.testappcompile.dir}" >
 		                   <include name="**.jar"/>
+	                      <exclude name="server-standalone.jar"/>
 	             	</fileset>
+	             
 		</path>
-	<path id="instrumentedtest.path">
-		               <fileset dir="${ext-libs.instrumentedtest.dir}">
+	<path id="testappcompile.nativedriverserver.path">
+	             	<fileset dir="${ext-libs.testappcompile.dir}" >
+	             	                          <include name="server-standalone.jar"/>
+	             	                    </fileset>
+	</path>
+	<path id="testcompile.path">
+		               <fileset dir="${ext-libs.testcompile.dir}">
 		                               <include name="**.jar"/>
 		              </fileset>
 		</path>
-	<path id="instrumentedruntime.path">
-	                   <fileset dir="${ext-libs.instrumentedruntime.dir}">
-		                              <include name="**.jar"/>
-		          </fileset>
-	</path>
+	
 	<path id="ant.path">
 		
 	          <fileset dir="${ext-libs.ant.dir}">
 	<path id="appcompile.path">
 		      <fileset dir="${ext-libs.appcompile.dir}">
 		                        <include name="**.jar"/>
+		                               	<exclude name="server-standalone.jar"/>
 		      	</fileset>
 	</path>
+		<path id="appcompile.nativedriverserver.path">
+	          	<fileset dir="${ext-libs.appcompile.dir}">
+	          	                                
+	          	                                        <include name="server-standalone.jar"/>
+	          	                </fileset>
+	      </path>
 	<path id="librarycompile.path">
 	             <fileset dir="${ext-libs.librarycompile.dir}">
 		                     <include name="**.jar"/>
 		                                         <include name="**.jar"/>
 		               	</fileset>
 	</path>
-	
+	<path id="jdepend.path">
+	                                <fileset dir="${out.dir}">
+	                                                <include name="**/*.class"/>
+	                                            </fileset>
+		<fileset dir="${ext-libs.ant.dir}" includes="jdepend-2.9.1.jar"/>
+		</path>
+	<path id="umlgraphsrc.path">
+	          <pathelement path="${source.dir}"/>
+	        <pathelement path="${gen.dir}"/>
+	    </path>
 	
 	<!-- android support jars, use trick to correct libs on path when executing
 	      from an IDE that synchronizes the classpath and libs folder-->
 		          </fileset>
 	</path>
 	
+	<!-- ant taskdefs-->
+	<taskdef resource="com/zutubi/android/ant/antlib.xml"
+	     classpathref="ant.path"/>
+	<taskdef name="jsdoctoolkit" classname="uk.co.darrenhurley.ant.tasks.JsDocToolkit" classpathref="ant.path"/>
+	<taskdef name="doxygen" classname="org.doxygen.tools.DoxygenTask"
+	classpathref="ant.path" />
+	<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="ant.path"/>
+	<taskdef resource="checkstyletask.properties"
+	         classpathref="ant.path"/>
+	<taskdef name="classycleReport" classname="classycle.ant.ReportTask" classpathref="ant.path"/>
+	<taskdef  name="yui-compressor" 
+	    classname="net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask" classpathref="ant.path"/>
+	<taskdef name="javancss"
+	            classname="javancss.JavancssAntTask"
+	            classpathref="ant.path"/>
+	<taskdef name="jslint"
+	           classname="com.googlecode.jslint4java.ant.JSLintTask"
+	           classpathref="ant.path" />
+		
+	<taskdef name="parsereport" classname="de.mobiletechcon.testconvertertask.ConverterTask"
+		        classpathref="ant.path" />
+	
 	<property name="android.checkstyle" location="${project.root.dir}/android.eclipse.checkstyle.xml"/>
 	<property name="android.pmd" location="${project.root.dir}/android.pmd.ruleset.xml"/>
 	<property name="sdkcontroller.apk" location="${sdk.dir}/tools/apps/SdkController/bin/SdkControllerApp.apk"/>
-	<!-- ============================================================== -->
+	<!-- ============================================================================================================== -->
 	<!-- == GWSAntDroid build system flags:                                                                          == -->
-	<!-- ==     isNativeDriver             would be set with launch of the app build and    == -->
-	<!-- ==                                             we would pass on that var setting to the              == -->
-	<!-- ==                                             test build in the case of using robotium or            == -->
-	<!-- ==                                             in the case of using cucumber to the                       == -->
-	<!-- ==                                             cucumber build script and other test scripts        == -->
-	<!-- ==                                             like javamonkey, monkeyrunner, etc.                        == -->
-	<!-- ==     isCPMobileWeb         would be set on the app build before the test     == -->
-	<!-- ==                                             is executed.                                                                       == -->
-	<!-- ==      isWebDriver               Set when testing app project type for mobile       == -->
-	<!-- ==                                             web.                                                                                     == -->
-	<!-- ==      isDynamicTestReporting       An upcoming feature involving                    == -->
-	<!-- ==                                                             nativedriver and communicating with       == -->
-	<!-- ==                                                             a java war web app to dynamically             == -->
-	<!-- ==                                                             collect test data.                                              == -->
-	<!-- ==      isOnBuildServer         To allow setting of specific build server stuff       == -->
-	<!-- ==      isCodeqaOnInstrumented      Some prefer no codeqa on   their              == -->
-	<!-- ==                                                               Instrumented testing.                                   == -->
-	<!-- =============================================================== -->
+	<!-- ==     isNativeDriver             would be set with launch of the app build and                             == -->
+	<!-- ==                                             we would pass on that var setting to the                     == -->
+	<!-- ==                                             test build in the case of using robotium or                  == -->
+	<!-- ==                                             in the case of using cucumber to the                         == -->
+	<!-- ==                                             cucumber build script and other test scripts                 == -->
+	<!-- ==                                             like javamonkey, monkeyrunner, etc.                          == -->
+	<!-- ==     isCPMobileWeb         would be set on the app build before the test                                  == -->
+	<!-- ==                                             is executed.                                                 == -->
+	<!-- ==      isWebDriver               Set when testing app project type for mobile                              == -->
+	<!-- ==                                             web.                                                         == -->
+	<!-- ==      isDynamicTestReporting       An upcoming feature involving                                          == -->
+	<!-- ==                                                             nativedriver and communicating with          == -->
+	<!-- ==                                                             a java war web app to dynamically            == -->
+	<!-- ==                                                             collect test data.                           == -->
+	<!-- ==      isOnBuildServer         To allow setting of specific build server stuff                             == -->
+	<!-- ==      isCodeqaOnInstrumented      Some prefer no codeqa on   their                                        == -->
+	<!-- ==                                                               Instrumented testing.                      == -->
+	<!-- ============================================================================================================== -->
 	<property name="isNativeDriver" value=""/>
 	<property name="isCPMobileWeb" value=""/>
 	<property name="isWebDriver" value=""/>
 	
 	
 	<!--************************************************** -->
-	<!-- ** Beginning of build.xml from sdk                            ** -->
+	<!-- ** Beginning of build.xml from sdk             ** -->
 	<!-- ************************************************* -->
 	<!--
 	            This build file is imported by the project build file. It contains
 	        <!-- compilation options -->
 	        <property name="java.encoding" value="UTF-8" />
 	        <!-- =============================================== -->
-	        <!-- == GWSAntDroid build system modification                         == -->
-	        <!--  == Most of the libs I use and code use 1.6                             == -->
-	        <!-- == thus the 1.6 setting                                                                  == -->
+	        <!-- == GWSAntDroid build system modification     == -->
+	        <!-- == Most of the libs I use and code use 1.6   == -->
+	        <!-- == thus the 1.6 setting and I use he 1.6 apt == -->
+	        <!-- == processing for annotations.               == -->
 	        <!-- ================================================ -->
 	        <property name="java.target" value="1.6" />
 	        <property name="java.source" value="1.6" />
 	        <property name="verbose" value="false" />
 
 	     <!-- ******************************************************* -->
-	        <!-- ********************* Custom Tasks ******************** -->
-	        <!-- ******************************************************* -->
+	     <!-- ********************* Custom Tasks ******************** -->
+	     <!-- ******************************************************* -->
 
 	        <!-- jar file from where the tasks are loaded -->
 	        <path id="android.antlibs">
 	                        verbose="${verbose}" />
 	            </sequential>
 	        </macrodef>
-
+          <!--  GWSAntDroid Modification
+                   we need the raw output to collect to 
+                   reconstruct the junit report rather than 
+                   mess around with a separate junit runner
+                   -->
 	        <macrodef name="run-tests-helper">
 	            <attribute name="emma.enabled" default="false" />
 	            <element name="extra-instrument-args" optional="yes" />
 	            <sequential>
 	                <echo level="info">Running tests ...</echo>
-	                <exec executable="${adb}" failonerror="true">
+	                <exec executable="${adb}" failonerror="true" output="${junit.output}">
 	                    <arg line="${adb.device.arg}" />
 	                    <arg value="shell" />
 	                    <arg value="am" />
 	                    <arg value="instrument" />
 	                    <arg value="-w" />
 	                    <arg value="-e" />
+	                	<arg value="-r"/>
 	                    <arg value="coverage" />
 	                    <arg value="@{emma.enabled}" />
 	                    <extra-instrument-args />
 	            </sequential>
 	        </macrodef>
 	
-	<!-- ============================================ -->
-	<!-- =========== Our GWSAntDroid Fixture Checks ===== -->
-	<!--  The general flow of this is:                                                       -->
-	<!--                  fixturechecks                                                                -->
-	<!--                  tallysets                                                                          -->
-	<!--                  tally to call the tallysets                                            -->
-	<!--                  rulemacrodefs                                                              -->
-	<!--                 ruleset                                                                             -->
-	<!--    With other things mixed in like criteria                              -->
-	<!-- flowing from the micro level to the                                      -->
-	<!-- gwsantdroid.project.type global level                                 -->
-	<!-- ============================================ -->
+	<!-- ================================================== -->
+	<!-- =========== Our GWSAntDroid Fixture Checks      == -->
+	<!--  The general flow of this is:                   == -->
+	<!--                  fixturechecks                  == -->
+	<!--                  tallysets                      == -->
+	<!--                  tally to call the tallysets    == -->
+	<!--                  rulemacrodefs                  == -->
+	<!--                 ruleset                         == -->
+	<!--    With other things mixed in like criteria     == -->
+	<!-- flowing from the micro level to the             == -->
+	<!-- gwsantdroid.project.type global level           == -->
+	<!-- ================================================== -->
 	
 	<oja:fixturecheck isref="graphviz.exec" messageid="local.properties.graphviz.exec.missing"/>
 	<oja:fixturecheck isref="source.dir" messageid="ant.properties.source.dir.missing"/>
 	<oja:fixturecheck isref="projectrepo.url" messageid="ant.properties.projectrepo.url.missing"/>
 	<oja:fixturecheck isref="gwsantdroid.project.type" message="ant.properties.gwsantdroid.project.type.missing"/>
 	
-	<!-- ================================================ -->
-	<!-- ============= Our GWSAntDroid TallySets ============ -->
-	<!-- == Our GWSAntDroid build system should be flexible         == -->
-	<!-- == enough that we can change to new frameworks and      == -->
-	<!-- == dev processes so we need to use Antxtras                        == -->
-	<!-- == tallyset/tally features to verify that certain                      == -->
-	<!-- == frameworks are laded without a hard ruleset to             == -->
-	<!-- == stop build if they do not exist. We also need to set      == -->
-	<!-- == tallsets to mark true if a build project type flag              == -->
-	<!-- == is set to project type                                                                == -->
-	<!-- ================================================ -->
+	<!-- ============================================================ -->
+	<!-- ============= Our GWSAntDroid TallySets ==================== -->
+	<!-- == Our GWSAntDroid build system should be flexible        == -->
+	<!-- == enough that we can change to new frameworks and        == -->
+	<!-- == dev processes so we need to use Antxtras               == -->
+	<!-- == tallyset/tally features to verify that certain         == -->
+	<!-- == frameworks are laded without a hard ruleset to         == -->
+	<!-- == stop build if they do not exist. We also need to set   == -->
+	<!-- == tallsets to mark true if a build project type flag     == -->
+	<!-- == is set to project type                                 == -->
+	<!-- ============================================================ -->
 	<!-- tallysets for ant.path -->
 	<oja:tallyset name="tally.ant.common.libs">
 		<oja:isclasss classname="classycle.Analyser" classpatheref="ant.path"/>
 		<oja:isclass classname="com.puppycrawl.tools.checkstyle.Checker" classpathref="ant.path"/>
 		<oja:isclass classname="com.zutubi.android.ant.LintTask" classpathref="ant.path"/>
 		<oja:isclass classname="ccl.Main" classpathref="ant.path"/>
-		 <oja:isclass classname="org.javacc.version" classpathref="ant.path"/>
-		 <oja:isclass classname="javancss.Javancss" classpathref="ant.path"/>
-		   <oja:isclass classname="com.sun.java.help.impl.Tag" classpathref="ant.path"/>
-		  <oja:isclass classname="net.jernigan.javancss2ant.JavaNCSS" classpathref="ant.path"/>
+		<oja:isclass classname="org.javacc.version" classpathref="ant.path"/>
+		<oja:isclass classname="javancss.Javancss" classpathref="ant.path"/>
+		<oja:isclass classname="com.sun.java.help.impl.Tag" classpathref="ant.path"/>
+		<oja:isclass classname="net.jernigan.javancss2ant.JavaNCSS" classpathref="ant.path"/>
 		<oja:isclass classname="net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask" classpathref="ant.path"/>
-		        <oja:isclass classname="jargs.gnu.CmdLineParser" classpathref="ant.path"/>
-		        <oja:isclass classname="org.mozilla.javascript.Arguments" classpathref="ant.path"/>
-		        <oja:isclass classname="com.yahoo.platform.yui.compressor.Bootstrap" classpathref="ant.path"/>
+		<oja:isclass classname="jargs.gnu.CmdLineParser" classpathref="ant.path"/>
+		<oja:isclass classname="org.mozilla.javascript.Arguments" classpathref="ant.path"/>
+		<oja:isclass classname="com.yahoo.platform.yui.compressor.Bootstrap" classpathref="ant.path"/>
 		<oja:isclass classname="org.objectweb.asm.Attribute" classpathref="ant.path"/>
-		        <oja:isclass classname="org.jaxen.Context" classpathref="ant.path"/>
-		        <oja:isclass classname="junit.framework.Assert" classpathref="ant.path"/>
-		        <oja:isclass classname="net.sourceforge.pmd.PMD" classpathref="ant.path"/>
+		<oja:isclass classname="org.jaxen.Context" classpathref="ant.path"/>
+		<oja:isclass classname="junit.framework.Assert" classpathref="ant.path"/>
+		<oja:isclass classname="net.sourceforge.pmd.PMD" classpathref="ant.path"/>
 		<oja:isclass classname="uk.co.darrenhurley.ant.tasks.JsDocToolkit" classpathref="ant.path"/>
 		<oja:isclass classname="org.doxygen.tools.DoxygenTask" classpathref="ant.path"/>
+		<oja:isclass classname="de.mobiletechcon.testconvertertask.ConverterTask" classpathref="ant.path"/>
 	</oja:tallyset>
 	
 	<!-- tallysets for appcompile,
 		         <oja:isdirectory filepath="${buildsys.dir}/jsdoc-toolkit"/>
 		         <oja:isdirectoyr filepath="${buildsys.dir}/monkeyrunner.projectdocs"/>
 		         <oja:isdirectory filepath="${buildsys.dir}/test.projectdocs"/>
-		         <oja:isdierctoiry filepath="${buildsys.dir}/testapp.projectdocs"/>
+		         <oja:isdirectoiry filepath="${buildsys.dir}/testapp.projectdocs"/>
 	</oja:tallyset>
-	
+	<!-- Eclipse ADT plugin puts android support v4 in libs and synchs with project
+	       classpath so we need to account for that case.-->
+	<oja:tallyset name="tally.android.support.v4.present.in.libs">
+	            <oja:isfile filepath="${project.root.dir}/libs/android-support-v4.jar"/>
+		</oja:tallyset>
 	
 	
 	<!-- ================================================ -->
 	               <oja:tallyset refid="tally.instrumentedtest.nativedriver.libs"/>
 	</oja:tally>
 	
-
+ <oja:tally trueproperty="android.support.v4.in.libs.folder" all="yes">
+	                 <oja:tallyset refid="tally.android.support.v4.present.in.libs"/>
+	</oja:tally>
 	    
 	<!-- ******************************************************* -->
 	    <!-- ******************** Build Targets ******************** -->
 
 	        </do-only-if-manifest-hasCode>
 	    </target>
+	
+	<target name="-ndk">
+	        <if>
+	        	            <equals arg1="nativec.build.env.present" arg2="true"/>
+	        	<then>
+	        	          <!-- do ndk build using zutubi-android-ant task -->
+	        		<ndkbuild dir="${ndk.dir}"/>
+	        		<!-- run doxygen doc task, stick it in temp artifact folder and 
+	        		        move to projedocs after those are generated. -->
+	        		<doxygen doxygenPath="${doxygen.exec}" >
+	        		
+	        			<property name="INPUT" value="${project.root.dir}/jni}" />
+	        			<property name="RECURSIVE" value="yes" />
+	        			<property name="GENERATE_LATEX" value="false" />
+	        			<property name="PROJECT_NAME" value="${ant.project.name}" />
+	        			<property name="OUTPUT" value="${projectdocs.doxygen.bin.dir}"/>
+	        		</doxygen>
+	        		</then>
+	        	</if>
+	</target>
+	
+	<!-- execute -doclava before -ndk in the -compile depend sequence-->
+	<target name="-doclava">
+		<if>
+		                            <equals arg1="${gwsantdroid.project.type}"  arg2="app"/>
+			<then>