mirror of
https://github.com/processing/processing4.git
synced 2026-02-03 21:59:20 +01:00
1018 lines
36 KiB
XML
Executable File
1018 lines
36 KiB
XML
Executable File
<?xml version="1.0"?>
|
|
<project name="Processing" default="build">
|
|
|
|
<!-- Sets properties for macosx/windows/linux depending on current system -->
|
|
<condition property="platform" value="macosx">
|
|
<os family="mac" />
|
|
</condition>
|
|
|
|
<condition property="platform" value="windows">
|
|
<os family="windows" />
|
|
</condition>
|
|
|
|
<condition property="platform" value="linux">
|
|
<and>
|
|
<os family="unix" />
|
|
<not>
|
|
<os family="mac" />
|
|
</not>
|
|
</and>
|
|
</condition>
|
|
|
|
<!-- Require Java 7 to bootstrap, otherwise there will be sadness.
|
|
Java 1.8 caused build problems (with ECJ?) so not supported. -->
|
|
<fail message="Unsupported Java version: ${java.version}. Make sure that Java 7 (aka Java 1.7) is installed.">
|
|
<condition>
|
|
<not>
|
|
<or>
|
|
<contains string="${java.version}" substring="1.7" />
|
|
</or>
|
|
</not>
|
|
</condition>
|
|
</fail>
|
|
|
|
<property name="examples.dir"
|
|
value="../../processing-docs/content/examples" />
|
|
|
|
<!-- Figure out the JRE download location for Linux and Windows. -->
|
|
<condition property="jre.file" value="jre-7u40-${platform}-i586.tgz">
|
|
<equals arg1="${sun.arch.data.model}" arg2="32" />
|
|
</condition>
|
|
<condition property="jre.file" value="jre-7u40-${platform}-x64.tgz">
|
|
<equals arg1="${sun.arch.data.model}" arg2="64" />
|
|
</condition>
|
|
|
|
<fileset dir="windows/work/java" id="jre-optional-windows">
|
|
<include name="bin/dtplugin" />
|
|
<include name="bin/plugin2" />
|
|
|
|
<include name="bin/kinit.exe" />
|
|
<include name="bin/klist.exe" />
|
|
<include name="bin/ktab.exe" />
|
|
|
|
<!--<include name="bin/keytool" />-->
|
|
<include name="bin/orbd" />
|
|
<include name="bin/policytool" />
|
|
<include name="bin/rmid" />
|
|
<include name="bin/rmiregistry" />
|
|
<include name="bin/servertool" />
|
|
<include name="bin/tnameserv" />
|
|
|
|
<include name="bin/javaws.exe" />
|
|
<include name="lib/javaws.jar" />
|
|
|
|
<include name="lib/ext/dnsns.jar" />
|
|
<include name="lib/cmm/PYCC.pf" />
|
|
</fileset>
|
|
|
|
<fileset dir="linux/work/java" id="jre-optional-linux">
|
|
<!--<include name="bin/keytool" />-->
|
|
<include name="bin/orbd" />
|
|
<include name="bin/policytool" />
|
|
<include name="bin/rmid" />
|
|
<include name="bin/rmiregistry" />
|
|
<include name="bin/servertool" />
|
|
<include name="bin/tnameserv" />
|
|
|
|
<include name="bin/javaws" />
|
|
<include name="lib/javaws.jar" />
|
|
|
|
<include name="lib/ext/dnsns.jar" />
|
|
<include name="lib/cmm/PYCC.pf" />
|
|
</fileset>
|
|
|
|
<!-- Unused JavaFX files that can be removed from the JRE on Windows
|
|
and Linux. On Mac OS X, this is removed by the appbundler task.
|
|
www.oracle.com/technetwork/java/javase/jdk-7-readme-429198.html -->
|
|
|
|
<!-- There might be others, based on what was in the Java 6 docs,
|
|
but that info isn't part of the Java 7 instructions.
|
|
http://www.oracle.com/technetwork/java/javase/jrereadme-182762.html -->
|
|
|
|
<fileset dir="${platform}/work/java" id="javafx-basics">
|
|
<include name="THIRDPARTYLICENSEREADME-JAVAFX.txt" />
|
|
<include name="lib/javafx.properties" />
|
|
<include name="lib/jfxrt.jar" />
|
|
<include name="lib/security/javafx.policy" />
|
|
</fileset>
|
|
|
|
<fileset dir="windows/work/java" id="javafx-windows">
|
|
<include name="bin/decora-sse.dll" />
|
|
<include name="bin/fxplugins.dll" />
|
|
<include name="bin/glass.dll" />
|
|
<include name="bin/glib-lite.dll" />
|
|
<include name="bin/gstreamer-lite.dll" />
|
|
<include name="bin/javafx-font.dll" />
|
|
<include name="bin/javafx-iio.dll" />
|
|
<include name="bin/jfxmedia.dll" />
|
|
<include name="bin/jfxwebkit.dll" />
|
|
<include name="bin/libxml2.dll" />
|
|
<include name="bin/libxslt.dll" />
|
|
</fileset>
|
|
|
|
<fileset dir="linux/work/java" id="javafx-linux-32">
|
|
<include name="lib/i386/fxavcodecplugin-52.so" />
|
|
<include name="lib/i386/fxavcodecplugin-53.so" />
|
|
<include name="lib/i386/fxplugins.so" />
|
|
<include name="lib/i386/libglass.so" />
|
|
<include name="lib/i386/libgstplugins-lite.so" />
|
|
<include name="lib/i386/libgstreamer-lite.so" />
|
|
<include name="lib/i386/libjavafx-font.so" />
|
|
<include name="lib/i386/libjavafx-iio.so" />
|
|
<include name="lib/i386/libjfxmedia.so" />
|
|
<include name="lib/i386/libjfxwebkit.so" />
|
|
<include name="lib/i386/libprism-es2.so" />
|
|
</fileset>
|
|
|
|
<fileset dir="linux/work/java" id="javafx-linux-64">
|
|
<include name="lib/amd64/fxavcodecplugin-52.so" />
|
|
<include name="lib/amd64/fxavcodecplugin-53.so" />
|
|
<include name="lib/amd64/fxplugins.so" />
|
|
<include name="lib/amd64/libglass.so" />
|
|
<include name="lib/amd64/libgstplugins-lite.so" />
|
|
<include name="lib/amd64/libgstreamer-lite.so" />
|
|
<include name="lib/amd64/libjavafx-font.so" />
|
|
<include name="lib/amd64/libjavafx-iio.so" />
|
|
<include name="lib/amd64/libjfxmedia.so" />
|
|
<include name="lib/amd64/libjfxwebkit.so" />
|
|
<include name="lib/amd64/libprism-es2.so" />
|
|
</fileset>
|
|
|
|
<!--
|
|
<echo message="${java.class.path}" />
|
|
-->
|
|
|
|
<!-- Set a property named macosx, linux, or windows.
|
|
The 'value' chosen is arbitrary. -->
|
|
<property name="${platform}" value="${platform}" />
|
|
|
|
<property environment="env" />
|
|
|
|
<!-- code signing hack, turns on code signing during dist -->
|
|
<condition property="codesign">
|
|
<equals arg1="${env.USER}" arg2="fry" />
|
|
</condition>
|
|
|
|
<!-- Set the version of Java that must be present to build. -->
|
|
<property name="jdk.update.macosx" value="67" />
|
|
<property name="jdk.path.macosx" value="/Library/Java/JavaVirtualMachines/jdk1.7.0_${jdk.update.macosx}.jdk" />
|
|
|
|
<available file="${jdk.path.macosx}" property="macosx_jdk_found" />
|
|
|
|
<fail if="macosx" unless="macosx_jdk_found"
|
|
message="JDK 7u${jdk.update.macosx} required.${line.separator}To build on OS X, you must install Oracle's JDK 7u${jdk.update.macosx} from${line.separator}http://www.oracle.com/technetwork/java/javase/downloads${line.separator}Note that only 7u${jdk.update.macosx} (not a later or earlier version) will work. ${line.separator}And it must be the JDK, not the JRE. And do not try to defy me again." />
|
|
<!--
|
|
<fail if="linux" unless="java_tools_found"
|
|
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." />
|
|
-->
|
|
|
|
<!-- Figure out the platform-specific output directory for all this work. -->
|
|
<condition property="target.path"
|
|
value="macosx/work/Processing.app/Contents/Java">
|
|
<os family="mac" />
|
|
</condition>
|
|
|
|
<condition property="target.path" value="linux/work">
|
|
<os family="unix" />
|
|
</condition>
|
|
|
|
<condition property="target.path" value="windows/work">
|
|
<os family="windows" />
|
|
</condition>
|
|
|
|
<!-- Libraries required for running processing -->
|
|
<!-- also need to copy these to the bundleapp task for macosx -->
|
|
<fileset dir=".." id="runtime.jars">
|
|
<include name="app/pde.jar" />
|
|
<include name="app/lib/antlr.jar" />
|
|
<include name="app/lib/jna.jar" />
|
|
<include name="app/lib/ant.jar" />
|
|
<include name="app/lib/ant-launcher.jar" />
|
|
<include name="app/lib/org-netbeans-swing-outline.jar" />
|
|
<include name="app/lib/jdi.jar" />
|
|
<include name="app/lib/jdimodel.jar" />
|
|
<include name="app/lib/org.eclipse.osgi_3.8.1.v20120830-144521.jar" />
|
|
<include name="app/lib/com.ibm.icu_4.4.2.v20110823.jar" />
|
|
</fileset>
|
|
|
|
<target name="build" description="Build Processing.">
|
|
<antcall target="${platform}-build" />
|
|
</target>
|
|
|
|
<target name="run" description="Run Processing.">
|
|
<antcall target="${platform}-run" />
|
|
</target>
|
|
|
|
<target name="dist" depends="revision-check"
|
|
description="Build Processing for distribution.">
|
|
<input message="Enter version number:"
|
|
addproperty="version"
|
|
defaultvalue="${revision}" />
|
|
|
|
<available file="${examples.dir}" property="examples.exist" />
|
|
<fail unless="examples.exist" message="To do a distribution, the processing-docs repo must be checked out at the same level as the processing repo." />
|
|
|
|
<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>
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - -->
|
|
<!-- Subprojects: Core, App, Libraries -->
|
|
<!-- - - - - - - - - - - - - - - - - - -->
|
|
|
|
<target name="subprojects-clean">
|
|
<subant buildpath="../core" target="clean"/>
|
|
<subant buildpath="../app" target="clean"/>
|
|
<subant buildpath="../java/libraries/dxf" target="clean"/>
|
|
<subant buildpath="../java/libraries/net" target="clean"/>
|
|
<subant buildpath="../java/libraries/pdf" target="clean"/>
|
|
<subant buildpath="../java/libraries/serial" target="clean"/>
|
|
<subant buildpath="shared/tools/MovieMaker" target="clean"/>
|
|
<subant buildpath="../pdex" target="clean"/>
|
|
|
|
<!-- make sure this isn't around from an old build 140730 -->
|
|
<delete dir="../java/examples" />
|
|
</target>
|
|
|
|
<target name="subprojects-build">
|
|
<subant buildpath="../core" target="build"/>
|
|
<subant buildpath="../app" target="build"/>
|
|
<subant buildpath="../java/libraries/dxf" target="build"/>
|
|
<subant buildpath="../java/libraries/net" target="build"/>
|
|
<subant buildpath="../java/libraries/pdf" target="build"/>
|
|
<subant buildpath="../java/libraries/serial" target="build"/>
|
|
<subant buildpath="shared/tools/MovieMaker" target="build"/>
|
|
<subant buildpath="../pdex" target="package"/>
|
|
</target>
|
|
|
|
|
|
<!-- - - - - - - - - -->
|
|
<!-- Basic Assembly -->
|
|
<!-- - - - - - - - - -->
|
|
|
|
<target name="assemble" depends="version-clear, version-write">
|
|
<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 todir="${target.path}/modes/java">
|
|
<fileset dir="../java">
|
|
<!-- don't include LWJGL, it's not operational -->
|
|
<exclude name="libraries/lwjgl/**" />
|
|
|
|
<exclude name="reference.zip" />
|
|
<exclude name="**/._*" />
|
|
</fileset>
|
|
</copy>
|
|
|
|
<!-- get the examples folder, but don't require it to buid -->
|
|
<copy todir="${target.path}/modes/java/examples" failonerror="false">
|
|
<fileset dir="${examples.dir}" />
|
|
</copy>
|
|
|
|
<unzip dest="${target.path}/modes/java"
|
|
src="../java/reference.zip"
|
|
overwrite="false">
|
|
<patternset>
|
|
<exclude name="__MACOSX/**" />
|
|
<exclude name="**/._*" />
|
|
</patternset>
|
|
</unzip>
|
|
|
|
<!-- copy PDE X mode folder-->
|
|
<copy todir="${target.path}/modes/">
|
|
<fileset dir="../pdex/dist" />
|
|
</copy>
|
|
|
|
</target>
|
|
|
|
<target name="version-clear">
|
|
<delete file="${target.path}/lib/version.txt" />
|
|
</target>
|
|
|
|
<target name="version-write" if="version">
|
|
<echo file="${target.path}/lib/version.txt" message="${version}"/>
|
|
</target>
|
|
|
|
|
|
<!-- - - - - - - - - -->
|
|
<!-- Revision check -->
|
|
<!-- - - - - - - - - -->
|
|
<target name="revision-check">
|
|
<!-- figure out the revision number -->
|
|
<loadfile srcfile="../todo.txt" property="revision">
|
|
<filterchain>
|
|
<headfilter lines="1"/>
|
|
<tokenfilter>
|
|
<stringtokenizer suppressdelims="true"/>
|
|
<!-- grab the thing from the first line that's 4 digits -->
|
|
<containsregex pattern="(\d\d\d\d)" />
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadfile>
|
|
<!-- <echo message="revision is ${revision}." /> -->
|
|
|
|
<!-- figure out the revision number in base.java -->
|
|
<loadfile srcfile="../app/src/processing/app/Base.java"
|
|
property="revision.base">
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<linetokenizer />
|
|
<containsregex pattern="String VERSION_NAME = "/>
|
|
<replaceregex pattern="[^0-9]*" flags="g" replace=""/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadfile>
|
|
<!-- <echo message="base revision is ${revision.base}." /> -->
|
|
|
|
<condition property="revision.correct">
|
|
<!-- Using contains because I can't figure out how to get rid of the
|
|
LF in revision.base. Please file a bug if you have a fix. -->
|
|
<contains string="${revision.base}" substring="${revision}"/>
|
|
</condition>
|
|
|
|
<!-- the revision.base property won't be set
|
|
if $revision wasn't found... -->
|
|
<fail unless="revision.correct"
|
|
message="Fix revision number in Base.java" />
|
|
</target>
|
|
|
|
|
|
<!-- - - - - - - - -->
|
|
<!-- Mac OS X -->
|
|
<!-- - - - - - - - -->
|
|
|
|
<target name="macosx-clean" depends="subprojects-clean" description="Clean Mac OS X build">
|
|
<delete dir="macosx/work" />
|
|
<delete file="macosx/processing-*.dmg" />
|
|
</target>
|
|
|
|
<target name="macosx-checkos" unless="macosx">
|
|
<echo>
|
|
=======================================================
|
|
Processing 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">
|
|
<mkdir dir="macosx/work" />
|
|
|
|
<!-- app bundler for OS X and Java 1.7 -->
|
|
<taskdef name="bundleapp"
|
|
classname="com.oracle.appbundler.AppBundlerTask"
|
|
classpath="macosx/appbundler.jar" />
|
|
|
|
<!--icon="macosx/processing.icns"-->
|
|
<bundleapp outputDirectory="macosx/work"
|
|
name="Processing"
|
|
displayName="Processing"
|
|
executableName="Processing"
|
|
identifier="org.processing.app"
|
|
signature="Pde2"
|
|
icon="macosx/processing.icns"
|
|
copyright="© The Processing Foundation"
|
|
getInfo="${version}, Copyright © The Processing Foundation"
|
|
shortVersion="${version}"
|
|
version="${revision}"
|
|
mainClassName="processing.app.Base">
|
|
|
|
<!-- The appbundler task needs a couple files (the Info.plist and
|
|
anything else outside /jre) from the full JDK, even though
|
|
it's primarily copying over the JRE folder. -->
|
|
<runtime dir="${jdk.path.macosx}/Contents/Home" />
|
|
<!-- Eventually we'll want to load the JRE directly from
|
|
the .tgz on the Oracle site, though it's in a folder called
|
|
jre1.7.0_40.jre, so we'll need to strip that out. -->
|
|
|
|
<!-- Same as runtime.jars, seen above; plus core.jar. -->
|
|
<classpath file="../app/pde.jar" />
|
|
<classpath file="../app/lib/antlr.jar" />
|
|
<classpath file="../app/lib/jna.jar" />
|
|
<classpath file="../app/lib/ant.jar" />
|
|
<classpath file="../app/lib/ant-launcher.jar" />
|
|
<classpath file="../app/lib/org-netbeans-swing-outline.jar" />
|
|
<classpath file="../app/lib/jdi.jar" />
|
|
<classpath file="../app/lib/jdimodel.jar" />
|
|
<classpath file="../app/lib/org.eclipse.osgi_3.8.1.v20120830-144521.jar" />
|
|
<classpath file="../app/lib/com.ibm.icu_4.4.2.v20110823.jar" />
|
|
|
|
<!-- plus core.jar... note that this is no longer shared -->
|
|
<classpath file="../core/library/core.jar" />
|
|
|
|
<arch name="x86_64"/>
|
|
<!-- no support for this with Java 7 from Oracle -->
|
|
<!--<arch name="i386"/>-->
|
|
|
|
<!--icon="macosx/template.app/Contents/Resources/pde.icns"-->
|
|
<!--icon="${bundle.icon}"-->
|
|
<bundledocument extensions="pde"
|
|
icon="macosx/pde.icns"
|
|
name="Processing Source Code"
|
|
role="Editor">
|
|
</bundledocument>
|
|
|
|
<!-- Sets dock icon when debugging (not launched via launch svcs) -->
|
|
<option value="-Xdock:icon=Contents/Resources/processing.icns" />
|
|
<!-- Don't think these actually make any difference. -->
|
|
<!--
|
|
<option value="-Xdock:name=Processing" />
|
|
-->
|
|
|
|
<!-- Probably no longer needed? [fry 130917]
|
|
<option value="-Xms128M" />
|
|
-->
|
|
<!-- returning 140606 per PDE X request -->
|
|
<option value="-Xmx256M" />
|
|
|
|
<option value="-Dapple.awt.application.name=Processing" />
|
|
|
|
<!-- avoid conflicts with JNA DLLs already in the path -->
|
|
<option value="-Djna.nosys=true" />
|
|
|
|
<option value="-Dapple.laf.useScreenMenuBar=true" />
|
|
<option value="-Dcom.apple.macos.use-file-dialog-packages=true" />
|
|
<option value="-Dcom.apple.macos.useScreenMenuBar=true" />
|
|
<option value="-Dcom.apple.smallTabs=true" />
|
|
|
|
<!--
|
|
the old options; most of these are probably no longer useful
|
|
<key>apple.laf.useScreenMenuBar</key>
|
|
<string>true</string>
|
|
<key>apple.awt.showGrowBox</key>
|
|
<string>true</string>
|
|
<key>com.apple.smallTabs</key>
|
|
<string>true</string>
|
|
<key>apple.awt.Antialiasing</key>
|
|
<string>false</string>
|
|
<key>apple.awt.TextAntialiasing</key>
|
|
<string>true</string>
|
|
<key>com.apple.hwaccel</key>
|
|
<string>true</string>
|
|
<key>apple.awt.use-file-dialog-packages</key>
|
|
<string>false</string>
|
|
<key>apple.awt.graphics.UseQuartz</key>
|
|
<string>true</string>
|
|
-->
|
|
</bundleapp>
|
|
|
|
<!-- The 'keytool' file is deleted by our appbundler. Add it back so that
|
|
Android signing works properly. (Not modifying our appbundler since
|
|
most of the time that appbundler is used, keytool isn't needed).
|
|
Also, because Ant's copy task does not retain file permissions on Unix systems,
|
|
we need to use <exec executable="cp" ... > instead -->
|
|
<exec executable="cp">
|
|
<arg line="${jdk.path.macosx}/Contents/Home/bin/keytool macosx/work/Processing.app/Contents/PlugIns/jdk1.7.0_${jdk.update.macosx}.jdk/Contents/Home/jre/bin"/>
|
|
</exec>
|
|
|
|
<copy todir="macosx/work/Processing.app/Contents/Java">
|
|
<fileset dir=".." includes="core/library/**" /> <!-- why this? -->
|
|
<!--<fileset dir="shared" includes="launch4j/**" />-->
|
|
<fileset dir="shared" includes="lib/**" excludes="lib/fonts/**" />
|
|
<fileset file="shared/revisions.txt" />
|
|
</copy>
|
|
|
|
<!--
|
|
Processing.app/Contents/PlugIns/jdk1.7.0_40.jdk/Contents/Home/jre/lib/fonts
|
|
-->
|
|
<copy todir="macosx/work/Processing.app/Contents/PlugIns/jdk1.7.0_${jdk.update.macosx}.jdk/Contents/Home/jre/lib/fonts">
|
|
<fileset dir="shared/lib/fonts" includes="*" />
|
|
</copy>
|
|
|
|
<antcall target="assemble">
|
|
<param name="target.path"
|
|
value="macosx/work/Processing.app/Contents/Java" />
|
|
</antcall>
|
|
|
|
<exec executable="macosx/language_gen.py" />
|
|
|
|
<property name="launch4j.dir" value="macosx/work/Processing.app/Contents/Java/modes/java/application/launch4j" />
|
|
|
|
<!-- rename the version we need -->
|
|
<move file="${launch4j.dir}/bin/windres-macosx"
|
|
tofile="${launch4j.dir}/bin/windres" />
|
|
<move file="${launch4j.dir}/bin/ld-macosx"
|
|
tofile="${launch4j.dir}/bin/ld" />
|
|
|
|
<!-- make executable (ant doesn't preserve) -->
|
|
<chmod perm="ugo+x" file="${launch4j.dir}/bin/windres" />
|
|
<chmod perm="ugo+x" file="${launch4j.dir}/bin/ld" />
|
|
|
|
<!-- remove the others -->
|
|
<delete failonerror="true">
|
|
<fileset dir="${launch4j.dir}/bin" includes="ld-*" />
|
|
<fileset dir="${launch4j.dir}/bin" includes="windres-*" />
|
|
</delete>
|
|
</target>
|
|
|
|
<target name="macosx-run" depends="macosx-build"
|
|
description="Run Mac OS X version">
|
|
<exec executable="open" dir="macosx/work" spawn="true">
|
|
<arg value="-a" />
|
|
<arg value="/Applications/Utilities/Terminal.app" />
|
|
<!-- <arg value="Processing.app/Contents/MacOS/JavaApplicationStub" />-->
|
|
<arg value="Processing.app/Contents/MacOS/Processing" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="macosx-dist-sign" if="codesign">
|
|
<echo>
|
|
Code signing will only work if you have a $99/yr Apple developer ID.
|
|
|
|
With a proper ID, if code signing fails, you may need to use:
|
|
export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"
|
|
</echo>
|
|
|
|
<!-- 3rd party is for the app store, dev id is gatekeeper only -->
|
|
<!--<arg value="3rd Party Mac Developer Application" />-->
|
|
|
|
<exec executable="/usr/bin/codesign" dir="macosx/work">
|
|
<arg value="--force" />
|
|
<arg value="--sign" />
|
|
<arg value="Developer ID Application" />
|
|
<arg value="Processing.app/Contents/PlugIns/jdk1.7.0_${jdk.update.macosx}.jdk" />
|
|
</exec>
|
|
|
|
<exec executable="/usr/bin/codesign" dir="macosx/work">
|
|
<arg value="--force" />
|
|
<arg value="--sign" />
|
|
<arg value="Developer ID Application" />
|
|
<arg value="Processing.app" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="macosx-dist" if="macosx"
|
|
depends="macosx-build"
|
|
description="Create a downloadable .zip for the Mac OS X version">
|
|
|
|
<!-- The ant copy command does not preserve permissions. -->
|
|
<chmod file="macosx/work/Processing.app/Contents/MacOS/JavaApplicationStub" perm="ugo+x" />
|
|
|
|
<!-- Now handled by the app bundler -->
|
|
<!--
|
|
<replace file="macosx/work/Processing.app/Contents/Info.plist"
|
|
token="VERSION" value="${version}" />
|
|
<replace file="macosx/work/Processing.app/Contents/Info.plist"
|
|
token="REVISION" value="${revision}" />
|
|
-->
|
|
|
|
<antcall target="macosx-dist-sign" />
|
|
|
|
<exec executable="ditto" dir="macosx/work">
|
|
<arg line="-c -k -rsrc . ../processing-${version}-macosx.zip" />
|
|
</exec>
|
|
|
|
<echo>
|
|
=======================================================
|
|
Processing for Mac OS X was built. Grab it from
|
|
|
|
macosx/processing-${version}-macosx.zip
|
|
=======================================================
|
|
</echo>
|
|
</target>
|
|
|
|
|
|
<!-- - - - - - - - -->
|
|
<!-- Linux -->
|
|
<!-- - - - - - - - -->
|
|
|
|
<target name="linux-clean" depends="subprojects-clean" description="Clean linux version">
|
|
<delete dir="linux/work" />
|
|
</target>
|
|
|
|
<target name="linux-checkos" unless="linux">
|
|
<echo>
|
|
=======================================================
|
|
Processing 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" />
|
|
|
|
<copy todir="linux/work">
|
|
<fileset dir=".." includes="core/library/**" />
|
|
<fileset dir="shared" includes="launch4j/**" />
|
|
<fileset dir="shared" includes="lib/**" excludes="lib/fonts/**" />
|
|
<fileset dir="shared" includes="modes/**" />
|
|
<fileset file="shared/revisions.txt" />
|
|
</copy>
|
|
|
|
<antcall target="assemble">
|
|
<param name="target.path" value="linux/work" />
|
|
</antcall>
|
|
|
|
<property name="launch4j.dir" value="linux/work/modes/java/application/launch4j" />
|
|
|
|
<!-- rename the version we need -->
|
|
<move file="${launch4j.dir}/bin/windres-linux"
|
|
tofile="${launch4j.dir}/bin/windres" />
|
|
<move file="${launch4j.dir}/bin/ld-linux"
|
|
tofile="${launch4j.dir}/bin/ld" />
|
|
|
|
<!-- make executable (ant doesn't preserve) -->
|
|
<chmod perm="ugo+x" file="${launch4j.dir}/bin/windres" />
|
|
<chmod perm="ugo+x" file="${launch4j.dir}/bin/ld" />
|
|
|
|
<!-- remove the others -->
|
|
<delete failonerror="true">
|
|
<fileset dir="${launch4j.dir}/bin" includes="ld-*" />
|
|
<fileset dir="${launch4j.dir}/bin" includes="windres-*" />
|
|
</delete>
|
|
|
|
<copy todir="linux/work/lib" flatten="true">
|
|
<fileset refid="runtime.jars" />
|
|
</copy>
|
|
|
|
<copy file="linux/processing" todir="linux/work" />
|
|
<chmod perm="ugo+x" file="linux/work/processing" />
|
|
|
|
<!-- copy command line tool -->
|
|
<copy file="linux/processing" tofile="linux/work/processing-java" />
|
|
<chmod perm="ugo+x" file="linux/work/processing-java" />
|
|
|
|
<!--
|
|
<property name="jre.file"
|
|
value="jre-tools-6u37-linux${sun.arch.data.model}.tgz" />
|
|
-->
|
|
|
|
<get src="http://processing.googlecode.com/files/${jre.file}"
|
|
dest="linux/jre.tgz"
|
|
usetimestamp="true" />
|
|
|
|
<!--
|
|
Cannot use ant version of tar because it doesn't preserve properties.
|
|
<untar compression="gzip"
|
|
dest="linux/work"
|
|
src="linux/jre.tgz"
|
|
overwrite="false"/>
|
|
-->
|
|
|
|
<!--
|
|
http://www.gnu.org/software/tar/manual/html_section/transform.html
|
|
-->
|
|
<exec executable="tar" dir="linux">
|
|
<!-- Change directory -->
|
|
<!--
|
|
<arg value="-C" />
|
|
<arg value="linux/work" />
|
|
<arg value="-xzpf" />
|
|
-->
|
|
<arg value="xfz" />
|
|
<arg value="jre.tgz"/>
|
|
</exec>
|
|
|
|
<!--
|
|
We only want to move when the folder didn't exist before
|
|
<move file="linux/jre1.7.0_40" tofile="linux/work/java" />
|
|
-->
|
|
<exec executable="rsync" dir="linux">
|
|
<arg value="-a" />
|
|
<arg value="--delete" />
|
|
<arg value="jre1.7.0_40/" />
|
|
<arg value="work/java" />
|
|
</exec>
|
|
<delete dir="linux/jre1.7.0_40" />
|
|
|
|
<!-- Remove unused JRE bloat. -->
|
|
<delete failonerror="true">
|
|
<fileset refid="javafx-basics" />
|
|
<fileset refid="javafx-linux-${sun.arch.data.model}" />
|
|
<fileset refid="jre-optional-linux" />
|
|
</delete>
|
|
|
|
<copy todir="linux/work/java/lib/fonts">
|
|
<fileset dir="shared/lib/fonts" includes="*" />
|
|
</copy>
|
|
|
|
</target>
|
|
|
|
<target name="linux-run" depends="linux-build"
|
|
description="Run Linux version">
|
|
<exec executable="./processing" dir="linux/work" spawn="true"/>
|
|
</target>
|
|
|
|
<target name="linux-dist" depends="linux-build"
|
|
description="Build .tar.gz of linux version">
|
|
|
|
<!--
|
|
<tar compression="gzip" destfile="linux/processing-${version}.tgz">
|
|
<tarfileset dir="linux/work" prefix="processing-${version}" />
|
|
</tar>
|
|
-->
|
|
|
|
<!-- rename the work folder temporarily -->
|
|
<move file="linux/work" tofile="linux/processing-${version}" />
|
|
|
|
<property name="linux.dist" value="linux/processing-${version}-linux${sun.arch.data.model}.tgz" />
|
|
|
|
<exec executable="tar">
|
|
<arg value="--directory=linux" />
|
|
<arg value="--file=${linux.dist}" />
|
|
<arg value="-cpz" />
|
|
<arg value="processing-${version}" />
|
|
</exec>
|
|
|
|
<!-- put... the candle... back -->
|
|
<!-- (rename the work processing-NNNN version to work) -->
|
|
<move file="linux/processing-${version}" tofile="linux/work" />
|
|
|
|
<echo>
|
|
=======================================================
|
|
Processing for Linux was built. Grab the archive from
|
|
|
|
${linux.dist}
|
|
=======================================================
|
|
</echo>
|
|
</target>
|
|
|
|
|
|
<!-- - - - - - - - -->
|
|
<!-- Windows -->
|
|
<!-- - - - - - - - -->
|
|
|
|
<target name="windows-clean" depends="subprojects-clean"
|
|
description="Clean windows version">
|
|
<delete dir="windows/work" />
|
|
</target>
|
|
|
|
<target name="windows-checkos" unless="windows">
|
|
<echo>
|
|
=======================================================
|
|
Processing for Windows can only be built on windows.
|
|
|
|
Bye.
|
|
=======================================================
|
|
</echo>
|
|
|
|
<fail message="wrong platform (${os.name})" />
|
|
</target>
|
|
|
|
<target name="windows-build"
|
|
depends="revision-check, windows-checkos, subprojects-build"
|
|
description="Build windows version">
|
|
<mkdir dir="windows/work" />
|
|
|
|
<!-- 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=".." includes="core/library/**" />
|
|
<fileset dir="shared" includes="launch4j/**" />
|
|
<fileset dir="shared" includes="lib/**" excludes="lib/fonts/**" />
|
|
<fileset dir="shared" includes="modes/**" />
|
|
<fileset file="shared/revisions.txt" />
|
|
</copy>
|
|
|
|
<fixcrlf file="windows/work/revisions.txt" eol="crlf" encoding="UTF-8" />
|
|
|
|
<antcall target="assemble">
|
|
<param name="target.path" value="windows/work" />
|
|
</antcall>
|
|
|
|
<property name="launch4j.dir" value="windows/work/modes/java/application/launch4j" />
|
|
|
|
<!-- rename the version we need -->
|
|
<move file="${launch4j.dir}/bin/windres-windows.exe"
|
|
tofile="${launch4j.dir}/bin/windres.exe" />
|
|
<move file="${launch4j.dir}/bin/ld-windows.exe"
|
|
tofile="${launch4j.dir}/bin/ld.exe" />
|
|
|
|
<!-- remove the others -->
|
|
<delete failonerror="true">
|
|
<fileset dir="${launch4j.dir}/bin" includes="ld-*" />
|
|
<fileset dir="${launch4j.dir}/bin" includes="windres-*" />
|
|
</delete>
|
|
|
|
<taskdef name="launch4j"
|
|
classname="net.sf.launch4j.ant.Launch4jTask"
|
|
classpath="${launch4j.dir}/launch4j.jar; ${launch4j.dir}/lib/xstream.jar" />
|
|
|
|
<!-- not all launch4j options are available when embedded inside this
|
|
file (i.e. the icon param doesn't work), so use a config file -->
|
|
<launch4j configFile="windows/config.xml" />
|
|
<launch4j configFile="windows/config-cmd.xml" />
|
|
|
|
<!-- cygwin requires html, dll, and exe to have the +x flag -->
|
|
<chmod perm="ugo+x">
|
|
<fileset dir="windows/work" includes="**/*.html, **/*.dll, **/*.exe" />
|
|
</chmod>
|
|
|
|
<!-- starting with 2.0a7, require the local JRE + tools.jar -->
|
|
<get src="http://processing.googlecode.com/files/${jre.file}"
|
|
dest="windows/jre.tgz"
|
|
usetimestamp="true" />
|
|
|
|
<!--
|
|
<unzip dest="windows/work" src="windows/jre.zip" overwrite="false"/>
|
|
-->
|
|
<!-- Hopefully this is OK with the permissions (unlike Linux),
|
|
since those shouldn't matter on Windows. -->
|
|
<untar compression="gzip"
|
|
dest="windows/work"
|
|
src="windows/jre.tgz"
|
|
overwrite="false" />
|
|
<move file="windows/work/jre1.7.0_40" tofile="windows/work/java" />
|
|
|
|
<!-- Remove space-wasting JavaFX garbage. -->
|
|
<delete failonerror="true">
|
|
<fileset refid="javafx-basics" />
|
|
<fileset refid="javafx-windows" />
|
|
<fileset refid="jre-optional-windows" />
|
|
</delete>
|
|
|
|
<copy todir="windows/work/java/lib/fonts">
|
|
<fileset dir="shared/lib/fonts" includes="*" />
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="windows-run" depends="windows-build"
|
|
description="Run windows version">
|
|
<exec executable="windows/work/processing.exe"
|
|
dir="windows/work" spawn="true"/>
|
|
</target>
|
|
|
|
<target name="windows-dist" depends="windows-build"
|
|
description="Create .zip files of windows version">
|
|
<!--
|
|
<zip basedir="windows/work"
|
|
prefix="processing-${version}"
|
|
destfile="windows/processing-${version}.zip" />
|
|
<zip basedir="windows/work"
|
|
prefix="processing-${version}"
|
|
destfile="windows/processing-${version}-expert.zip"
|
|
excludes="java/**" />
|
|
-->
|
|
|
|
<property name="windows.dist" value="windows/processing-${version}-windows${sun.arch.data.model}.zip" />
|
|
|
|
<zip destfile="${windows.dist}">
|
|
<zipfileset dir="windows/work"
|
|
prefix="processing-${version}" />
|
|
</zip>
|
|
|
|
<!-- Expert is too much of a headache. Just nix it for 2.0. -->
|
|
<!--
|
|
<zip destfile="windows/processing-${version}-windows-expert.zip">
|
|
<zipfileset dir="windows/work"
|
|
prefix="processing-${version}"
|
|
excludes="java/**" />
|
|
</zip>
|
|
-->
|
|
|
|
<echo>
|
|
=======================================================
|
|
Processing for Windows was built. Grab the archive from
|
|
|
|
${windows.dist}
|
|
=======================================================
|
|
</echo>
|
|
</target>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - -->
|
|
<!-- Package source 'n tag the release -->
|
|
<!-- - - - - - - - - - - - - - - - - - -->
|
|
|
|
<!--
|
|
not ready to automate this yet, since we often have to reset the tag
|
|
<target name="dist-src" depends="dist">
|
|
<exec executable="git">
|
|
remove the spaces for depth since it should be double dash, but screws up comments
|
|
<arg line="clone - -depth 1 git@github.com:processing/processing.git /tmp/processing-${version}-src" />
|
|
</exec>
|
|
</target>
|
|
-->
|
|
|
|
|
|
<!-- - - - - - - - - -->
|
|
<!-- Developer Docs -->
|
|
<!-- - - - - - - - - -->
|
|
|
|
<target name="doc">
|
|
|
|
<!-- build doc for core -->
|
|
<exec executable="find" dir="javadoc" errorproperty="ignored">
|
|
<arg line="core -type f -exec rm -rf {} ';'" />
|
|
</exec>
|
|
|
|
<javadoc access="public" author="false" classpath="../core/library/jogl-all.jar:../core/bin:../core/library/gluegen-rt.jar" destdir="javadoc/core" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" source="1.7" splitindex="false" use="false" version="false">
|
|
|
|
<!-- provide links for java.* classes.
|
|
also suppresses the java.lang prefix in the text. -->
|
|
<link href="http://docs.oracle.com/javase/7/docs/api/" />
|
|
|
|
<!-- prevent files from always appearing to have changed -->
|
|
<arg value="-notimestamp" />
|
|
|
|
<packageset dir="../core/src">
|
|
<include name="processing/**" />
|
|
</packageset>
|
|
|
|
</javadoc>
|
|
|
|
<!--
|
|
<copy file="javadoc/stylesheet.css"
|
|
tofile="javadoc/core/stylesheet.css" />
|
|
<copy file="javadoc/index.html"
|
|
tofile="javadoc/core/index.html" />
|
|
-->
|
|
|
|
<!-- build everything else -->
|
|
<exec executable="find" dir="javadoc" errorproperty="ignored">
|
|
<arg line="everything -type f -exec rm -rf {} ';'" />
|
|
</exec>
|
|
|
|
<javadoc access="public" author="false" classpath="../java/libraries/video/library/jna.jar:../java/libraries/serial/bin:lib/antlr.jar:../core/library/jogl-all.jar:../java/libraries/video/bin:lib/apple.jar:lib/jna.jar:lib/ant-launcher.jar:../java/libraries/pdf/bin:lib/ant.jar:../core/bin:../java/libraries/pdf/library/itext.jar:../java/libraries/video/library/gstreamer-java.jar:lib/org-netbeans-swing-outline.jar:../java/libraries/dxf/bin:bin:../java/libraries/net/bin:../java/libraries/serial/library/jssc.jar:../core/library/gluegen-rt.jar:${java.home}/lib/tools.jar" destdir="javadoc/everything" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" source="1.7" splitindex="false" use="false" version="false" noqualifier="all">
|
|
|
|
<arg value="-notimestamp" />
|
|
|
|
<link href="http://docs.oracle.com/javase/7/docs/api/" />
|
|
|
|
<packageset dir="../app/src">
|
|
<include name="antlr/**" />
|
|
<include name="processing/**" />
|
|
</packageset>
|
|
|
|
<packageset dir="../app/generated">
|
|
<include name="processing/**" />
|
|
</packageset>
|
|
|
|
<packageset dir="../core/src">
|
|
<include name="processing/**" />
|
|
<!--
|
|
<include name="japplemenubar/**" />
|
|
-->
|
|
</packageset>
|
|
</javadoc>
|
|
|
|
<!--
|
|
<copy file="javadoc/stylesheet.css"
|
|
tofile="javadoc/everything/stylesheet.css" />
|
|
<copy file="javadoc/index.html"
|
|
tofile="javadoc/everything/index.html" />
|
|
-->
|
|
|
|
<!-- set the MIME type so that Google Code shows the files properly -->
|
|
<!--
|
|
<exec executable="find" dir=".">
|
|
<arg line="javadoc -name '*.html' -exec svn propset svn:mime-type text/html {} ';'" />
|
|
</exec>
|
|
-->
|
|
|
|
</target>
|
|
|
|
<!-- no longer necessary because it comes straight from Google Code -->
|
|
<!--
|
|
<target name="doc-upload">
|
|
<exec executable="rsync" dir="javadoc" spawn="true">
|
|
<arg value="-avz" />
|
|
<arg value="- -delete" />
|
|
<arg value="core/" />
|
|
<arg value="fry@processing.org:dev/reference/core/javadoc/" />
|
|
</exec>
|
|
|
|
<exec executable="rsync" dir="javadoc" spawn="true">
|
|
<arg value="-avz" />
|
|
<arg value="- -delete" />
|
|
<arg value="everything/" />
|
|
<arg value="fry@processing.org:dev/reference/core/everything/" />
|
|
</exec>
|
|
|
|
rsync -avz - -delete core/ fry@processing.org:dev/reference/core/javadoc/
|
|
rsync -avz - -delete everything/ fry@processing.org:dev/reference/everything/javadoc/
|
|
</target>
|
|
-->
|
|
|
|
|
|
<!-- - - - - - - - -->
|
|
<!-- Run It! -->
|
|
<!-- - - - - - - - -->
|
|
|
|
<target name="clean" description="Perform a spring cleaning"
|
|
depends="linux-clean, windows-clean, macosx-clean, subprojects-clean">
|
|
</target>
|
|
|
|
</project>
|