1
0
mirror of https://github.com/arduino/Arduino.git synced 2024-11-28 09:24:14 +01:00
Arduino/app/build.xml
Cristian Maglie 9f8d19244a Removed log4j
Fix #11727
2021-12-20 12:53:48 +01:00

179 lines
7.8 KiB
XML

<?xml version="1.0"?>
<project name="Arduino PDE" xmlns:if="ant:if" xmlns:unless="ant:unless" default="build">
<path id="class.path">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
<pathelement path="${env.JAVA_HOME}/lib/tools.jar"/>
<pathelement path="../arduino-core/arduino-core.jar"/>
</path>
<path id="class.path.test">
<path refid="class.path"/>
<pathelement location="bin/"/>
<fileset dir="test-lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="clean" description="Clean the build directories">
<delete dir="bin" />
<delete dir="test-bin" />
<delete file="pde.jar" />
</target>
<target name="compile" description="Compile sources">
<condition property="core-built">
<available file="../arduino-core/arduino-core.jar" />
</condition>
<fail unless="core-built" message="Please build the Arduino-core library first and make sure it sits in ../arduino-core/arduino-core.jar" />
<mkdir dir="bin" />
<!-- ant seems to nuke ${java.home} for some reason, pointing at the JRE
subfolder instead of the actual JDK found at JAVA_HOME.
To avoid this, we grab the actual JAVA_HOME environment variable
and use that to specify the location of tools.jar. -->
<!-- if someone is better with ant please help clean this up -->
<property environment="env" />
<property name="java_home" value="${env.JAVA_HOME}" />
<condition property="linux"><os family="unix" /></condition>
<fail if="linux" unless="java_home"
message="The JAVA_HOME variable must be set to the location of a full JDK. For instance, on Ubuntu Linux, this might be /usr/lib/jvm/java-6-sun." />
<condition property="windows"><os family="windows" /></condition>
<fail if="windows" unless="java_home"
message="The JAVA_HOME variable must be set to the location of a full JDK. For instance, on Windows, this might be c:\jdk1.6.0_18." />
<condition property="work.dir" value="../build/macosx/work/Arduino.app/Contents/Java/">
<os family="mac"/>
</condition>
<condition property="java.additional.library.path" value=".">
<os family="mac"/>
</condition>
<condition property="work.dir" value="../build/windows/work/">
<os family="windows"/>
</condition>
<condition property="java.additional.library.path" value=".">
<os family="windows"/>
</condition>
<condition property="work.dir" value="../build/linux/work/">
<os family="unix"/>
</condition>
<condition property="java.additional.library.path" value="lib">
<os family="unix"/>
</condition>
<!--
<dirname property="blah" file="${java.home}" />
<echo message="here! ${java.home}/lib/tools.jar or there: ${blah}" />
<echo message="override ${env.JAVA_HOME}/lib/tools.jar" />
<fail />
-->
<javac source="1.8" target="1.8"
srcdir="src"
destdir="bin"
encoding="UTF-8"
includeAntRuntime="false"
debug="true"
classpathref="class.path" />
</target>
<target name="test" depends="compile" description="Runs the test">
<mkdir dir="test-bin"/>
<javac source="1.8" target="1.8"
srcdir="test"
destdir="test-bin"
encoding="UTF-8"
includeAntRuntime="false"
debug="true"
classpathref="class.path.test">
</javac>
<copy todir="test-bin" overwrite="true" verbose="true">
<fileset dir="test" includes="**/*.zip" />
<fileset dir="test" includes="**/*.txt" />
<fileset dir="test" includes="**/*.properties" />
<fileset dir="test" includes="**/*.ino" />
<fileset dir="test" includes="**/*.json*" />
<fileset dir="test" includes="**/*.key" />
<fileset dir="test" includes="**/*.hex" />
<fileset dir="test" includes="**/*.pac" />
</copy>
<!-- XML and TXT reports will be written here -->
<property name="test.reportdir" value="test-bin/results"/>
<!-- Summary HTML report will be written here -->
<property name="test.htmldir" value="test-bin/results/html"/>
<!-- Remove the reportdir, so the HTML report only includes tests from this run -->
<delete dir="${test.reportdir}" />
<mkdir dir="${test.reportdir}"/>
<mkdir dir="${test.htmldir}"/>
<!-- Sanity check: when single-test-methods is set, but single-test-class is not, raise an error -->
<fail message="Need single-test-class if single-test-methods is set" if="single-test-methods" unless="single-test-class"/>
<junit printsummary="yes" dir="${work.dir}" fork="true" showoutput="no" failureproperty="test.failed">
<jvmarg value="-Djava.library.path=${java.additional.library.path}"/>
<jvmarg value="-DWORK_DIR=."/>
<jvmarg value="-ea"/>
<classpath>
<pathelement location="bin"/>
<pathelement location="test-bin"/>
<pathelement location="${work.dir}/lib/jna-4.2.2.jar"/>
<pathelement location="${work.dir}/lib/jna-platform-4.2.2.jar"/>
<path refid="class.path.test"/>
</classpath>
<!-- Write XML files (for report-generation) and TXT files (for manual review) for every test class -->
<formatter type="plain" />
<formatter type="xml"/>
<!-- Print full details to stdout when running a single test -->
<formatter type="plain" usefile="false" if="single-test-class"/>
<!-- When running all tests, print details for failing tests and a summary for each test class (printsummary=yes above) -->
<formatter type="brief" usefile="false" unless="single-test-class"/>
<!-- When both single-test-class and single-test-methods are specified, pass both to unit -->
<test name="${single-test-class}" methods="${single-test-methods}" todir="${test.reportdir}" if="single-test-methods"/>
<!-- When just single-test-class is specified, omit methods to run the entire class -->
<test name="${single-test-class}" todir="${test.reportdir}" if="single-test-class" unless="single-test-methods"/>
<!-- When neither are specified, run *all* testcases -->
<batchtest fork="yes" todir="${test.reportdir}" unless="single-test-class">
<fileset dir="test">
<include name="**/*Test.java"/>
<exclude name="**/Abstract*.java"/>
</fileset>
</batchtest>
</junit>
<!-- Convert generated XML reports to browsable HTML -->
<junitreport todir="${test.reportdir}">
<fileset dir="${test.reportdir}">
<include name="TEST-*.xml" />
</fileset>
<!-- Create a browsable frame-based HTML -->
<report format="frames" todir="${test.htmldir}" />
<!-- Also create a single-page version, to use as CI test result -->
<report format="noframes" todir="${test.htmldir}" />
</junitreport>
<!-- Make these paths relative to user.dir, which is the current directory when invoking ant (so the resulting paths are relative to the environment of the user. -->
<property name="test.htmldir.display" location="${test.htmldir}" relative="true" basedir="${user.dir}"/>
<property name="test.reportdir.display" location="${test.reportdir}" relative="true" basedir="${user.dir}"/>
<echo unless:set="running-from-github-action" message="Detailed test results can be found in ${test.reportdir.display}"/>
<echo unless:set="running-from-github-action" message="A browsable HTML summary is generated in ${test.htmldir.display}/index.html"/>
<echo if:set="running-from-github-action" message="Detailed test results can be downloaded as an asset from this github action. Easiest to view is the single-file version in junit-noframes.html. Alternatively, the multi-file version can be viewed from index.html and includes full stdout/stderr output of tests."/>
<fail if="test.failed"/>
</target>
<target name="build" depends="compile" description="Build PDE">
<jar basedir="bin" destfile="pde.jar" />
</target>
</project>