1
0
mirror of https://github.com/arduino/Arduino.git synced 2024-11-29 10:24:12 +01:00
Arduino/build/build.xml
Pieter12345 afbf75651f Remove default excludes for Ant directory tasks
Besides that these default excludes get ignored when using the Cygwin terminal on Windows, they cause Ant move tasks to not remove the 'moved' directory if it contains a `.gitignore`  or other default exclude file.
2019-03-29 02:55:48 +01:00

1294 lines
56 KiB
XML

<?xml version="1.0"?>
<project name="Arduino" default="build">
<!--echo message="os.name = ${os.name}" /-->
<!--echo message="os.arch = ${os.arch}" /-->
<!--echo message="os.version = ${os.version}" /-->
<tstamp>
<format property="BUILD_DATE" pattern="yyyy/MM/dd hh:mm"/>
</tstamp>
<!-- Sets properties for macosx/windows/linux depending on current system -->
<condition property="platform" value="macosx-old">
<and>
<os family="mac" />
<matches string="${os.version}" pattern="^10.[56]." />
</and>
</condition>
<condition property="macosx-old"><equals arg1="${platform}" arg2="macosx-old" /></condition>
<fail if="macosx-old" message="MacOSX older than 10.7 are not supported"/>
<condition property="platform" value="macosx"><os family="mac" /></condition>
<condition property="platform" value="windows"><os family="windows" /></condition>
<condition property="platform" value="linux32"><os family="unix" arch="i386" /></condition>
<condition property="platform" value="linux64"><os family="unix" arch="amd64" /></condition>
<condition property="platform" value="linuxarm"><os family="unix" arch="arm" /></condition>
<condition property="platform" value="linuxaarch64"><os family="unix" arch="aarch64" /></condition>
<condition property="windows_host" value="true"><os family="windows" /></condition>
<condition property="macosx"><equals arg1="${platform}" arg2="macosx" /></condition>
<condition property="windows"><equals arg1="${platform}" arg2="windows" /></condition>
<condition property="linux32"><equals arg1="${platform}" arg2="linux32" /></condition>
<condition property="linux64"><equals arg1="${platform}" arg2="linux64" /></condition>
<condition property="linux"><equals arg1="${platform}" arg2="linux32" /></condition>
<condition property="linux"><equals arg1="${platform}" arg2="linux64" /></condition>
<condition property="linux"><equals arg1="${platform}" arg2="linuxarm" /></condition>
<condition property="linux"><equals arg1="${platform}" arg2="linuxaarch64" /></condition>
<condition property="staging_folder" value="macosx"><equals arg1="${platform}" arg2="macosx" /></condition>
<condition property="staging_folder" value="windows"><equals arg1="${platform}" arg2="windows" /></condition>
<condition property="staging_folder" value="linux"><equals arg1="${platform}" arg2="linux32" /></condition>
<condition property="staging_folder" value="linux"><equals arg1="${platform}" arg2="linux64" /></condition>
<condition property="staging_folder" value="linux"><equals arg1="${platform}" arg2="linuxarm" /></condition>
<condition property="staging_folder" value="linux"><equals arg1="${platform}" arg2="linuxaarch64" /></condition>
<condition property="staging_hardware_folder" value="Arduino.app/Contents/Java/hardware"><equals arg1="${platform}" arg2="macosx" /></condition>
<condition property="staging_hardware_folder" value="hardware"><equals arg1="${platform}" arg2="windows" /></condition>
<condition property="staging_hardware_folder" value="hardware"><equals arg1="${platform}" arg2="linux32" /></condition>
<condition property="staging_hardware_folder" value="hardware"><equals arg1="${platform}" arg2="linux64" /></condition>
<condition property="staging_hardware_folder" value="hardware"><equals arg1="${platform}" arg2="linuxarm" /></condition>
<condition property="staging_hardware_folder" value="hardware"><equals arg1="${platform}" arg2="linuxaarch64" /></condition>
<condition property="arch-bits" value="32">
<equals arg1="${platform}" arg2="linux32"/>
</condition>
<condition property="arch-bits" value="32">
<equals arg1="${platform}" arg2="linuxarm"/>
</condition>
<condition property="arch-bits" value="64">
<equals arg1="${platform}" arg2="linux64"/>
</condition>
<condition property="arch-bits" value="64">
<equals arg1="${platform}" arg2="linuxaarch64"/>
</condition>
<condition property="launch4j-download-unpack-target-name" value="launch4j-windows"><os family="windows" /></condition>
<property name="launch4j-download-unpack-target-name" value="launch4j-linux"/>
<property name="MACOSX_BUNDLED_JVM" value="${java.home}/../"/>
<property name="WINDOWS_BUNDLED_JVM" value="${java.home}"/>
<property name="LINUX32_BUNDLED_JVM" value="none"/>
<property name="LINUX64_BUNDLED_JVM" value="none"/>
<property name="LINUXARM_BUNDLED_JVM" value="none"/>
<property name="LINUXAARCH64_BUNDLED_JVM" value="none"/>
<condition property="linux-bundle-jvm-task" value="noop">
<and>
<equals arg1="${LINUX32_BUNDLED_JVM}" arg2="none"/>
<equals arg1="${LINUX64_BUNDLED_JVM}" arg2="none"/>
<equals arg1="${LINUXARM_BUNDLED_JVM}" arg2="none"/>
<equals arg1="${LINUXAARCH64_BUNDLED_JVM}" arg2="none"/>
</and>
</condition>
<condition property="linux-bundle-jvm-task" value="bundle">
<or>
<not>
<equals arg1="${LINUX32_BUNDLED_JVM}" arg2="none"/>
</not>
<not>
<equals arg1="${LINUX64_BUNDLED_JVM}" arg2="none"/>
</not>
<not>
<equals arg1="${LINUXARM_BUNDLED_JVM}" arg2="none"/>
</not>
<not>
<equals arg1="${LINUXAARCH64_BUNDLED_JVM}" arg2="none"/>
</not>
</or>
</condition>
<property name="portable" value="false" />
<property name="ARDUINO-BUILDER-VERSION" value="1.4.4" />
<property name="LIBLISTSERIAL-VERSION" value="1.4.2" />
<property name="AVRGCC-VERSION" value="5.4.0-atmel3.6.1-arduino2" />
<property name="AVRDUDE-VERSION" value="6.3.0-arduino14" />
<property name="AVRCORE-VERSION" value="1.6.23" />
<property name="arduinoOTA-VERSION" value="1.2.1" />
<!-- Libraries required for running arduino -->
<fileset dir=".." id="runtime.jars">
<include name="arduino-core/arduino-core.jar" />
<include name="app/pde.jar" />
<include name="app/lib/*.jar" />
<include name="arduino-core/lib/*.jar" />
</fileset>
<!-- Remove all default excludes for directory tasks (see https://ant.apache.org/manual/dirtasks.html#defaultexcludes) -->
<defaultexcludes remove="**/.git"/>
<defaultexcludes remove="**/.git/**"/>
<defaultexcludes remove="**/.gitattributes"/>
<defaultexcludes remove="**/.gitignore"/>
<defaultexcludes remove="**/.gitmodules"/>
<defaultexcludes remove="**/.hg"/>
<defaultexcludes remove="**/.hg/**"/>
<defaultexcludes remove="**/.hgignore"/>
<defaultexcludes remove="**/.hgsub"/>
<defaultexcludes remove="**/.hgsubstate"/>
<defaultexcludes remove="**/.hgtags"/>
<defaultexcludes remove="**/.bzr"/>
<defaultexcludes remove="**/.bzr/**"/>
<defaultexcludes remove="**/.bzrignore"/>
<target name="build" description="Build Arduino.">
<antcall target="${platform}-build" />
<antcall target="generate-hourly-build-txt"/>
</target>
<target name="run" description="Packs and runs Arduino">
<antcall target="${platform}-run" />
</target>
<target name="start" description="Starts Arduino">
<antcall target="${platform}-start" />
</target>
<target name="dist" depends="revision-check" description="Build Arduino for distribution.">
<input message="Enter version number:" addproperty="version" defaultvalue="${revision}"/>
<condition property="full-version" value="${version}-${platform}">
<not>
<equals arg1="${portable}" arg2="true"/>
</not>
</condition>
<condition property="full-version" value="${version}-${platform}-portable">
<equals arg1="${portable}" arg2="true"/>
</condition>
<antcall target="${platform}-dist">
<param name="full-version" value="${full-version}"/>
</antcall>
</target>
<!-- "§$§$&, ant doesn't have a built-in help target :( -->
<target name="help" description="Show project help">
<java classname="org.apache.tools.ant.Main">
<arg value="-p" />
</java>
</target>
<target name="test" depends="subprojects-test"/>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Subprojects: Core, App, Libraries -->
<!-- - - - - - - - - - - - - - - - - - -->
<target name="subprojects-clean">
<subant buildpath="../arduino-core" target="clean"/>
<subant buildpath="../app" target="clean"/>
</target>
<target name="subprojects-build">
<subant buildpath="../arduino-core" target="build"/>
<subant buildpath="../app" target="build"/>
</target>
<target name="subprojects-test">
<subant buildpath="../app" target="test"/>
</target>
<!-- - - - - - - - - -->
<!-- Basic Assembly -->
<!-- - - - - - - - - -->
<target name="assemble">
<fail unless="target.path" message="Do not call assemble from the command line." />
<!-- copy shared tools folder -->
<copy todir="${target.path}/tools">
<fileset dir="shared/tools" />
</copy>
<copy file="shared/icons/48x48/apps/arduino.png" tofile="${target.path}/lib/arduino_small.png"/>
<antcall target="assemble-hardware" />
<!-- copy shared examples folder -->
<copy todir="${target.path}/examples">
<fileset dir="shared/examples" />
</copy>
<mkdir dir="${target.path}/reference"/>
<antcall target="assemble-docs" />
<!-- Write the revision file! -->
<echo file="${target.path}/lib/version.txt" message="${version}" />
<antcall target="assemble-libraries" />
<!-- Add WiFi101 updater tool -->
<antcall target="unzip">
<param name="archive_file" value="shared/WiFi101-Updater-ArduinoIDE-Plugin-0.10.7.zip" />
<param name="archive_url" value="https://github.com/arduino-libraries/WiFi101-FirmwareUpdater-Plugin/releases/download/v0.10.7/WiFi101-Updater-ArduinoIDE-Plugin-0.10.7.zip" />
<param name="final_folder" value="${target.path}/tools/WiFi101" />
<param name="dest_folder" value="${target.path}/tools/" />
</antcall>
</target>
<target name="assemble-docs" unless="no_docs">
<!-- Unzip documentation -->
<antcall target="unzip">
<param name="archive_file" value="shared/reference-1.6.6-3.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/reference-1.6.6-3.zip" />
<param name="final_folder" value="${target.path}/reference/www.arduino.cc" />
<param name="dest_folder" value="${target.path}/reference/" />
</antcall>
<antcall target="unzip">
<param name="archive_file" value="shared/Galileo_help_files-1.6.2.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/Galileo_help_files-1.6.2.zip" />
<param name="final_folder" value="${target.path}/reference/Galileo_help_files" />
<param name="dest_folder" value="${target.path}/reference/" />
</antcall>
<antcall target="unzip">
<param name="archive_file" value="shared/Edison_help_files-1.6.2.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/Edison_help_files-1.6.2.zip" />
<param name="final_folder" value="${target.path}/reference/Edison_help_files" />
<param name="dest_folder" value="${target.path}/reference/" />
</antcall>
<!-- Fix wrong permissions from zip file root folder -->
<chmod perm="755" dir="${target.path}/reference/Galileo_help_files" />
<chmod perm="755" dir="${target.path}/reference/Edison_help_files" />
</target>
<!-- copy library folder -->
<target name="assemble-libraries" unless="light_bundle">
<copy todir="${target.path}/libraries">
<fileset dir="../libraries"/>
</copy>
<download-library name="Ethernet" version="2.0.0"/>
<download-library name="GSM" version="1.0.6"/>
<download-library name="Stepper" version="1.1.3"/>
<download-library name="TFT" version="1.0.6"/>
<download-library name="WiFi" version="1.2.7"/>
<download-library githubuser="firmata" name="arduino" version="2.5.8" foldername="Firmata"/>
<download-library name="Bridge" version="1.7.0"/>
<download-library name="Robot_Control" version="1.0.4"/>
<download-library name="Robot_Motor" version="1.0.3"/>
<download-library name="RobotIRremote" version="2.0.0"/>
<download-library name="SpacebrewYun" version="1.0.1"/>
<download-library name="Temboo" version="1.2.1"/>
<download-library name="Esplora" version="1.0.4"/>
<download-library name="Mouse" version="1.0.1"/>
<download-library name="Keyboard" version="1.0.2"/>
<download-library name="SD" version="1.2.3"/>
<download-library name="Servo" version="1.1.3"/>
<download-library name="LiquidCrystal" version="1.0.7"/>
<download-library githubuser="Adafruit" name="Adafruit_CircuitPlayground" version="1.8.1" foldername="Adafruit_Circuit_Playground"/>
</target>
<macrodef name="download-library">
<attribute name="name"/>
<attribute name="foldername" default="@{name}"/>
<attribute name="version"/>
<attribute name="tag" default="@{version}"/>
<attribute name="githubuser" default="arduino-libraries"/>
<sequential>
<antcall target="unzip">
<param name="archive_file" value="@{foldername}-@{version}.zip"/>
<param name="archive_url" value="https://github.com/@{githubuser}/@{name}/archive/@{tag}.zip"/>
<param name="final_folder" value="${target.path}/libraries/@{name}-@{version}"/>
<param name="dest_folder" value="${target.path}/libraries"/>
</antcall>
<move file="${target.path}/libraries/@{name}-@{version}" tofile="${target.path}/libraries/@{foldername}"/>
</sequential>
</macrodef>
<!-- copy hardware folder -->
<target name="assemble-hardware" unless="light_bundle">
<mkdir dir="${target.path}/hardware/arduino" />
<antcall target="untar-bz2">
<param name="archive_file" value="avr-${AVRCORE-VERSION}.tar.bz2"/>
<param name="archive_url" value="https://downloads.arduino.cc/cores/avr-${AVRCORE-VERSION}.tar.bz2"/>
<param name="final_folder" value="${target.path}/hardware/arduino/avr"/>
<param name="dest_folder" value="${target.path}/hardware/arduino"/>
</antcall>
<copy file="../hardware/package_index_bundled.json" todir="${target.path}/hardware/" />
</target>
<!-- - - - - - - - - -->
<!-- Revision check -->
<!-- - - - - - - - - -->
<target name="revision-check">
<!-- figure out the latest AVR core version number in package_index.json -->
<loadfile srcfile="../hardware/package_index_bundled.json" property="revision.avr.index">
<filterchain>
<tokenfilter>
<linetokenizer />
<containsregex pattern="archiveFileName.*&quot;avr-.......?tar.bz2"/>
<replaceregex pattern=".*avr-(.*).tar.bz2.*" flags="g" replace="\1"/>
</tokenfilter>
<striplinebreaks/>
<tailfilter lines="1"/>
</filterchain>
</loadfile>
<echo message="AVR Arduino core version in build.xml is: ${AVRCORE-VERSION}" />
<echo message=" latest in package_index_bundled.json is: ${revision.avr.index}" />
<condition property="revision.avr.ok">
<or>
<!-- fail build if -Drevision.check=enforce is set -->
<not><equals arg1="${revision.check}" arg2="enforce"/></not>
<equals arg1="${revision.avr.index}" arg2="${AVRCORE-VERSION}"/>
</or>
</condition>
<fail unless="revision.avr.ok">
Mismatching versions for bundled AVR core and package_index_bundled.json.
Please check your package_index_bundled.json.
</fail>
<!-- figure out the IDE version number -->
<loadfile srcfile="shared/revisions.txt" property="revision">
<filterchain>
<ignoreblank />
<headfilter lines="1"/>
<tokenfilter>
<linetokenizer includeDelims="false" />
<!-- grab the thing from the first line that's 4 digits -->
<containsregex pattern="ARDUINO ([^ ]*)" />
<replaceregex pattern="ARDUINO ([^ ]*).*" replace="\1" />
</tokenfilter>
<tokenfilter>
<stringtokenizer suppressdelims="true" />
</tokenfilter>
</filterchain>
</loadfile>
<!-- figure out the IDE version number in base.java -->
<loadfile srcfile="../arduino-core/src/processing/app/BaseNoGui.java"
property="revision.base">
<filterchain>
<tokenfilter>
<linetokenizer />
<containsregex pattern="String VERSION_NAME = "/>
<replaceregex pattern=".*&quot;(.*)&quot;.*" flags="g" replace="\1"/>
</tokenfilter>
</filterchain>
</loadfile>
<echo message="Latest revision detected in shared/revision.txt is: ${revision}" />
<echo message=" Revision in BaseNoGui.java is: ${revision.base}" />
</target>
<!-- - - - - - - - -->
<!-- Mac OS X -->
<!-- - - - - - - - -->
<target name="macosx-clean" depends="subprojects-clean" description="Clean Mac OS X build">
<delete dir="macosx/work" />
<delete dir="macosx/working_dir" />
<delete dir="macosx/working.dmg" />
<delete file="macosx/arduino-*.dmg" />
<delete>
<fileset dir="macosx" includes="arduino-*macosx*.zip"/>
</delete>
</target>
<target name="macosx-checkos" unless="macosx">
<echo>
=======================================================
Arduino for Mac OS X can only be built on Mac OS X.
Bye.
=======================================================
</echo>
<fail message="wrong platform (${os.name})" />
</target>
<target name="macosx-build" if="macosx" depends="revision-check, macosx-checkos, subprojects-build" description="Build Mac OS X version">
<fail unless="MACOSX_BUNDLED_JVM" message="MacOSX requires MACOSX_BUNDLED_JVM property set"/>
<mkdir dir="${staging_folder}/work" />
<antcall target="unzip">
<param name="archive_file" value="${staging_folder}/appbundler-1.0ea-arduino4.jar.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/appbundler-1.0ea-arduino4.jar.zip" />
<param name="final_folder" value="${staging_folder}/appbundler-1.0ea-arduino4" />
<param name="dest_folder" value="${staging_folder}/appbundler-1.0ea-arduino4" />
</antcall>
<taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpath="${staging_folder}/appbundler-1.0ea-arduino4/appbundler-1.0ea-arduino4.jar"/>
<bundleapp
jvmRequired="1.8"
jrepreferred="true"
outputdirectory="${staging_folder}/work"
name="Arduino"
displayname="Arduino"
executablename="Arduino"
identifier="cc.arduino.Arduino"
shortversion="${version}"
version="${revision}"
signature="Pde1"
icon="macosx/processing.icns"
mainclassname="processing.app.Base"
copyright="Arduino LLC"
applicationCategory="public.app-category.education"
minimumsystemversion="10.8"
highresolutioncapable="true">
<runtime dir="${MACOSX_BUNDLED_JVM}"/>
<arch name="x86_64"/>
<arch name="i386"/>
<classpath refid="runtime.jars"/>
<option value="-Dapple.awt.application.name=Arduino"/>
<option value="-Dcom.apple.macos.use-file-dialog-packages=true"/>
<option value="-Dcom.apple.smallTabs=true"/>
<option value="-DAPP_DIR=$APP_ROOT/Contents/Java"/>
<option value="-Djava.ext.dirs=$JVM_RUNTIME/Contents/Home/lib/ext/:$JVM_RUNTIME/Contents/Home/jre/lib/ext/"/>
<!--
<option value="-Dapple.awt.showGrowBox=false"/>
<option value="-Dapple.awt.Antialiasing=false"/>
<option value="-Dapple.awt.TextAntialiasing=true"/>
<option value="-Dcom.apple.hwaccel=true"/>
<option value="-Dapple.awt.graphics.UseQuartz=true"/>
-->
<!--<option value="-Dcom.apple.macos.useScreenMenuBar=true"/>-->
<!-- Workaround since the icon parameter for bundleapp doesn't work -->
<option value="-Xdock:name=Arduino"/>
<option value="-Dcom.apple.mrj.application.apple.menu.about.name=Arduino"/>
<option value="-Dfile.encoding=UTF-8"/>
<option value="-Xms128M"/>
<option value="-Xmx512M"/>
<option value="-splash:$APP_ROOT/Contents/Java/lib/splash.png"/>
<bundledocument extensions="ino,c,cpp,h"
icon="macosx/pde.icns"
name="Arduino Source File"
role="Editor" ispackage="false">
</bundledocument>
</bundleapp>
<mkdir dir="${staging_folder}/work/${staging_hardware_folder}" />
<copy todir="${staging_folder}/work/${staging_hardware_folder}/../">
<fileset dir="shared" includes="lib/**" />
<fileset file="shared/revisions.txt" />
</copy>
<mkdir dir="${staging_folder}/work" />
<mkdir dir="${staging_folder}/work/${staging_hardware_folder}" />
<antcall target="macosx-build-avr-toolchain" />
<antcall target="assemble">
<param name="target.path" value="${staging_folder}/work/${staging_hardware_folder}/.." />
</antcall>
<antcall target="unzip">
<param name="archive_file" value="./libastylej-2.05.1-4.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/libastylej-2.05.1-4.zip" />
<param name="final_folder" value="${staging_folder}/libastylej-2.05.1" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="macosx/libastylej-2.05.1/libastylej.jnilib" todir="macosx/work/${staging_hardware_folder}/../lib/" />
<chmod perm="755" file="macosx/work/${staging_hardware_folder}/../lib/libastylej.jnilib" />
<copy file="macosx/libastylej-2.05.1/libastylej.jnilib" tofile="macosx/work/${staging_hardware_folder}/../lib/libastylej.dylib" />
<chmod perm="755" file="macosx/work/${staging_hardware_folder}/../lib/libastylej.dylib" />
<antcall target="unzip">
<param name="archive_file" value="./liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/liblistSerials/liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="final_folder" value="${staging_folder}/liblistSerials-${LIBLISTSERIAL-VERSION}" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="macosx/liblistSerials-${LIBLISTSERIAL-VERSION}/osx/liblistSerialsj.dylib" todir="macosx/work/${staging_hardware_folder}/../lib/" />
<chmod perm="755" file="macosx/work/${staging_hardware_folder}/../lib/liblistSerialsj.dylib" />
<antcall target="build-arduino-builder" />
<antcall target="portable-${portable}">
<param name="parentdir" value="macosx/work/${staging_hardware_folder}/.." />
</antcall>
</target>
<!-- Unzip AVR tools -->
<target name="macosx-build-avr-toolchain" unless="light_bundle">
<antcall target="avr-toolchain-bundle">
<param name="unpack_target" value="untar"/>
<param name="gcc_archive_file" value="avr-gcc-${AVRGCC-VERSION}-i386-apple-darwin11.tar.bz2"/>
<param name="gcc_version" value="${AVRGCC-VERSION}"/>
<param name="avrdude_archive_file" value="avrdude-${AVRDUDE-VERSION}-i386-apple-darwin11.tar.bz2"/>
<param name="avrdude_version" value="${AVRDUDE-VERSION}"/>
<param name="arduinoOTA_archive_file" value="arduinoOTA-${arduinoOTA-VERSION}-darwin_amd64.tar.bz2"/>
<param name="arduinoOTA_version" value="${arduinoOTA-VERSION}"/>
</antcall>
<chmod perm="+x">
<fileset dir="${staging_folder}/work/${staging_hardware_folder}/tools" includes="**/bin/*"/>
<fileset dir="${staging_folder}/work/${staging_hardware_folder}/tools" includes="**/libexec/gcc/avr/4.8.1/*"/>
</chmod>
</target>
<target name="macosx-run" depends="build,start"/>
<target name="macosx-start">
<exec executable="macosx/work/Arduino.app/Contents/MacOS/Arduino" spawn="false" failonerror="true"/>
</target>
<!-- - - - - - - - - - - - - - - - -->
<!-- Sign application for MacOSX. -->
<!-- - - - - - - - - - - - - - - - -->
<target name="macosx-signed-dist" if="macosx" depends="macosx-singed-dist-check, dist"
description="Create a downloadable and signed .zip for the Mac OS X version">
<fail unless="version" message="Please set the property 'version' to correctly sign distribution file" />
<!-- Remove everything from working folder -->
<delete dir="macosx/work/Arduino.app" />
<!-- Unzip unsigned app into working dir -->
<unzip src="../arduino-${version}-${platform}.zip" dest="macosx/work"/>
<!-- Unlock keychain file -->
<exec executable="security" dir="macosx/work" failonerror="true">
<arg line="unlock-keychain -p &quot;${macosx-sign-keychain-pass}&quot; &quot;${macosx-sign-keychain}&quot;" />
</exec>
<!-- Sign app -->
<exec executable="codesign" dir="macosx/work" failonerror="true">
<arg line="--keychain &quot;${macosx-sign-keychain}&quot; --force -s &quot;${macosx-sign-id}&quot; --deep -v Arduino.app/" />
</exec>
<!-- Check for successful signing -->
<exec executable="codesign" dir="macosx/work" failonerror="true">
<arg line="-vvvv Arduino.app/" />
</exec>
<delete file="macosx/arduino-${version}-${platform}.zip" />
<!-- Create signed zip file -->
<exec executable="zip" dir="macosx/work" failonerror="true">
<arg line="-q -r ../arduino-${full-version}-signed.zip ." />
</exec>
<echo>
=======================================================
Arduino for Mac OS X built and signed.
macosx/arduino-${full-version}-signed.zip
=======================================================
</echo>
</target>
<target name="macosx-singed-dist-check">
<fail unless="macosx-sign-keychain" message="Please set the property 'macosx-sign-keychain' to the correct keychain file" />
<fail unless="macosx-sign-keychain-pass" message="Please set the property 'macosx-sign-keychain-pass' with the password to unlock the keychain" />
<fail unless="macosx-sign-id" message="Please set the property 'macosx-sign-id' to the correct cert identifier" />
</target>
<!-- - - - - - - - - - - - - - - - - - - -->
<!-- Build distribution file for MacOSX. -->
<!-- - - - - - - - - - - - - - - - - - - -->
<target name="macosx-dist" if="macosx" depends="build" description="Create a downloadable .zip for the Mac OS X version">
<exec executable="zip" dir="macosx/work" failonerror="true">
<arg line="-q -r ../arduino-${full-version}.zip ." />
</exec>
<echo>
=======================================================
Arduino for Mac OS X was built. Grab the image from
macosx/arduino-${full-version}.zip
=======================================================
</echo>
</target>
<!-- - - - - - - - -->
<!-- Linux -->
<!-- - - - - - - - -->
<target name="linux-clean" depends="subprojects-clean" description="Clean linux version">
<delete dir="linux/work" />
<delete>
<fileset dir="linux" includes="arduino-*linux*.tar.xz"/>
</delete>
<delete>
<fileset dir="linux" includes="arduino-*linux*.tar.xz"/>
</delete>
</target>
<target name="linux-checkos" unless="linux">
<echo>
=======================================================
Arduino for Linux can only be built on unix systems.
Bye.
=======================================================
</echo>
<fail message="wrong platform (${os.name})" />
</target>
<target name="linux-build" depends="revision-check, linux-checkos, subprojects-build" description="Build linux version">
<mkdir dir="linux/work" />
<mkdir dir="linux/work/${staging_hardware_folder}" />
<copy todir="linux/work">
<fileset dir="shared" includes="lib/**" />
<fileset file="shared/revisions.txt" />
</copy>
<copy todir="linux/work">
<fileset dir="linux/dist" includes="lib/**" />
</copy>
<copy todir="linux/work/lib">
<fileset dir="shared" includes="icons/**/*.png" />
</copy>
<copy todir="linux/work/lib" flatten="true">
<fileset refid="runtime.jars" />
</copy>
<antcall target="assemble">
<param name="target.path" value="linux/work" />
</antcall>
<copy tofile="linux/work/lib/arduino-arduinoide.xml" file="linux/dist/mime.xml" />
<copy todir="linux/work/lib" file="linux/dist/desktop.template" />
<copy todir="linux/work/lib" file="linux/dist/appdata.xml" />
<copy todir="linux/work" file="linux/dist/arduino" />
<copy todir="linux/work" file="linux/dist/install.sh" />
<copy todir="linux/work" file="linux/dist/arduino-linux-setup.sh" />
<copy todir="linux/work" file="linux/dist/uninstall.sh" />
<chmod perm="ugo+x">
<fileset dir="linux/work" includes="arduino" />
<fileset dir="linux/work" includes="**/*.sh" />
<fileset dir="linux/work/lib" includes="**/*desktop*" />
</chmod>
</target>
<target name="linux-libastyle-x86" depends="linux-build" description="Download libastyle.so for x86/x64 arch">
<antcall target="unzip">
<param name="archive_file" value="./libastylej-2.05.1-4.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/libastylej-2.05.1-4.zip" />
<param name="final_folder" value="${staging_folder}/libastylej-2.05.1" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="linux/libastylej-2.05.1/libastylej${arch-bits}.so" tofile="linux/work/lib/libastylej.so" />
<chmod perm="755" file="linux/work/lib/libastylej.so" />
<antcall target="portable-${portable}">
<param name="parentdir" value="linux/work" />
</antcall>
<antcall target="unzip">
<param name="archive_file" value="./liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/liblistSerials/liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="final_folder" value="${staging_folder}/liblistSerials-${LIBLISTSERIAL-VERSION}" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="linux/liblistSerials-${LIBLISTSERIAL-VERSION}/linux${arch-bits}/liblistSerialsj.so" todir="linux/work/lib/" />
<chmod perm="755" file="linux/work/lib/liblistSerialsj.so" />
</target>
<target name="linux-libastyle-arm" depends="linux-build" description="Download libastyle.so for ARM">
<antcall target="unzip">
<param name="archive_file" value="./libastylej-2.05.1-4.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/libastylej-2.05.1-4.zip" />
<param name="final_folder" value="${staging_folder}/libastylej-2.05.1" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="linux/libastylej-2.05.1/libastylej_arm.so" tofile="linux/work/lib/libastylej.so" />
<chmod perm="755" file="linux/work/lib/libastylej.so" />
<antcall target="portable-${portable}">
<param name="parentdir" value="linux/work" />
</antcall>
<antcall target="unzip">
<param name="archive_file" value="./liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/liblistSerials/liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="final_folder" value="${staging_folder}/liblistSerials-${LIBLISTSERIAL-VERSION}" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="linux/liblistSerials-${LIBLISTSERIAL-VERSION}/arm/liblistSerialsj.so" todir="linux/work/lib/" />
<chmod perm="755" file="linux/work/lib/liblistSerialsj.so" />
</target>
<target name="linuxarm-build" depends="linux-libastyle-arm" description="Build linux (32-bit) version">
<antcall target="linux-jvm-${linux-bundle-jvm-task}">
<param name="JVM" value="${LINUXARM_BUNDLED_JVM}"/>
</antcall>
<antcall target="build-arduino-builder" />
<antcall target="avr-toolchain-bundle">
<param name="unpack_target" value="untar"/>
<param name="gcc_archive_file" value="avr-gcc-${AVRGCC-VERSION}-armhf-pc-linux-gnu.tar.bz2"/>
<param name="gcc_version" value="${AVRGCC-VERSION}"/>
<param name="avrdude_archive_file" value="avrdude-${AVRDUDE-VERSION}-armhf-pc-linux-gnu.tar.bz2"/>
<param name="avrdude_version" value="${AVRDUDE-VERSION}"/>
<param name="arduinoOTA_archive_file" value="arduinoOTA-${arduinoOTA-VERSION}-linux_arm.tar.bz2"/>
<param name="arduinoOTA_version" value="${arduinoOTA-VERSION}"/>
</antcall>
</target>
<target name="linux-libastyle-aarch64" depends="linux-build" description="Download libastyle.so for AArch64">
<antcall target="unzip">
<param name="archive_file" value="./libastylej-2.05.1-4.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/libastylej-2.05.1-4.zip" />
<param name="final_folder" value="${staging_folder}/libastylej-2.05.1" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="linux/libastylej-2.05.1/libastylej_aarch64.so" tofile="linux/work/lib/libastylej.so" />
<chmod perm="755" file="linux/work/lib/libastylej.so" />
<antcall target="portable-${portable}">
<param name="parentdir" value="linux/work" />
</antcall>
<antcall target="unzip">
<param name="archive_file" value="./liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/liblistSerials/liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="final_folder" value="${staging_folder}/liblistSerials-${LIBLISTSERIAL-VERSION}" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="linux/liblistSerials-${LIBLISTSERIAL-VERSION}/aarch64/liblistSerialsj.so" todir="linux/work/lib/" />
<chmod perm="755" file="linux/work/lib/liblistSerialsj.so" />
</target>
<target name="linuxaarch64-build" depends="linux-libastyle-aarch64" description="Build Linux (AArch64) version">
<antcall target="linux-jvm-${linux-bundle-jvm-task}">
<param name="JVM" value="${LINUXAARCH64_BUNDLED_JVM}"/>
</antcall>
<antcall target="build-arduino-builder" />
<antcall target="avr-toolchain-bundle">
<param name="unpack_target" value="untar"/>
<param name="gcc_archive_file" value="avr-gcc-${AVRGCC-VERSION}-aarch64-pc-linux-gnu.tar.bz2"/>
<param name="gcc_version" value="${AVRGCC-VERSION}"/>
<param name="avrdude_archive_file" value="avrdude-${AVRDUDE-VERSION}-aarch64-pc-linux-gnu.tar.bz2"/>
<param name="avrdude_version" value="${AVRDUDE-VERSION}"/>
<param name="arduinoOTA_archive_file" value="arduinoOTA-${arduinoOTA-VERSION}-linux_aarch64.tar.bz2"/>
<param name="arduinoOTA_version" value="${arduinoOTA-VERSION}"/>
</antcall>
</target>
<target name="linux32-build" depends="linux-libastyle-x86" description="Build linux (32-bit) version">
<antcall target="linux-jvm-${linux-bundle-jvm-task}">
<param name="JVM" value="${LINUX32_BUNDLED_JVM}"/>
</antcall>
<antcall target="build-arduino-builder" />
<antcall target="avr-toolchain-bundle">
<param name="unpack_target" value="untar"/>
<param name="gcc_archive_file" value="avr-gcc-${AVRGCC-VERSION}-i686-pc-linux-gnu.tar.bz2"/>
<param name="gcc_version" value="${AVRGCC-VERSION}"/>
<param name="avrdude_archive_file" value="avrdude-${AVRDUDE-VERSION}-i686-pc-linux-gnu.tar.bz2"/>
<param name="avrdude_version" value="${AVRDUDE-VERSION}"/>
<param name="arduinoOTA_archive_file" value="arduinoOTA-${arduinoOTA-VERSION}-linux_386.tar.bz2"/>
<param name="arduinoOTA_version" value="${arduinoOTA-VERSION}"/>
</antcall>
</target>
<target name="linux64-build" depends="linux-libastyle-x86" description="Build linux (64-bit) version">
<antcall target="linux-jvm-${linux-bundle-jvm-task}">
<param name="JVM" value="${LINUX64_BUNDLED_JVM}"/>
</antcall>
<antcall target="build-arduino-builder" />
<antcall target="avr-toolchain-bundle">
<param name="unpack_target" value="untar"/>
<param name="gcc_archive_file" value="avr-gcc-${AVRGCC-VERSION}-x86_64-pc-linux-gnu.tar.bz2"/>
<param name="gcc_version" value="${AVRGCC-VERSION}"/>
<param name="avrdude_archive_file" value="avrdude-${AVRDUDE-VERSION}-x86_64-pc-linux-gnu.tar.bz2"/>
<param name="avrdude_version" value="${AVRDUDE-VERSION}"/>
<param name="arduinoOTA_archive_file" value="arduinoOTA-${arduinoOTA-VERSION}-linux_amd64.tar.bz2"/>
<param name="arduinoOTA_version" value="${arduinoOTA-VERSION}"/>
</antcall>
</target>
<target name="linux-jvm-noop"/>
<target name="linux-jvm-bundle">
<mkdir dir="${staging_folder}/work/java" />
<exec executable="rsync">
<arg value="-a"/>
<arg value="${JVM}"/>
<arg value="${staging_folder}/work/java/"/>
</exec>
</target>
<target name="linux32-run" depends="build,start"/>
<target name="linux64-run" depends="build,start"/>
<target name="linuxarm-run" depends="build,start"/>
<target name="linuxaarch64-run" depends="build,start"/>
<target name="linux32-start">
<exec executable="./linux/work/arduino" spawn="false" failonerror="true"/>
</target>
<target name="linux64-start">
<exec executable="./linux/work/arduino" spawn="false" failonerror="true"/>
</target>
<target name="linuxarm-start">
<exec executable="./linux/work/arduino" spawn="false" failonerror="true"/>
</target>
<target name="linuxaarch64-start">
<exec executable="./linux/work/arduino" spawn="false" failonerror="true"/>
</target>
<target name="build-arduino-builder" unless="no_arduino_builder">
<delete dir="${staging_folder}/arduino-builder-${platform}" includeemptydirs="true"/>
<mkdir dir="${staging_folder}/arduino-builder-${platform}"/>
<antcall target="untar">
<param name="archive_file" value="./arduino-builder-${platform}-${ARDUINO-BUILDER-VERSION}.tar.bz2" />
<param name="archive_url" value="https://downloads.arduino.cc/tools/arduino-builder-${platform}-${ARDUINO-BUILDER-VERSION}.tar.bz2" />
<param name="final_folder" value="${staging_folder}/arduino-builder-${platform}/arduino-builder" />
<param name="dest_folder" value="${staging_folder}/arduino-builder-${platform}" />
</antcall>
<copy file="${staging_folder}/arduino-builder-${platform}/arduino-builder" tofile="${staging_folder}/work/${staging_hardware_folder}/../arduino-builder" />
<chmod perm="755" file="${staging_folder}/work/${staging_hardware_folder}/../arduino-builder" />
<move file="${staging_folder}/arduino-builder-${platform}/tools" tofile="${staging_folder}/work/${staging_hardware_folder}/../tools-builder"/>
<copy todir="${staging_folder}/work/${staging_hardware_folder}" overwrite="true">
<fileset dir="${staging_folder}/arduino-builder-${platform}/hardware" includes="*.txt"/>
</copy>
<delete dir="${staging_folder}/arduino-builder-${platform}" includeemptydirs="true"/>
</target>
<!-- Set '${dist_file}_available' property if toolchain dist_file is downloaded -->
<!-- Set '${dist_file}_installed' property if toolchain is installed in working directory -->
<!-- hardware/tools/${dist_check_file} is checked for existence -->
<target name="untar-unzip-check">
<available file="${archive_file}" property="${archive_file}_available" />
<available file="${final_folder}" property="${archive_file}_installed" />
</target>
<!-- Retrieve tool -->
<target name="untar-unzip-download" depends="untar-unzip-check" unless="${archive_file}_available">
<antcall target="untar-unzip-download-web" />
<antcall target="untar-unzip-download-local" />
</target>
<target name="untar-unzip-download-web" unless="local_sources">
<get src="${archive_url}" dest="${archive_file}" verbose="true" ignoreerrors="true" />
</target>
<target name="untar-unzip-download-local" if="local_sources">
<basename file="${archive_file}" property="basename" />
<echo>Skipping download of ${archive_url}, using makepkg downloaded ${basename}</echo>
<exec executable="ln" failonerror="true">
<arg value="-s" />
<arg value="${basedir}/../../${basename}" />
<arg value="${archive_file}" />
</exec>
</target>
<target name="untar-unzip-checksum" depends="untar-unzip-download">
<echo>Testing checksum of "${archive_file}"</echo>
<checksum file="${archive_file}" algorithm="sha" fileext=".sha" verifyproperty="checksum.matches"/>
<condition property="checksum.matches.fail">
<equals arg1="${checksum.matches}" arg2="false"/>
</condition>
<fail if="checksum.matches.fail">Checksum failed.
File ${archive_file} failed checksum.
Please remove "${archive_file}" to download it again.
</fail>
</target>
<!-- Ensure that the tool is downloaded and test checksums, if everything's ok unzip it on the tools folder -->
<target name="untar" depends="untar-unzip-checksum" unless="${archive_file}_installed">
<echo>Untarring ${archive_file} into folder ${dest_folder}</echo>
<untar src="${archive_file}" dest="${dest_folder}"/>
</target>
<target name="untar-bz2" depends="untar-unzip-checksum" unless="${archive_file}_installed">
<echo>Untarring ${archive_file} into folder ${dest_folder}</echo>
<untar src="${archive_file}" dest="${dest_folder}" compression="bzip2"/>
</target>
<target name="unzip" depends="untar-unzip-checksum" unless="${archive_file}_installed">
<echo>Unzipping ${archive_file} into folder ${dest_folder}</echo>
<mkdir dir="${dest_folder}" />
<unzip src="${archive_file}" dest="${dest_folder}"/>
</target>
<!-- Ensure that the executable flag is set in all enviroments/OS -->
<target name="make-file-executable" depends="make-file-executable-windows">
<chmod perm="755" file="${file}" />
</target>
<target name="make-file-executable-windows" if="windows_host">
<exec executable="icacls" failonerror="false">
<arg value="${file}"/>
<arg value="/grant"/>
<arg value="Everyone:(RX)"/>
</exec>
</target>
<target name="linux-dist" depends="build"
description="Build .tar.xz of linux version">
<move file="linux/work" tofile="linux/arduino-${version}" />
<exec executable="tar" dir="linux" failonerror="true">
<arg value="--lzma"/>
<arg value="-c"/>
<arg value="-f"/>
<arg value="arduino-${full-version}.tar.xz"/>
<arg value="arduino-${version}"/>
</exec>
<move file="linux/arduino-${version}" tofile="linux/work" />
<echo>
=======================================================
Arduino for Linux was built. Grab the archive from
linux/arduino-${full-version}.tar.xz
=======================================================
</echo>
</target>
<target name="linux32-dist" depends="linux-dist"
description="Build .tar.xz of linux x86_32 version" />
<target name="linux64-dist" depends="linux-dist"
description="Build .tar.xz of linux x86_64 version" />
<target name="linuxarm-dist" depends="linux-dist"
description="Build .tar.xz of linux armhf version" />
<target name="linuxaarch64-dist" depends="linux-dist"
description="Build .tar.xz of linux aarch64 version" />
<!-- - - - - - - - -->
<!-- Windows -->
<!-- - - - - - - - -->
<target name="windows-clean" depends="subprojects-clean"
description="Clean windows version">
<delete dir="windows/work" />
<delete>
<fileset dir="windows" includes="arduino-*windows*.zip"/>
</delete>
</target>
<target name="windows-checkos" unless="windows">
<echo>
=======================================================
Arduino for Windows can only be built on windows.
Bye.
=======================================================
</echo>
<fail message="wrong platform (${os.name})" />
</target>
<target name="download-launch4j-windows">
<antcall target="unzip">
<param name="archive_file" value="windows/launch4j-3.9-win32.zip"/>
<param name="archive_url" value="https://downloads.arduino.cc/tools/launch4j-3.9-win32.zip"/>
<param name="final_folder" value="windows/launcher/launch4j"/>
<param name="dest_folder" value="windows/launcher/"/>
</antcall>
</target>
<target name="download-launch4j-linux">
<antcall target="untar">
<param name="archive_file" value="windows/launch4j-3.9-linux.tgz"/>
<param name="archive_url" value="https://downloads.arduino.cc/tools/launch4j-3.9-linux.tgz"/>
<param name="final_folder" value="windows/launcher/launch4j"/>
<param name="dest_folder" value="windows/launcher/"/>
</antcall>
</target>
<target name="windows-build"
depends="revision-check, windows-checkos, subprojects-build"
description="Build windows version">
<mkdir dir="windows/work" />
<mkdir dir="windows/work/${staging_hardware_folder}" />
<copy todir="windows/work/lib">
<fileset dir="shared" includes="icons/**/*.png"/>
</copy>
<!-- assemble the pde -->
<mkdir dir="windows/work/lib" />
<copy todir="windows/work/lib" flatten="true">
<fileset refid="runtime.jars" />
</copy>
<copy todir="windows/work">
<fileset dir="shared" includes="lib/**" />
<fileset file="shared/revisions.txt" />
</copy>
<fixcrlf file="windows/work/revisions.txt" eol="dos"/>
<fixcrlf file="windows/work/lib/formatter.conf" eol="dos"/>
<copy todir="windows/work">
<fileset dir="windows/dist" includes="*.dll" />
</copy>
<copy todir="windows/work">
<fileset dir="windows/dist" includes="drivers/**" />
</copy>
<antcall target="windows-build-avr-toolchain" />
<antcall target="unzip">
<param name="archive_file" value="./libastylej-2.05.1-4.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/libastylej-2.05.1-4.zip" />
<param name="final_folder" value="${staging_folder}/libastylej-2.05.1" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="windows/libastylej-2.05.1/AStylej.dll" todir="windows/work/lib" />
<copy file="windows/msvcp100.dll" todir="windows/work" />
<copy file="windows/msvcr100.dll" todir="windows/work" />
<antcall target="unzip">
<param name="archive_file" value="./liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/liblistSerials/liblistSerials-${LIBLISTSERIAL-VERSION}.zip" />
<param name="final_folder" value="${staging_folder}/liblistSerials-${LIBLISTSERIAL-VERSION}" />
<param name="dest_folder" value="${staging_folder}" />
</antcall>
<copy file="windows/liblistSerials-${LIBLISTSERIAL-VERSION}/windows/listSerialsj.dll" todir="windows/work/lib/" />
<antcall target="make-file-executable">
<param name="file" value="windows/work/lib/listSerialsj.dll" />
</antcall>
<delete dir="${staging_folder}/arduino-builder-windows" includeemptydirs="true"/>
<mkdir dir="${staging_folder}/arduino-builder-windows"/>
<antcall target="unzip">
<param name="archive_file" value="./arduino-builder-windows-${ARDUINO-BUILDER-VERSION}.zip" />
<param name="archive_url" value="https://downloads.arduino.cc/tools/arduino-builder-windows-${ARDUINO-BUILDER-VERSION}.zip" />
<param name="final_folder" value="${staging_folder}/arduino-builder-windows/arduino-builder.exe" />
<param name="dest_folder" value="${staging_folder}/arduino-builder-windows" />
</antcall>
<copy file="${staging_folder}/arduino-builder-windows/arduino-builder.exe" tofile="windows/work/arduino-builder.exe" />
<antcall target="make-file-executable">
<param name="file" value="windows/work/arduino-builder.exe" />
</antcall>
<move file="${staging_folder}/arduino-builder-windows/tools" tofile="windows/work/tools-builder"/>
<antcall target="make-file-executable">
<param name="file" value="windows/work/tools-builder/ctags/5.8-arduino11/ctags.exe" />
</antcall>
<copy todir="windows/work/hardware" overwrite="true">
<fileset dir="${staging_folder}/arduino-builder-windows/hardware" includes="*.txt"/>
</copy>
<delete dir="${staging_folder}/arduino-builder-windows" includeemptydirs="true"/>
<unzip src="../arduino-core/lib/jna-4.2.2.jar" dest="windows/work/lib">
<patternset>
<include name="com/sun/jna/win32-x86/jnidispatch.dll"/>
</patternset>
<mapper type="flatten"/>
</unzip>
<move file="windows/work/lib/jnidispatch.dll" tofile="windows/work/lib/jnidispatch-4.2.2-win32-x86.dll" />
<antcall target="make-file-executable">
<param name="file" value="windows/work/lib/jnidispatch-4.2.2-win32-x86.dll" />
</antcall>
<unzip src="../arduino-core/lib/jssc-2.8.0-arduino3.jar" dest="windows/work/lib">
<patternset>
<include name="libs/windows/jSSC-2.8_x86.dll"/>
</patternset>
<mapper type="flatten"/>
</unzip>
<move file="windows/work/lib/jSSC-2.8_x86.dll" tofile="windows/work/lib/jSSC-2.8_x86.dll" />
<antcall target="make-file-executable">
<param name="file" value="windows/work/lib/jSSC-2.8_x86.dll" />
</antcall>
<unzip src="../arduino-core/lib/jssc-2.8.0-arduino3.jar" dest="windows/work/lib">
<patternset>
<include name="libs/windows/jSSC-2.8_x86_64.dll"/>
</patternset>
<mapper type="flatten"/>
</unzip>
<move file="windows/work/lib/jSSC-2.8_x86_64.dll" tofile="windows/work/lib/jSSC-2.8_x86_64.dll" />
<antcall target="make-file-executable">
<param name="file" value="windows/work/lib/jSSC-2.8_x86_64.dll" />
</antcall>
<antcall target="assemble">
<param name="target.path" value="windows/work" />
</antcall>
<delete dir="windows/launcher/launch4j"/>
<antcall target="download-${launch4j-download-unpack-target-name}" />
<property name="launch4j.dir" value="windows/launcher/launch4j/" />
<taskdef name="launch4j"
classname="net.sf.launch4j.ant.Launch4jTask"
classpath="${launch4j.dir}/launch4j.jar; ${launch4j.dir}/lib/xstream.jar" />
<copy todir="windows/work">
<fileset dir="windows/launcher"
includes="application.ico, config.xml, config_debug.xml, arduino.l4j.ini, wrapper-manifest.xml"/>
</copy>
<launch4j configFile="windows/work/config.xml" fileVersion="${revision}.0" txtFileVersion="${revision}" productVersion="${revision}.0" txtProductVersion="${revision}"/>
<launch4j configFile="windows/work/config_debug.xml" fileVersion="${revision}.0" txtFileVersion="${revision}" productVersion="${revision}.0" txtProductVersion="${revision}"/>
<delete dir="windows/work" includes="application.ico, config.xml, config_debug.xml" />
<copy file="windows/work/arduino.l4j.ini" tofile="windows/work/arduino_debug.l4j.ini" />
<!-- cygwin requires html, dll, and exe to have the +x flag -->
<chmod perm="755">
<fileset dir="windows/work" includes="**/*.html, **/*.dll, **/*.exe" />
</chmod>
<!-- For JVM within JDK, release file is in parent directory -->
<property file="${WINDOWS_BUNDLED_JVM}/release" prefix="windows"/>
<property file="${WINDOWS_BUNDLED_JVM}/../release" prefix="windows"/>
<fail message="It looks like ${WINDOWS_BUNDLED_JVM} does not contain a Windows JVM">
<condition>
<not>
<equals arg1="${windows.OS_NAME}" arg2="&quot;Windows&quot;"/>
</not>
</condition>
</fail>
<copy todir="${staging_folder}/work/java" includeemptydirs="true" preservelastmodified="true" overwrite="true" failonerror="true">
<fileset dir="${WINDOWS_BUNDLED_JVM}" includes="*/**"/>
</copy>
<antcall target="portable-${portable}">
<param name="parentdir" value="${staging_folder}/work" />
</antcall>
</target>
<target name="windows-build-avr-toolchain">
<antcall target="avr-toolchain-bundle">
<param name="unpack_target" value="unzip"/>
<param name="gcc_archive_file" value="avr-gcc-${AVRGCC-VERSION}-i686-w64-mingw32.zip"/>
<param name="gcc_version" value="${AVRGCC-VERSION}"/>
<param name="avrdude_archive_file" value="avrdude-${AVRDUDE-VERSION}-i686-w64-mingw32.zip"/>
<param name="avrdude_version" value="${AVRDUDE-VERSION}"/>
<param name="arduinoOTA_archive_file" value="arduinoOTA-${arduinoOTA-VERSION}-windows_386.zip"/>
<param name="arduinoOTA_version" value="${arduinoOTA-VERSION}"/>
</antcall>
</target>
<target name="windows-run" depends="build,start"/>
<target name="windows-start">
<exec executable="windows/work/arduino.exe" dir="windows/work" spawn="false" failonerror="true"/>
</target>
<target name="windows-dist" depends="build" description="Create .zip files of windows version">
<zip destfile="windows/arduino-${full-version}.zip" level="9">
<zipfileset dir="windows/work" prefix="arduino-${version}"/>
</zip>
<echo>
=======================================================
Arduino for Windows was built. Grab the archive from
windows/arduino-${full-version}.zip
=======================================================
</echo>
</target>
<!-- - - - - - - - -->
<!-- Source -->
<!-- - - - - - - - -->
<target name="source-dist" depends="revision-check"
description="Build .tar.gz of source code">
<input message="Enter version number:"
addproperty="version"
defaultvalue="${revision}" />
<tar compression="gzip" destfile="arduino-${version}-src.tar.gz">
<tarfileset dir="../"
prefix="arduino-${version}"
excludes="**/*.tgz,
**/*.bz2,
**/build/macosx/,
**/build/windows/,
**/work/,
**/.git/,
**/*.class"
/>
</tar>
<echo>
=======================================================
Arduino source distribution was built. Grab the archive from
arduino-${version}-src.tar.gz
=======================================================
</echo>
</target>
<!-- - - - - - - - -->
<!-- Run It! -->
<!-- - - - - - - - -->
<target name="clean" description="Perform a spring cleaning"
depends="linux-clean, windows-clean, macosx-clean, subprojects-clean">
</target>
<target name="avr-toolchain-bundle" unless="light_bundle">
<!-- Unzip AVR tools -->
<mkdir dir="${staging_folder}/work/${staging_hardware_folder}/tmp/gcc"/>
<antcall target="${unpack_target}">
<param name="archive_file" value="${staging_folder}/${gcc_archive_file}"/>
<param name="archive_url" value="https://downloads.arduino.cc/tools/${gcc_archive_file}"/>
<param name="final_folder" value="${staging_folder}/work/${staging_hardware_folder}/tmp/gcc/${gcc_version}/"/>
<param name="dest_folder" value="${staging_folder}/work/${staging_hardware_folder}/tmp/gcc/"/>
</antcall>
<mkdir dir="${staging_folder}/work/${staging_hardware_folder}/tmp/avrdude"/>
<antcall target="${unpack_target}">
<param name="archive_file" value="${staging_folder}/${avrdude_archive_file}"/>
<param name="archive_url" value="https://downloads.arduino.cc/tools/${avrdude_archive_file}"/>
<param name="final_folder" value="${staging_folder}/work/${staging_hardware_folder}/tmp/avrdude/${avrdude_version}"/>
<param name="dest_folder" value="${staging_folder}/work/${staging_hardware_folder}/tmp/avrdude/"/>
</antcall>
<mkdir dir="${staging_folder}/work/${staging_hardware_folder}/tmp/arduinoOTA"/>
<antcall target="${unpack_target}">
<param name="archive_file" value="${staging_folder}/${arduinoOTA_archive_file}"/>
<param name="archive_url" value="http://downloads.arduino.cc/tools/${arduinoOTA_archive_file}"/>
<param name="final_folder" value="${staging_folder}/work/${staging_hardware_folder}/tmp/arduinoOTA/${arduinoOTA_version}"/>
<param name="dest_folder" value="${staging_folder}/work/${staging_hardware_folder}/tmp/arduinoOTA/"/>
</antcall>
<move file="${staging_folder}/work/${staging_hardware_folder}/tmp/gcc/avr" tofile="${staging_folder}/work/${staging_hardware_folder}/tools/avr"/>
<move file="${staging_folder}/work/${staging_hardware_folder}/tmp/avrdude/avrdude" tofile="${staging_folder}/work/${staging_hardware_folder}/tools/avr"/>
<move file="${staging_folder}/work/${staging_hardware_folder}/tmp/arduinoOTA/arduinoOTA/" tofile="${staging_folder}/work/${staging_hardware_folder}/tools/avr"/>
<echo append="true" file="${staging_folder}/work/${staging_hardware_folder}/tools/avr/builtin_tools_versions.txt" message="arduino.avrdude=${avrdude_version}${line.separator}"/>
<echo append="true" file="${staging_folder}/work/${staging_hardware_folder}/tools/avr/builtin_tools_versions.txt" message="arduino.arduinoOTA=${arduinoOTA_version}${line.separator}"/>
<echo append="true" file="${staging_folder}/work/${staging_hardware_folder}/tools/avr/builtin_tools_versions.txt" message="arduino.avr-gcc=${gcc_version}${line.separator}"/>
<delete dir="${staging_folder}/work/${staging_hardware_folder}/tmp"/>
</target>
<target name="generate-hourly-build-txt" if="hourly">
<echo file="${staging_folder}/work/${staging_hardware_folder}/../lib/hourlyBuild.txt">${BUILD_DATE}</echo>
</target>
<target name="portable-true">
<mkdir dir="${parentdir}/portable"/>
</target>
<target name="portable-false"/>
</project>