<?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="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="macosx"><equals arg1="${platform}" arg2="macosx-old" /></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="staging_folder" value="macosx"><equals arg1="${platform}" arg2="macosx" /></condition> <condition property="staging_folder" value="macosx"><equals arg1="${platform}" arg2="macosx-old" /></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_hardware_folder" value="Arduino.app/Contents/Java/hardware"><equals arg1="${platform}" arg2="macosx" /></condition> <condition property="staging_hardware_folder" value="Arduino.app/Contents/Resources/Java/hardware"><equals arg1="${platform}" arg2="macosx-old" /></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="arch-bits" value="32"> <equals arg1="${platform}" arg2="linux32"/> </condition> <condition property="arch-bits" value="64"> <equals arg1="${platform}" arg2="linux64"/> </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}"/> <!-- 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> <target name="build" description="Build Arduino."> <antcall target="${platform}-build" /> <antcall target="generate-hourly-build-txt"/> </target> <target name="run" description="Run Arduino."> <antcall target="${platform}-run" /> </target> <target name="dist" depends="revision-check" description="Build Arduino for distribution."> <input message="Enter version number:" addproperty="version" defaultvalue="${revision}" /> <antcall target="${platform}-dist" /> </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> <antcall target="assemble-hardware" /> <copy file="../hardware/platform.keys.rewrite.txt" todir="${staging_folder}/work/${staging_hardware_folder}"/> <!-- copy shared examples folder --> <copy todir="${target.path}/examples"> <fileset dir="shared/examples" /> </copy> <!-- Unzip documentation --> <antcall target="unzip"> <param name="archive_file" value="shared/reference-1.6.0.zip" /> <param name="archive_url" value="http://downloads.arduino.cc/reference-1.6.0.zip" /> <param name="final_folder" value="${target.path}/reference" /> <param name="dest_folder" value="${target.path}" /> </antcall> <antcall target="unzip"> <param name="archive_file" value="shared/Galileo_help_files-1.6.2.zip" /> <param name="archive_url" value="http://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="http://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> <!-- Write the revision file! --> <echo file="${target.path}/lib/version.txt" message="${version}" /> <antcall target="assemble-libraries" /> </target> <!-- copy library folder --> <target name="assemble-libraries" unless="light_bundle"> <copy todir="${target.path}/libraries"> <fileset dir="../libraries"> <!-- exluding non AVR libraries --> <exclude name="**/Audio/**"/> <exclude name="**/Scheduler/**"/> <exclude name="**/USBHost/**"/> </fileset> </copy> </target> <!-- copy hardware folder --> <target name="assemble-hardware" unless="light_bundle"> <copy todir="${target.path}/hardware"> <fileset dir="../hardware"> <exclude name="arduino/sam/**"/> </fileset> </copy> </target> <!-- - - - - - - - - --> <!-- Revision check --> <!-- - - - - - - - - --> <target name="revision-check"> <!-- figure out the revision 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> <echo message="Latest revision detected in shared/revision.txt is: ${revision}" /> <!-- figure out the revision 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=".*"(.*)".*" flags="g" replace="\1"/> </tokenfilter> </filterchain> </loadfile> <echo message=" Revision in BaseNoGui.java is: ${revision.base}" /> </target> <!-- - - - - - - - --> <!-- Mac OS X --> <!-- - - - - - - - --> <target name="macosx-clean" depends="macosx-old-clean" description="Clean Mac OS X build"/> <target name="macosx-old-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-old-build" if="macosx" depends="revision-check, macosx-checkos, subprojects-build" description="Build Mac OS X version"> <mkdir dir="macosx/work" /> <mkdir dir="macosx/work/${staging_hardware_folder}" /> <!-- assemble the pde --> <copy todir="macosx/work/Arduino.app"> <fileset dir="macosx/template.app" includes="**"/> </copy> <chmod file="macosx/work/Arduino.app/Contents/MacOS/JavaApplicationStub" perm="755" /> <copy todir="macosx/work/Arduino.app/Contents/Resources/Java" flatten="true"> <fileset refid="runtime.jars"/> </copy> <copy todir="macosx/work/Arduino.app/Contents/Resources/Java"> <fileset dir="shared" includes="lib/**" /> <fileset file="shared/revisions.txt" /> </copy> <antcall target="macosx-build-common"/> <replace file="macosx/work/Arduino.app/Contents/Info.plist" token="VERSION" value="${version}" /> <replace file="macosx/work/Arduino.app/Contents/Info.plist" token="REVISION" value="${revision}" /> </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-upstream1.jar.zip" /> <param name="archive_url" value="http://downloads.arduino.cc/appbundler-1.0ea-upstream1.jar.zip" /> <param name="final_folder" value="${staging_folder}/appbundler-1.0ea-upstream1" /> <param name="dest_folder" value="${staging_folder}/appbundler-1.0ea-upstream1" /> </antcall> <taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpath="${staging_folder}/appbundler-1.0ea-upstream1/appbundler-1.0ea-upstream1.jar"/> <bundleapp jvmRequired="1.8" outputdirectory="${staging_folder}/work" name="Arduino" displayname="Arduino" executablename="Arduino" identifier="cc.arduino.Arduino" shortversion="${version}" version="${revision}" signature="Pde1" icon="macosx/template.app/Contents/Resources/processing.icns" mainclassname="processing.app.Base" copyright="Arduino LLC" minimumsystemversion="10.7" 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="-Dapple.laf.useScreenMenuBar=true"/> <option value="-Dcom.apple.macos.use-file-dialog-packages=true"/> <option value="-Dcom.apple.smallTabs=true"/> <option value="-Dcom.apple.macos.useScreenMenuBar=true" /> <!-- <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/template.app/Contents/Resources/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> <antcall target="macosx-build-common"/> </target> <target name="macosx-build-common"> <mkdir dir="${staging_folder}/work" /> <mkdir dir="${staging_folder}/work/${staging_hardware_folder}" /> <antcall target="macosx-build-common-avr-toolchain" /> <antcall target="package-library-index-json-bundle"/> <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.zip" /> <param name="archive_url" value="http://downloads.arduino.cc/libastylej-2.05.zip" /> <param name="final_folder" value="${staging_folder}/libastylej" /> <param name="dest_folder" value="${staging_folder}" /> </antcall> <copy file="macosx/libastylej/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/libastylej.jnilib" tofile="macosx/work/${staging_hardware_folder}/../lib/libastylej.dylib" /> <chmod perm="755" file="macosx/work/${staging_hardware_folder}/../lib/libastylej.dylib" /> </target> <!-- Unzip AVR tools --> <target name="macosx-build-common-avr-toolchain" unless="light_bundle"> <antcall target="avr-toolchain-bundle"> <param name="unpack_target" value="untar"/> <param name="gcc_archive_file" value="avr-gcc-4.8.1-arduino5-i386-apple-darwin11.tar.bz2"/> <param name="gcc_version" value="4.8.1-arduino5"/> <param name="avrdude_archive_file" value="avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2"/> <param name="avrdude_version" value="6.0.1-arduino5"/> </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-old-run" depends="macosx-old-build" description="Run Mac OS X version"> <antcall target="macosx-run-common"/> </target> <target name="macosx-run" depends="build" description="Run Mac OS X version"> <antcall target="macosx-run-common"/> </target> <target name="macosx-old-debug" depends="macosx-old-build" description="Run Mac OS X version"> <antcall target="macosx-debug-common"/> </target> <target name="macosx-debug" depends="build" description="Run Mac OS X version"> <antcall target="macosx-debug-common"/> </target> <target name="macosx-run-common"> <exec executable="open" dir="macosx/work" failonerror="true"> <arg value="Arduino.app"/> </exec> </target> <target name="macosx-debug-common"> <exec executable="open" dir="macosx/work" spawn="false" failonerror="true"> <arg value="Arduino.app"/> </exec> </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 --> <exec executable="unzip" dir="macosx/work" failonerror="true"> <arg line="../arduino-${version}-${platform}.zip" /> </exec> <!-- Unlock keychain file --> <exec executable="security" dir="macosx/work" failonerror="true"> <arg line="unlock-keychain -p "${macosx-sign-keychain-pass}" "${macosx-sign-keychain}"" /> </exec> <!-- Sign app --> <exec executable="codesign" dir="macosx/work" failonerror="true"> <arg line="--keychain "${macosx-sign-keychain}" --force -s "${macosx-sign-id}" --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-${version}-${platform}-signed.zip ." /> </exec> <echo> ======================================================= Arduino for Mac OS X built and signed. macosx/arduino-${version}-${platform}-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-old-dist" if="macosx" depends="macosx-old-build" description="Create a downloadable .zip for the Mac OS X version"> <antcall target="macosx-dist-common"/> </target> <target name="macosx-dist" if="macosx" depends="build" description="Create a downloadable .zip for the Mac OS X version"> <antcall target="macosx-dist-common"/> </target> <target name="macosx-dist-common"> <exec executable="zip" dir="macosx/work" failonerror="true"> <arg line="-q -r ../arduino-${version}-${platform}.zip ." /> </exec> <echo> ======================================================= Arduino for Mac OS X was built. Grab the image from macosx/arduino-${version}-${platform}.zip ======================================================= </echo> </target> <!--<target name="macosx-dist-old" if="macosx" depends="macosx-build" description="Create a .dmg of the Mac OS X version">--> <!--<!– now build the dmg –>--> <!--<gunzip src="macosx/template.dmg.gz" dest="macosx/working.dmg" />--> <!--<mkdir dir="macosx/working_dir" />--> <!--<exec executable="hdiutil">--> <!--<arg line="attach macosx/working.dmg -noautoopen -mountpoint macosx/working_dir" />--> <!--<!–<arg line="attach macosx/working.dmg -noautoopen -quiet -mountpoint macosx/working_dir" />–>--> <!--</exec>--> <!--<copy todir="macosx/working_dir">--> <!--<fileset dir="macosx/work" />--> <!--</copy>--> <!--<!– The ant copy command does not preserve permissions. –>--> <!--<chmod file="macosx/working_dir/Arduino.app/Contents/MacOS/JavaApplicationStub" perm="+x" />--> <!--<chmod perm="+x">--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin" includes="**/*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/avr/bin" includes="**/*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/avr-3/bin" includes="**/*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/avr-4/bin" includes="**/*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/libexec/gcc/avr/3.4.6/" includes="**/cc1*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/libexec/gcc/avr/4.3.2/" includes="**/cc1*" />--> <!--</chmod>--> <!--<!– Pause briefly for the OS to catch up with the DMG changes. --> <!--This prevents "hdiutil: couldn't eject "disk3" - Resource busy"--> <!--errors when ejecting the disk in the next step.--> <!--You may need to set this value higher for your system. –>--> <!--<sleep seconds="3" />--> <!--<exec executable="hdiutil">--> <!--<!–<arg line="detach macosx/working_dir -quiet -force" />–>--> <!--<arg line="detach macosx/working_dir" />--> <!--</exec>--> <!--<delete file="macosx/arduino-*.dmg" />--> <!--<exec executable="hdiutil">--> <!--<arg line="convert macosx/working.dmg -quiet -format UDZO -imagekey zlib-level=9 -o macosx/arduino-${version}.dmg" />--> <!--</exec>--> <!--<!– Clean up the interim files. –>--> <!--<delete file="macosx/working.dmg" />--> <!--<delete dir="macosx/working_dir" />--> <!--<echo>--> <!--=======================================================--> <!--Arduino for Mac OS X was built. Grab the image from--> <!--macosx/arduino-${version}.dmg--> <!--=======================================================--> <!--</echo>--> <!--</target>--> <!--<target name="macosx-dist-old-fix-perms" unless="light_bundle">--> <!--<chmod perm="+x">--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin" includes="**/*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/avr/bin" includes="**/*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/avr-3/bin" includes="**/*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/avr-4/bin" includes="**/*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/libexec/gcc/avr/3.4.6/" includes="**/cc1*" />--> <!--<fileset dir="macosx/working_dir/Arduino.app/Contents/Resources/Java/hardware/tools/avr/libexec/gcc/avr/4.3.2/" includes="**/cc1*" />--> <!--</chmod>--> <!--</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> </target> <target name="linux-checkos" unless="linux"> <echo> ======================================================= Arduino for Linux can only be built on 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" flatten="true"> <fileset refid="runtime.jars" /> </copy> <antcall target="assemble"> <param name="target.path" value="linux/work" /> </antcall> <copy todir="linux/work" file="linux/dist/arduino" /> <copy todir="linux/work" file="linux/dist/arduino.desktop" /> <copy todir="linux/work" file="linux/dist/install.sh" /> <chmod perm="755" file="linux/work/arduino" /> <copy todir="linux/work" file="linux/dist/arduino" /> <chmod perm="755" file="linux/work/arduino" /> <antcall target="unzip"> <param name="archive_file" value="./libastylej-2.05.zip" /> <param name="archive_url" value="http://downloads.arduino.cc/libastylej-2.05.zip" /> <param name="final_folder" value="${staging_folder}/libastylej" /> <param name="dest_folder" value="${staging_folder}" /> </antcall> <copy file="linux/libastylej/libastylej${arch-bits}.so" tofile="linux/work/lib/libastylej.so" /> <chmod perm="755" file="linux/work/lib/libastylej.so" /> </target> <target name="linux32-build" depends="linux-build" description="Build linux (32-bit) version"> <antcall target="avr-toolchain-bundle"> <param name="unpack_target" value="untar"/> <param name="gcc_archive_file" value="avr-gcc-4.8.1-arduino5-i686-pc-linux-gnu.tar.bz2"/> <param name="gcc_version" value="4.8.1-arduino5"/> <param name="avrdude_archive_file" value="avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2"/> <param name="avrdude_version" value="6.0.1-arduino5"/> </antcall> <antcall target="package-library-index-json-bundle"/> </target> <target name="linux64-build" depends="linux-build" description="Build linux (64-bit) version"> <antcall target="avr-toolchain-bundle"> <param name="unpack_target" value="untar"/> <param name="gcc_archive_file" value="avr-gcc-4.8.1-arduino5-x86_64-pc-linux-gnu.tar.bz2"/> <param name="gcc_version" value="4.8.1-arduino5"/> <param name="avrdude_archive_file" value="avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2"/> <param name="avrdude_version" value="6.0.1-arduino5"/> </antcall> <antcall target="package-library-index-json-bundle"/> </target> <target name="linux32-run" depends="build" description="Run Linux (32-bit) version"> <exec executable="./linux/work/arduino" spawn="false" failonerror="true"/> </target> <target name="linux64-run" depends="build" description="Run Linux (64-bit) version"> <exec executable="./linux/work/arduino" spawn="false" failonerror="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"> <get src="${archive_url}" dest="${archive_file}" verbose="true" ignoreerrors="true" /> </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> <exec executable="tar" failonerror="true"> <arg value="xf"/> <arg value="${archive_file}"/> <arg value="--directory=${dest_folder}"/> </exec> </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}" /> <exec executable="unzip" failonerror="true"> <arg value="-q" /> <arg value="-n" /> <arg value="-d" /> <arg value="${dest_folder}" /> <arg value="${archive_file}" /> </exec> </target> <target name="unzip-with-ant-task" 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> <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-${version}-${platform}.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-${version}-${platform}.tar.xz ======================================================= </echo> </target> <target name="linux32-dist" depends="linux-dist" description="Build .tar.xz of linux version" /> <target name="linux64-dist" depends="linux-dist" description="Build .tar.xz of linux 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-with-ant-task"> <param name="archive_file" value="windows/launch4j-3.7-win32.zip"/> <param name="archive_url" value="http://downloads.sourceforge.net/project/launch4j/launch4j-3/3.7/launch4j-3.7-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.7-linux.tgz"/> <param name="archive_url" value="http://downloads.sourceforge.net/project/launch4j/launch4j-3/3.7/launch4j-3.7-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}" /> <!-- 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.zip" /> <param name="archive_url" value="http://downloads.arduino.cc/libastylej-2.05.zip" /> <param name="final_folder" value="${staging_folder}/libastylej" /> <param name="dest_folder" value="${staging_folder}" /> </antcall> <copy file="windows/libastylej/AStylej.dll" todir="windows/work/lib" /> <copy file="windows/msvcp100.dll" todir="windows/work" /> <copy file="windows/msvcr100.dll" todir="windows/work" /> <!-- Copy listComPort.exe tool --> <copy todir="windows/work/hardware/tools"> <fileset file="windows/listComPorts.exe" /> </copy> <chmod perm="755"> <fileset file="windows/work/hardware/tools/listComPorts.exe" /> </chmod> <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"/> </copy> <launch4j configFile="windows/work/config.xml" /> <launch4j configFile="windows/work/config_debug.xml" /> <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> <loadproperties srcfile="${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=""Windows""/> </not> </condition> </fail> <copy todir="${staging_folder}/work/java" includeemptydirs="true" preservelastmodified="true" overwrite="true" failonerror="true"> <fileset dir="${WINDOWS_BUNDLED_JVM}" includes="*/**"/> </copy> </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-4.8.1-arduino5-i686-mingw32.zip"/> <param name="gcc_version" value="4.8.1-arduino5"/> <param name="avrdude_archive_file" value="avrdude-6.0.1-arduino5-i686-mingw32.zip"/> <param name="avrdude_version" value="6.0.1-arduino5"/> </antcall> <antcall target="package-library-index-json-bundle"/> </target> <target name="windows-run" depends="build" description="Run windows version"> <exec executable="windows/work/arduino.exe" dir="windows/work" failonerror="true"/> </target> <target name="windows-dist" depends="build" description="Create .zip files of windows version"> <zip destfile="windows/arduino-${version}-${platform}.zip" level="9"> <zipfileset dir="windows/work" prefix="arduino-${version}"/> </zip> <echo> ======================================================= Arduino for Windows was built. Grab the archive from windows/arduino-${version}-${platform}.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="http://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="http://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> <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-6.0.1" tofile="${staging_folder}/work/${staging_hardware_folder}/tools/avr"/> <antcall target="macosx-fix-bundled-toolchain-missing-symlinks"/> <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.avr-gcc=${gcc_version}${line.separator}"/> </target> <target name="package-library-index-json-bundle"> <mkdir dir="${staging_folder}/work/${staging_hardware_folder}/../dist/"/> <get src="http://downloads.arduino.cc/packages/package_index.json.gz" dest="${staging_folder}/work/${staging_hardware_folder}/../dist/" verbose="true" skipexisting="false" /> <gunzip src="${staging_folder}/work/${staging_hardware_folder}/../dist/package_index.json.gz" dest="${staging_folder}/work/${staging_hardware_folder}/../dist/"/> <delete file="${staging_folder}/work/${staging_hardware_folder}/../dist/package_index.json.gz"/> <get src="http://downloads.arduino.cc/packages/package_index.json.sig" dest="${staging_folder}/work/${staging_hardware_folder}/../dist/" verbose="true" skipexisting="false" /> <get src="http://downloads.arduino.cc/libraries/library_index.json.gz" dest="${staging_folder}/work/${staging_hardware_folder}/../dist/" verbose="true" skipexisting="false" /> <gunzip src="${staging_folder}/work/${staging_hardware_folder}/../dist/library_index.json.gz" dest="${staging_folder}/work/${staging_hardware_folder}/../dist/"/> <delete file="${staging_folder}/work/${staging_hardware_folder}/../dist/library_index.json.gz"/> <delete dir="${staging_folder}/work/${staging_hardware_folder}/tmp"/> </target> <target name="macosx-fix-bundled-toolchain-missing-symlinks" if="macosx"> <exec executable="mv" failonerror="true"> <arg value="${staging_folder}/work/${staging_hardware_folder}/tmp/avrdude/avrdude-6.0.1/lib/libusb.dylib"/> <arg value="${staging_folder}/work/${staging_hardware_folder}/tools/avr/lib/"/> </exec> <exec executable="mv" failonerror="true"> <arg value="${staging_folder}/work/${staging_hardware_folder}/tmp/avrdude/avrdude-6.0.1/lib/libusb-1.0.dylib"/> <arg value="${staging_folder}/work/${staging_hardware_folder}/tools/avr/lib/"/> </exec> </target> <target name="generate-hourly-build-txt" if="hourly"> <echo file="${staging_folder}/work/${staging_hardware_folder}/../lib/hourlyBuild.txt">${BUILD_DATE}</echo> </target> </project>