blob: eb8cd02c8d2ee6c67ad5a8b5a666e1cb5bcf4b51 [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="IDEA Build" default="all_dist" basedir=".">
<taskdef name="javac2" classname="com.intellij.ant.Javac2"/>
<buildnumber/>
<target name="next-build-prepare">
<condition property="build.completed">
<equals arg1="${build.status}" arg2="completed"/>
</condition>
</target>
<target name="next-build" depends="next-build-prepare" if="build.completed">
<echo message="next-build: Increment build number if previous build was completed"/>
<cvs command="ci -m 'New version' version.properties" failonerror="false" />
</target>
<!-- set global properties for this build -->
<property name="build.compiler" value="modern" />
<property name="vcs.user.name" value="${idea.user.name}" />
<property name="vcs.user.password" value="${idea.user.password}" />
<!-- This property is used to copy dist to shared directory -->
<property name="dist.shared" value="${basedir}/../../builds"/>
<!--shortcuts-->
<property name="idea.build.path" value="${basedir}/temp" />
<property name="idea.build.lib" value="${basedir}/lib" />
<property name="idea.build.conf" value="${basedir}/conf" />
<property name="idea.build.plugins" value="${idea.build.path}/plugins" />
<property name="idea.build.classes.scrambled" value="${idea.build.path}/scrambled" />
<property name="idea.dist.path" value="${basedir}/out" />
<property name="idea.dist.logs" value="${idea.dist.path}/logs" />
<property name="tarball.root" value="idea-${build.number}"/>
<!-- Install Anywhere -->
<property name="idea.ia.data.path" value="${basedir}/../../IawData"/>
<property name="idea.ia.icons.path" value="${idea.ia.data.path}/icons"/>
<property name="idea.ia.build.path" value="${idea.ia.data.path}/build"/>
<property name="starteam.root.folder" value="/idea"/>
<property name="idea.project.name" value="Aurora" />
<property name="cvs.module.name" value="${idea.project.name}" />
<property name="help.project.name" value="AriadnaHelp" />
<property name="idea.project.path" value="${idea.build.path}/${idea.project.name}" />
<property name="idea.project.classes" value="${idea.project.path}/classes" />
<property name="idea.project.lib" value="${idea.project.path}/lib" />
<property name="idea.project.plugins" value="${idea.project.path}/plugins" />
<property name="idea.project.plugins.uiDesigner" value="${idea.project.path}/plugins/uiDesigner" />
<property name="idea.project.plugins.uiDesigner.src" value="${idea.project.plugins.uiDesigner}/source" />
<property name="idea.project.plugins.uiDesigner.forms" value="${idea.project.plugins.uiDesigner}/forms_rt_classes" />
<property name="idea.project.plugins.uiDesigner.scrambled" value="${idea.project.plugins.uiDesigner}/scrambled" />
<property name="idea.project.plugins.cvs2" value="${idea.project.path}/plugins/cvs2" />
<property name="idea.project.plugins.cvs2.src" value="${idea.project.plugins.cvs2}/source" />
<property name="idea.project.plugins.cvs2.javacvs" value="${idea.project.plugins.cvs2}/javacvs-src" />
<property name="idea.project.plugins.cvs2.smartcvs" value="${idea.project.plugins.cvs2}/smartcvs-src" />
<property name="idea.project.plugins.cvs2.metainf" value="${idea.project.plugins.cvs2}/META-INF" />
<property name="idea.project.plugins.cvs2.scrambled" value="${idea.pr<caret>oject.plugins.cvs2.src}/scrambled" />
<property name="idea.project.src" value="${idea.project.path}/source" />
<property name="idea.project.src.runtime" value="${idea.project.path}/runtimesource"/>
<property name="idea.project.classes.runtime" value="${idea.project.src.runtime}/classes"/>
<property name="idea.project.help" value="${idea.project.path}/help" />
<property name="idea.project.license" value="${idea.project.path}/license"/>
<property name="idea.project.icons" value="${idea.project.path}/icons" />
<property name="idea.project.icons.build" value="${idea.project.path}/build/images/idea"/>
<property name="idea.project.resources" value="${idea.project.path}/resources" />
<property name="idea.project.bin" value="${idea.project.path}/bin" />
<property name="idea.project.doc" value="${idea.project.path}/doc" />
<property name="aspects.runtime.src" value="${idea.project.path}/rtaspectsource" />
<property name="aspects.runtime.classes" value="${aspects.runtime.src}/classes" />
<property name="idea.openapi.doc" value="${idea.project.doc}/openapi/javadoc" />
<property name="idea.openapi.src" value="${idea.build.path}/openapisrc" />
<property name="idea.openapi.classes" value="${idea.build.path}/openapiclasses" />
<property name="idea.openapi.stub" value="${idea.build.path}/openapistub"/>
<taskdef name="java118compiler" classname="Java118CompilerAntTask" classpath="${idea.build.lib}/118Compiler.zip"/>
<!--tasks-->
<target name="checkout-prepare" unless="vcs.label">
<tstamp>
<format property="nowstamp" pattern="yyyyMMddHHmmss" locale="en"/>
</tstamp>
<property name="vcs.label" value="Build_${build.number}_${nowstamp}"/>
<cvs
command="rtag ${vcs.label}"
package="${cvs.module.name}"
failonerror="true"/>
<!-- Checkout alternative CVS2 sources -->
<cvs
cvsroot="${alt.cvs.root}"
command="rtag ${vcs.label}"
package="${alt.cvs.project.1}"/>
<cvs
cvsroot="${alt.cvs.root}"
command="rtag ${vcs.label}"
package="${alt.cvs.project.2}"/>
<!-- CVS2 end -->
<!--
<exec executable="${starteam.executable}" failonerror="true">
<arg value="label"/>
<arg value="-p"/>
<arg value="${vcs.user.name}:${vcs.user.password}@Main:49201/${help.project.name}/${help.project.name}"/>
<arg value="-x"/>
<arg value="-stop"/>
<arg value="-nl"/>
<arg value="${vcs.label}"/>
</exec>
-->
</target>
<target name="checkout" depends="checkout-prepare">
<echo message="Use label : ${vcs.label}"/>
<cvs
command="export -r ${vcs.label}"
package="${cvs.module.name}"
dest="${idea.build.path}"
failonerror="true"/>
<!-- CVS2 -->
<cvs
cvsroot="${alt.cvs.root}"
command="export -r ${vcs.label}"
package="${alt.cvs.project.1}"
dest="${idea.project.plugins.cvs2}"
failonerror="true"/>
<cvs
cvsroot="${alt.cvs.root}"
command="export -r ${vcs.label}"
package="${alt.cvs.project.2}"
dest="${idea.project.plugins.cvs2}"
failonerror="true"/>
<!-- CVS2 end-->
<tstamp>
<format property="nowstamp" pattern="yyyyMMddHHmmss" locale="en"/>
</tstamp>
<!--
<stcheckout
URL="Main:49201/${help.project.name}/${help.project.name}"
username="${vcs.user.name}"
password="${vcs.user.password}"
rootstarteamfolder="${starteam.root.folder}"
rootlocalfolder="${idea.project.help}/idea"
label="${vcs.label}"
forced="true"
deleteuncontrolled="false"
/>
-->
</target>
<target name="prepare">
<echo message="Building #${build.number}"/>
<mkdir dir="${idea.dist.path}" />
<mkdir dir="${idea.dist.logs}" />
<mkdir dir="${idea.build.path}" />
<antcall target="checkout"/>
<!--exclude Fabrique sources from build-->
<delete failonerror="false">
<fileset dir="${idea.project.path}/Fabrique" includes="**/*.*" />
</delete>
<mkdir dir="${idea.project.classes}" />
<mkdir dir="${idea.build.plugins}" />
<mkdir dir="${idea.build.classes.scrambled}" />
<mkdir dir="${idea.openapi.doc}" />
<mkdir dir="${idea.openapi.classes}" />
<fixcrlf srcdir="${idea.project.bin}" eol="lf" eof="remove" includes="**/*.sh" />
</target>
<target name="help-index">
<property name="help.dir" value="${idea.project.path}/help/idea"/>
<copy file="${idea.project.path}/build/help/ignore.txt" todir="${help.dir}"/>
<java
classname="com.intellij.internalUtilities.helpIndex.HelpIndexConfBuilder"
fork="yes"
dir="${help.dir}"
failonerror="true">
<jvmarg value="-Didea.home.path=${idea.project.path}"/>
<!--<jvmarg value="-Xbootclasspath/p:${idea.project.lib}/generics/gjc-rt.jar"/>-->
<classpath>
<pathelement location="${idea.project.classes}"/>
</classpath>
</java>
<java
classname="com.sun.java.help.search.Indexer"
fork="yes"
dir="${help.dir}"
failonerror="true">
<classpath>
<pathelement location="${idea.project.path}/build/help/jhall.jar"/>
</classpath>
<jvmarg value="-Didea.home.path=${idea.project.path}"/>
<arg value="-c"/>
<arg value="indexgen.conf"/>
</java>
<delete file="${help.dir}/ignore.txt"/>
<delete file="${help.dir}/indexgen.conf"/>
</target>
<target name="compile">
<!-- compile aspects -->
<ant dir="${idea.project.src}/com/intellij/aspects" />
<antcall target="build-runtimesource-122"/>
<mkdir dir="${aspects.runtime.classes}"/>
<javac2
destdir="${aspects.runtime.classes}"
debug="on"
source="1.4"
includeAntRuntime="no">
<src path="${aspects.runtime.src}"/>
</javac2>
<move todir="${idea.project.classes}">
<fileset dir="${idea.project.classes}/main"/>
</move>
<javac2
destdir="${idea.project.classes}"
debug="on"
source="1.5"
fork="true"
includeAntRuntime="no">
<compilerarg value="-J-Xbootclasspath/p:${idea.project.lib}/generics/gjc-rt.jar" />
<compilerarg value="-J-Xmx256m"/>
<src path="${idea.project.src}"/>
<src path="${idea.project.plugins.uiDesigner.src}"/>
<src path="${idea.project.plugins.cvs2.javacvs}"/>
<src path="${idea.project.plugins.cvs2.smartcvs}"/>
<src path="${idea.project.plugins.cvs2.src}"/>
<exclude name="**/CreateModuleCommand.java"/>
<bootclasspath>
<pathelement location="${idea.project.lib}/generics/collect.jar" />
<pathelement location="${idea.jdk.home}/jre/lib/rt.jar" />
</bootclasspath>
<classpath>
<fileset dir="${idea.project.lib}">
<include name="*.jar" />
<exclude name="**/collect.jar"/>
<exclude name="**/gjc-rt.jar"/>
</fileset>
<!-- <pathelement location="${idea.project.lib}/rt/generics/2.0/collect.jar"/>-->
<pathelement location="${idea.project.classes}"/>
<pathelement location="${aspects.runtime.classes}" />
<pathelement location="${idea.build.lib}/javac2.jar"/> <!--needed for form compiler-->
<pathelement location="${idea.project.lib}/dev/mockweblogic.jar"/>
<pathelement location="${idea.project.lib}/rt/jasper_compiler.jar"/>
<pathelement location="${idea.project.lib}/rt/jasper_runtime.jar"/>
<pathelement location="${idea.project.lib}/rt/j2ee.jar"/>
<pathelement location="${idea.build.path}/idea_rt.jar"/>
<pathelement location="${idea.jdk.home}/lib/tools.jar" />
</classpath>
</javac2>
<!--delete GLUE integration classes!-->
<delete>
<fileset dir="${idea.project.classes}/com/intellij/glue" includes="**/*.*" />
</delete>
</target>
<target name="generate-rgs">
<copy todir="${idea.project.classes}" includeEmptyDirs="no">
<fileset dir="${idea.project.resources}" />
</copy>
<copy todir="${idea.project.classes}" includeEmptyDirs="no">
<fileset dir="${idea.project.src}">
<exclude name="**/*.java"/>
<exclude name="**/test/"/>
</fileset>
<fileset dir="${idea.project.plugins.uiDesigner.src}">
<exclude name="**/*.java"/>
<exclude name="**/test/"/>
</fileset>
</copy>
<java
classname="com.intellij.internalUtilities.generateRGS.GenerateRGS"
fork="yes"
dir="${idea.project.bin}"
failonerror="true" >
<!-- source path-->
<arg value="${idea.project.src},${idea.project.plugins.cvs2.src},${idea.project.plugins.uiDesigner.src}" />
<!-- defaults path -->
<arg value="${idea.project.resources}" />
<!-- lib path -->
<arg value="${idea.project.lib}" />
<!-- input file -->
<arg value="${idea.build.conf}/script.zkm.stub" />
<!-- output file -->
<arg value="${idea.build.path}/script.zkm" />
<!-- output format -->
<arg value="ZELIX_KLASSMASTER" />
<!--<jvmarg value="-Xbootclasspath/p:${idea.project.lib}/generics/gjc-rt.jar"/>-->
<jvmarg value="-Didea.plugins.load=false"/>
<jvmarg value="-Xdebug"/>
<jvmarg value="-Xnoagent"/>
<jvmarg value="-Djava.compiler=NONE"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5200"/>
<jvmarg value="-mx200m" />
<jvmarg value="-Didea.home.path=${idea.project.path}"/>
<classpath>
<fileset dir="${idea.project.lib}">
<include name="*.jar" />
<exclude name="**/collect.jar"/>
<exclude name="**/gjc-rt.jar"/>
</fileset>
<pathelement location="${idea.jdk.home}/lib/tools.jar"/>
<pathelement location="${idea.project.lib}/dev/mockweblogic.jar"/>
<pathelement location="${idea.project.lib}/rt/jasper_compiler.jar"/>
<pathelement location="${idea.project.lib}/rt/jasper_runtime.jar"/>
<pathelement location="${idea.project.lib}/jdom.jar"/>
<pathelement location="${idea.project.lib}/rt/j2ee.jar"/>
<pathelement location="${idea.project.classes}" />
<pathelement location="${idea.project.icons}" />
</classpath>
</java>
<replace dir="${idea.build.path}" includes="**/script.zkm" token="__CLASSES__" value="${idea.project.classes}" />
<replace dir="${idea.build.path}" includes="**/script.zkm" token="__SCRAMBLED_CLASSES__" value="${idea.build.classes.scrambled}" />
</target>
<target name="scramble">
<java
classname="ZKM"
fork="yes"
failonerror="true">
<jvmarg value="-mx400m" />
<arg value="${idea.build.path}/script.zkm" />
<classpath>
<fileset dir="${idea.project.lib}">
<include name="*.jar" />
</fileset>
<pathelement location="${aspects.runtime.classes}" />
<pathelement location="${idea.project.lib}/dev/mockweblogic.jar"/>
<pathelement location="${idea.project.lib}/rt/jasper_compiler.jar"/>
<pathelement location="${idea.project.lib}/rt/jasper_runtime.jar"/>
<pathelement location="${idea.project.lib}/rt/j2ee.jar"/>
<pathelement location="${idea.build.path}/idea_rt.jar"/>
<pathelement location="${idea.build.lib}/ZKM.jar" />
<pathelement location="${idea.jdk.home}/lib/tools.jar" />
</classpath>
</java>
<move file="ChangeLog.txt" tofile="${idea.dist.logs}/zkm${build.number}.log" />
<move file="ZKM_log.txt" tofile="${idea.dist.logs}/ZKM_log_${build.number}.txt" />
<!--<move file="ZKM_O.ser" tofile="${idea.dist.logs}/${build.number}/ZKM_O.ser" /> -->
</target>
<target name="copy-resources">
<tstamp/>
<replace dir="${idea.project.resources}/idea" includes="**/ApplicationInfo.xml" token="__BUILD_NUMBER__" value="${build.number}" />
<replace dir="${idea.project.resources}/idea" includes="**/ApplicationInfo.xml" token="__BUILD_DATE__" value="${DSTAMP}" />
<!--copy resources to main version-->
<copy todir="${idea.project.classes}" includeEmptyDirs="no">
<fileset dir="${idea.project.src}">
<exclude name="**/test/"/>
<exclude name="**/*.java"/>
<exclude name="**/*.aj"/>
<exclude name="**/*.template"/>
<exclude name="**/*.psi"/>
<exclude name="**/*.g"/>
<exclude name="**/*.diff"/>
<exclude name="**/*.txt"/>
<exclude name="**/*.log"/>
<exclude name="**/*.form"/>
</fileset>
</copy>
<copy todir="${idea.project.classes}" includeEmptyDirs="no">
<fileset dir="${idea.project.resources}" />
</copy>
<!-- copy defaults to scrambled version -->
<copy todir="${idea.build.classes.scrambled}" includeEmptyDirs="no">
<fileset dir="${idea.project.src}">
<exclude name="**/test/"/>
<exclude name="**/*.java"/>
<exclude name="**/*.aj"/>
<exclude name="**/*.template"/>
<exclude name="**/*.psi"/>
<exclude name="**/*.g"/>
<exclude name="**/*.diff"/>
<exclude name="**/*.txt"/>
<exclude name="**/*.log"/>
<exclude name="**/*.form"/>
</fileset>
</copy>
<delete>
<fileset dir="${idea.build.classes.scrambled}" includes="**/*.xxx" />
</delete>
<!--create mangled version of defaults-->
<java
classname="com.intellij.internalUtilities.generateRGS.ResourceMangler"
fork="yes"
dir="${idea.project.resources}"
failonerror="true">
<arg value="${idea.dist.logs}/zkm${build.number}.log" />
<arg value="${idea.project.resources}" />
<jvmarg value="-Didea.home.path=${idea.project.path}"/>
<!--<jvmarg value="-Xbootclasspath/p:${idea.project.lib}/generics/gjc-rt.jar"/>-->
<classpath>
<fileset dir="${idea.project.lib}">
<include name="*.jar" />
</fileset>
<pathelement location="${idea.project.lib}/dev/mockweblogic.jar"/>
<pathelement location="${idea.project.classes}" />
</classpath>
</java>
<copy todir="${idea.dist.logs}/${build.number}">
<fileset dir="${idea.project.resources}" includes="*_mangled.xml" />
</copy>
<!--copy defaults with XOR -->
<java
classname="CopyDefaults"
fork="yes"
dir="${idea.project.resources}"
failonerror="true" >
<arg value="${idea.project.resources}" />
<arg value="${idea.build.classes.scrambled}" />
<arg value="3425" />
<classpath>
<pathelement location="${idea.build.lib}" />
</classpath>
</java>
</target>
<target name="openapi">
<mkdir dir="${idea.openapi.classes}/com/intellij/openapi" />
<copy todir="${idea.openapi.classes}/com/intellij/openapi" includeEmptyDirs="no">
<fileset dir="${idea.build.classes.scrambled}/com/intellij/openapi" />
</copy>
<java
classname="DirectorySynchronizer"
fork="yes"
failonerror="true">
<arg value="${idea.openapi.src}/com/intellij/openapi" />
<arg value="${idea.openapi.classes}/com/intellij/openapi" />
<classpath>
<pathelement location="${idea.build.lib}" />
</classpath>
</java>
<javadoc
packagenames="com.intellij.openapi.*"
sourcepath="${idea.openapi.src}"
defaultexcludes="yes"
destdir="${idea.openapi.doc}"
author="false"
version="true"
use="true"
windowtitle="IntelliJ IDEA Open API"/>
<!-- Generate openapi stub -->
<mkdir dir="${idea.openapi.stub}/com/intellij/openapi"/>
<copy todir="${idea.openapi.stub}/com/intellij/openapi" includeemptydirs="no">
<fileset dir="${idea.openapi.src}/com/intellij/openapi"/>
</copy>
<java
classname="com.intellij.internalUtilities.stripper.Main"
fork="yes"
dir="${idea.project.bin}"
failonerror="true">
<jvmarg value="-Didea.home.path=${idea.project.path}"/>
<arg value="com.intellij.openapi"/>
<arg value="${idea.openapi.stub}"/>
<jvmarg value="-mx200m"/>
<!--<jvmarg value="-Xbootclasspath/p:${idea.project.lib}/generics/gjc-rt.jar"/>-->
<classpath>
<fileset dir="${idea.project.lib}">
<include name="*.jar"/>
</fileset>
<fileset dir="${idea.project.lib}/rt">
<include name="*.jar"/>
</fileset>
<pathelement location="${idea.project.lib}/dev/mockweblogic.jar"/>
<pathelement location="${idea.project.classes}"/>
<pathelement location="${idea.project.icons}"/>
</classpath>
</java>
<zip
zipfile="${idea.build.path}/openapi_stub.zip"
basedir="${idea.openapi.stub}"
compress="true"/>
<copy
file="${idea.project.resources}/idea/ActionManager.xml"
tofile="${idea.project.doc}/openapi/ActionManager.xml" />
<java
classname="com.intellij.internalUtilities.generateRGS.ClassNameStripper"
fork="yes"
dir="${idea.project.resources}"
failonerror="true">
<jvmarg value="-Didea.home.path=${idea.project.path}"/>
<arg value="${idea.project.doc}/openapi/ActionManager.xml" />
<!--<jvmarg value="-Xbootclasspath/p:${idea.project.lib}/generics/gjc-rt.jar"/>-->
<classpath>
<fileset dir="${idea.project.lib}">
<include name="*.jar" />
</fileset>
<pathelement location="${idea.project.lib}/dev/mockweblogic.jar"/>
<pathelement location="${idea.project.classes}" />
</classpath>
</java>
</target>
<target name="jar">
<jar
jarfile="${idea.build.path}/idea_unscrambled.jar"
basedir="${idea.project.classes}"
compress="false" >
</jar>
<mkdir dir="${idea.dist.path}/unscrambled" />
<mkdir dir="${idea.dist.path}/unscrambled/${build.number}" />
<copy
file="${idea.build.path}/idea_unscrambled.jar"
tofile="${idea.dist.path}/unscrambled/${build.number}/idea.jar" />
<delete file="${idea.build.path}/idea_unscrambled.jar" />
<!--
<move todir="${idea.project.plugins.cvs2.scrambled}/com/intellij/cvsSupport2">
<fileset dir="${idea.build.classes.scrambled}/com/intellij/cvsSupport2"/>
</move>
-->
<copy todir="${idea.project.plugins.cvs2.scrambled}/META-INF">
<fileset dir="${idea.project.plugins.cvs2.metainf}"/>
</copy>
<copy todir="${idea.build.classes.scrambled}">
<fileset dir="${idea.project.classes}">
<include name="**/*.xml"/>
<include name="*.xml"/>
<include name="**/icons/*.*"/>
</fileset>
</copy>
<jar
jarfile="${idea.build.path}/idea.jar"
basedir="${idea.build.classes.scrambled}"
compress="false" >
<exclude name="**/componentSets/*.xml"/>
<exclude name="**/idea/*.xml"/>
<exclude name="**/uiDesigner.Palette.xml"/>
<exclude name="**/parserGenTemplates/"/>
<exclude name="**/uiDesigner/"/>
<exclude name="**/internalUtilities/"/>
<exclude name="**/ClassTemplateManager.xml"/>
<exclude name="**/DebuggerSettings.xml"/>
<exclude name="**/DefaultCodeStyleSchemes.xml"/>
<exclude name="**/DefaultColorSchemesManager.xml"/>
<exclude name="**/FileTypeManager.xml"/>
<exclude name="**/IdeaTestComponents.xml"/>
</jar>
<jar
jarfile="${idea.build.path}/cvsIntegration.jar"
basedir="${idea.project.plugins.cvs2.scrambled}"
compress="false" />
<jar
jarfile="${idea.build.path}/aspect_rt.jar"
basedir="${aspects.runtime.classes}"
compress="false" />
<copy todir="${idea.project.plugins.uiDesigner.scrambled}/META-INF">
<fileset dir="${idea.project.plugins.uiDesigner}/META-INF"/>
</copy>
<copy todir="${idea.project.plugins.uiDesigner.scrambled}/com/intellij/uiDesigner">
<fileset dir="${idea.build.classes.scrambled}/com/intellij/uiDesigner"/>
</copy>
<copy todir="${idea.project.plugins.uiDesigner.scrambled}">
<fileset dir="${idea.project.plugins.uiDesigner.src}">
<include name="*.xml"/>
</fileset>
</copy>
<!-- build uiDesigner jars -->
<!-- build forms_rt.jar -->
<jar basedir="${idea.project.plugins.uiDesigner.scrambled}"
jarfile="${idea.project.plugins.uiDesigner}/forms_rt.jar">
<include name="**/core/*.class"/>
</jar>
<mkdir dir="${idea.project.plugins.uiDesigner.scrambled}/fileTemplates"/>
<copy todir="${idea.project.plugins.uiDesigner.scrambled}/fileTemplates" includeEmptyDirs="no">
<fileset dir="${idea.project.plugins.uiDesigner.src}/fileTemplates">
<include name="**/*.ft"/>
</fileset>
</copy>
<!-- build uiDesigner.jar -->
<jar basedir="${idea.project.plugins.uiDesigner.scrambled}"
jarfile="${idea.project.plugins.uiDesigner}/uiDesigner.jar">
<include name="**/*"/>
<exclude name="**/core/"/>
</jar>
<mkdir dir="${idea.dist.path}/source" />
<zip
zipfile="${idea.dist.path}/source/src${build.number}.zip"
compress="true" >
<fileset dir="${idea.project.src}"/>
<fileset dir="${idea.project.src.runtime}"/>
<fileset dir="${idea.project.plugins.uiDesigner.src}"/>
<fileset dir="${idea.project.plugins.cvs2.javacvs}"/>
<fileset dir="${idea.project.plugins.cvs2.smartcvs}"/>
<fileset dir="${idea.project.plugins.cvs2.src}"/>
</zip>
<copy todir="${idea.dist.path}/source">
<fileset dir="${idea.build.conf}/prj"/>
</copy>
<replace file="${idea.dist.path}/source/source.iml" token="@@@" value="${build.number}" />
<rename src="${idea.dist.path}/source/source.iml" dest="${idea.dist.path}/source/${build.number}.iml"/>
<rename src="${idea.dist.path}/source/source.ipr" dest="${idea.dist.path}/source/${build.number}.ipr"/>
<zip
zipfile="${idea.dist.path}/source/defaults${build.number}.zip"
basedir="${idea.project.resources}"
compress="true" />
<jar jarfile="${idea.build.path}/openapi.jar"
basedir="${idea.openapi.classes}"
compress="false" />
</target>
<target name="prepare-dist-folders">
<mkdir dir="${idea.build.path}/dist.${dist.os}"/>
<mkdir dir="${idea.build.path}/dist.${dist.os}/license"/>
<mkdir dir="${idea.build.path}/dist.${dist.os}/plugins"/>
<mkdir dir="${idea.build.path}/dist.${dist.os}/doc"/>
<mkdir dir="${idea.build.path}/dist.${dist.os}/help"/>
<copy file="${idea.build.conf}/log.xml"
tofile="${idea.build.path}/dist.${dist.os}/bin/log.xml"/>
<mkdir dir="${idea.build.path}/dist.${dist.os}/help/idea/tips"/>
<copy todir="${idea.build.path}/dist.${dist.os}/help/idea/tips">
<fileset dir="${idea.project.help}/idea/tips"/>
</copy>
<copy todir="${idea.build.path}/dist.${dist.os}/doc">
<fileset dir="${idea.project.doc}">
<include name="**"/>
</fileset>
</copy>
<copy
file="${idea.build.path}/openapi_stub.zip"
todir="${idea.build.path}/dist.${dist.os}/doc"/>
<copy
todir="${idea.build.path}/dist.${dist.os}/lib"
includeemptydirs="false">
<fileset dir="${idea.project.lib}"
includesfile="${idea.project.lib}/required_for_dist.txt"/>
<fileset dir="${idea.build.path}">
<include name="idea.jar"/>
<include name="idea_rt.jar"/>
<include name="aspect_rt.jar"/>
<include name="openapi.jar"/>
</fileset>
<fileset dir="${idea.project.plugins.uiDesigner}">
<include name="forms_rt.jar"/>
</fileset>
</copy>
<copy todir="${idea.build.path}/dist.${dist.os}/lib/rt">
<fileset dir="${idea.project.lib}/rt"
includesfile="${idea.project.lib}/rt/required_for_dist.txt"/>
</copy>
<copy todir="${idea.build.path}/dist.${dist.os}">
<fileset dir="${idea.project.path}">
<include name="Changes.txt"/>
<include name="Readme.txt"/>
<include name="KnownIssues.txt"/>
</fileset>
</copy>
<copy todir="${idea.build.path}/dist.${dist.os}/license">
<fileset dir="${idea.project.license}">
<include name="**"/>
</fileset>
</copy>
<echo message="${build.number}"
file="${idea.build.path}/dist.${dist.os}/build.txt"/>
<zip
zipfile="${idea.build.path}/dist.${dist.os}/lib/icons.jar"
basedir="${idea.project.icons}" includes="**/*.*" compress="false"/>
</target>
<target
name="plugins-dist"
description="Make plugins dists">
<antcall target="deploy-plugin-starteam-integration">
<param name="distribution.dir" value="${idea.build.path}/dist.${dist.os}/plugins"/>
</antcall>
<antcall target="deploy-plugin-tomcat-integration">
<param name="distribution.dir" value="${idea.build.path}/dist.${dist.os}/plugins"/>
</antcall>
<antcall target="deploy-plugin-cvs-integration">
<param name="distribution.dir" value="${idea.build.path}/dist.${dist.os}/plugins"/>
</antcall>
<antcall target="deploy-plugin-uiDesigner">
<param name="distribution.dir" value="${idea.build.path}/dist.${dist.os}/plugins"/>
</antcall>
</target>
<target name="prepare-dist">
<antcall target="prepare-dist-folders">
<param name="dist.os" value="all"/>
</antcall>
<antcall target="plugins-build"/>
<!-- copy UI Designer plugin files -->
<mkdir dir="${idea.build.plugins}/uiDesigner/lib"/>
<copy todir="${idea.build.plugins}/uiDesigner/lib" file="${idea.project.plugins.uiDesigner}/forms_rt.jar"/>
<copy todir="${idea.build.plugins}/uiDesigner/lib" file="${idea.project.plugins.uiDesigner}/uiDesigner.jar"/>
<antcall target="plugins-dist">
<param name="dist.os" value="all"/>
</antcall>
<mkdir dir="${idea.build.path}/dist.all/lib1"/>
<copy todir="${idea.build.path}/dist.all/lib1">
<fileset dir="${idea.project.lib}">
<include name="JNIWrap.jar"/>
</fileset>
</copy>
<copy file="${idea.project.plugins.uiDesigner}/forms_rt.jar" todir="${idea.build.path}/dist.all/lib1"/>
<move file="${idea.build.path}/dist.all/lib/idea.jar" todir="${idea.build.path}/dist.all/lib1"/>
<move file="${idea.build.path}/dist.all/lib/jdom.jar" todir="${idea.build.path}/dist.all/lib1"/>
<move file="${idea.build.path}/dist.all/lib/log4j.jar" todir="${idea.build.path}/dist.all/lib1"/>
<copy todir="${idea.build.path}/dist.all/bin">
<fileset dir="${idea.project.bin}"/>
</copy>
<copy todir="${idea.build.path}/dist.all/bin/icons">
<fileset dir="${idea.project.icons.build}"/>
</copy>
<mkdir dir="${idea.build.path}/dist.all/log"/>
<antcall target="build-installer-utils-122"/>
<copy file="${idea.build.path}/installer.jar" todir="${idea.build.path}/dist.all"/>
<copy todir="${idea.build.path}/dist.all">
<fileset dir="${idea.project.path}/build/exe"/>
</copy>
<echo
append="true"
file="${idea.build.path}/dist.all/log/install.ini"
message="fixdirs=doc:help:lib:plugins:license"/>
<echo
append="true"
file="${idea.build.path}/dist.all/log/idea_install_custom.log"
message="Install log file"/>
<mkdir dir="${idea.build.path}/dist.all/formac/idea.app/Contents"/>
<mkdir dir="${idea.build.path}/dist.all/formac/idea.app/Contents/MacOS"/>
<copy
file="${idea.project.path}/build/mac/Info.plist"
todir="${idea.build.path}/dist.all/formac/idea.app/Contents"/>
<copy
file="${idea.project.path}/build/mac/idea"
todir="${idea.build.path}/dist.all/formac/idea.app/Contents/MacOS"/>
</target>
<target name="build-installer-utils-122">
<!-- prepare -->
<mkdir dir="${idea.build.path}/installer_utils"/>
<exec
dir="${idea.project.path}/build/installer"
executable="cmd.exe"
failonerror="true">
<arg line="/c dir /b /s /a-d source > ${idea.build.path}/installer_utils_dir.txt"/>
</exec>
<!-- compile -->
<exec executable="${idea.jdk.12.javac}" failonerror="true">
<arg value="-classpath"/>
<arg value="${idea.project.path}/build/installer/lib/IAClasses.zip"/>
<arg value="-sourcepath"/>
<arg value="${idea.project.path}/build/installer/source"/>
<arg value="-d"/>
<arg value="${idea.build.path}/installer_utils"/>
<arg value="@${idea.build.path}/installer_utils_dir.txt"/>
</exec>
<!-- jar -->
<copy
file="${idea.project.path}/license/IDEA_license.txt"
todir="${idea.build.path}/installer_utils"/>
<copy
file="${idea.project.path}/Readme.txt"
tofile="${idea.build.path}/installer_utils/IDEA_readme.txt"/>
<echo
append="true"
file="${idea.build.path}/installer_utils/ideacustomcode.ini"
message="fixdirs=doc:help:lib:plugins:license"/>
<echo
file="${idea.build.path}/installer_utils/com/intellij/build.txt"
message="buildNumber=${build.number}"/>
<jar
basedir="${idea.build.path}/installer_utils"
destfile="${idea.build.path}/installer.jar"/>
</target>
<target
name="dist-win"
depends="jar,prepare-dist"
description="Make Windows distributions">
<antcall target="prepare-dist-folders">
<param name="dist.os" value="win"/>
</antcall>
<antcall target="plugins-dist">
<param name="dist.os" value="win"/>
</antcall>
<copy todir="${idea.build.path}/dist.win/lib">
<fileset dir="${idea.project.lib}">
<include name="JNIWrap.jar" />
</fileset>
</copy>
<copy todir="${idea.build.path}/dist.win/bin">
<fileset dir="${idea.project.bin}">
<exclude name="*.sh"/>
<exclude name="*.so"/>
<exclude name="*.license"/>
</fileset>
<fileset dir="${idea.project.icons.build}">
<include name="idea.ico"/>
<include name="inspection.ico"/>
</fileset>
</copy>
</target>
<target name="dist-unix" depends="jar, prepare-dist">
<antcall target="prepare-dist-folders">
<param name="dist.os" value="unix"/>
</antcall>
<antcall target="plugins-dist">
<param name="dist.os" value="unix"/>
</antcall>
<copy todir="${idea.build.path}/dist.unix/bin" includeemptydirs="false" >
<fileset dir="${idea.project.bin}">
<exclude name="jikes/**/*.*"/>
<exclude name="*.license" />
<exclude name="*.bat" />
<exclude name="*.dll" />
<exclude name="*.pif" />
<exclude name="*.lic" />
</fileset>
<fileset dir="${idea.project.icons.build}">
<include name="idea*.png"/>
<include name="inspection*.png"/>
</fileset>
</copy>
<copy file="${idea.project.path}/Install.txt" todir="${idea.build.path}/dist.unix"/>
</target>
<target
name="tar-unix"
depends="dist-unix"
description="Makes a tar.gz files with a Unix distribution">
<mkdir dir="${idea.dist.path}/${build.number}/unix" />
<mkdir dir="${idea.build.path}/for_tar/${tarball.root}"/>
<copy todir="${idea.build.path}/for_tar/${tarball.root}">
<fileset dir="${idea.build.path}/dist.unix"/>
</copy>
<tar tarfile="${idea.dist.path}/${build.number}/unix/idea${build.number}.tar">
<tarfileset dir="${idea.build.path}/for_tar/${tarball.root}/.." mode="750">
<include name="${tarball.root}/bin/*.sh"/>
</tarfileset>
<tarfileset dir="${idea.build.path}/for_tar/${tarball.root}/..">
<include name="${tarball.root}/**"/>
<exclude name="${tarball.root}/bin/*.sh"/>
</tarfileset>
</tar>
<gzip
src="${idea.dist.path}/${build.number}/unix/idea${build.number}.tar"
zipfile="${idea.dist.path}/${build.number}/unix/idea${build.number}.tar.gz" />
<delete file="${idea.dist.path}/${build.number}/unix/idea${build.number}.tar"/>
<copy file="${idea.project.path}/jres/vm.tar.Z"
tofile="${idea.dist.path}/${build.number}/unix/idea${build.number}-linux_jre.tar.gz"/>
<!-- make a full tar.gz -->
<gunzip src="${idea.project.path}/jres/vm.tar.Z" dest="${idea.build.path}/for_tar/${tarball.root}/vm.tar"/>
<untar src="${idea.build.path}/for_tar/${tarball.root}/vm.tar"
dest="${idea.build.path}/for_tar/${tarball.root}/"/>
<delete file="${idea.build.path}/for_tar/${tarball.root}/vm.tar"/>
<copy
file="${idea.build.path}/for_tar/${tarball.root}/jre/lib/i386/libjsig.so"
todir="${idea.build.path}/for_tar/${tarball.root}/jre/lib/i386/client" overwrite="yes"/>
<copy
file="${idea.build.path}/for_tar/${tarball.root}/jre/lib/i386/libjsig.so"
todir="${idea.build.path}/for_tar/${tarball.root}/jre/lib/i386/server" overwrite="yes"/>
<copy
file="${idea.project.path}/build/Install-Linux-tar.txt"
tofile="${idea.build.path}/for_tar/${tarball.root}/Install-Linux.txt"/>
<tar tarfile="${idea.dist.path}/${build.number}/unix/idea${build.number}-full.tar">
<tarfileset dir="${idea.build.path}/for_tar" mode="750">
<include name="${tarball.root}/jre/bin/*.*"/>
</tarfileset>
<tarfileset dir="${idea.build.path}/for_tar" mode="750">
<include name="${tarball.root}/bin/*.sh"/>
<exclude name="${tarball.root}/jre/bin/*.*"/>
</tarfileset>
<tarfileset dir="${idea.build.path}/for_tar" mode="644">
<include name="${tarball.root}/**"/>
<exclude name="${tarball.root}/bin/*.sh"/>
<exclude name="${tarball.root}/jre/bin/*.*"/>
</tarfileset>
</tar>
<gzip
src="${idea.dist.path}/${build.number}/unix/idea${build.number}-full.tar"
zipfile="${idea.dist.path}/${build.number}/unix/idea${build.number}-full.tar.gz"/>
<delete file="${idea.dist.path}/${build.number}/unix/idea${build.number}-full.tar"/>
</target>
<target name="run-installer">
<copy todir="${idea.ia.icons.path}"
file="${idea.project.path}/icons/idea_logo.png"/>
<copy todir="${idea.ia.build.path}/images/">
<fileset dir="${idea.project.path}/build/images/"/>
</copy>
<copy todir="${idea.ia.build.path}/temp/dist.all">
<fileset dir="${idea.build.path}/dist.all"/>
</copy>
<copy todir="${idea.ia.build.path}/temp/dist.win">
<fileset dir="${idea.build.path}/dist.win"/>
</copy>
<copy
file="${idea.build.conf}/idea_all_vm14.iap_xml"
tofile="${idea.build.path}/idea_all_vm14.iap_xml" overwrite="true"/>
<java
classname="com.intellij.internalUtilities.buildutils.ReplaceInFiles"
fork="yes"
failonerror="true">
<classpath>
<pathelement location="${idea.project.classes}"/>
</classpath>
<jvmarg value="-Didea.home.path=${idea.project.path}"/>
<arg line="${idea.build.path}/idea_all_vm14.iap_xml"/>
<arg line="IntelliJ-IDEA-@@@"/>
<arg line="IntelliJ-IDEA-${build.number}"/>
<arg line="4"/>
</java>
<exec
executable="${ia.build.executable}"
output="build.ia.all_vm14"
failonerror="true">
<arg line="${idea.build.path}/idea_all_vm14.iap_xml"/>
</exec>
<copy
file="${idea.build.path}/idea_all_vm14_Build_Output/Web_Installers/InstData/Windows/VM/install.exe"
tofile="${idea.dist.path}/${build.number}/windows/idea${build.number}.exe"/>
<copy
file="${idea.build.path}/idea_all_vm14_Build_Output/Web_Installers/InstData/Linux/VM/install.bin"
tofile="${idea.dist.path}/${build.number}/unix/idea${build.number}.bin"/>
<mkdir dir="${idea.build.path}/idea_all_vm14_Build_Output/Web_Installers/InstData/MacOSX/"/>
<copy
file="${idea.build.path}/idea_all_vm14_Build_Output/Web_Installers/InstData/MacOSX/install.zip"
tofile="${idea.dist.path}/${build.number}/MacOSX/idea${build.number}.sit"/>
</target>
<target
name="zip-win"
depends="dist-win"
description="Makes a zip files with a Windows distribution">
<mkdir dir="${idea.dist.path}/${build.number}/windows" />
<zip
zipfile="${idea.dist.path}/${build.number}/windows/idea${build.number}.zip"
basedir="${idea.build.path}/dist.win" />
<copy
file="${idea.project.path}/jres/jre.zip"
tofile="${idea.dist.path}/${build.number}/windows/idea${build.number}-jre.zip"/>
<mkdir dir="${idea.dist.path}/${build.number}/windows/temp"/>
<unzip src="${idea.project.path}/jres/jre.zip" dest="${idea.dist.path}/${build.number}/windows/temp"/>
<zip
zipfile="${idea.dist.path}/${build.number}/windows/idea${build.number}-full.zip"
basedir="${idea.build.path}/dist.win"
update="true">
<fileset dir="${idea.project.path}/build">
<include name="Install-Windows-zip.txt"/>
<include name="exe/ipr.reg"/>
</fileset>
<fileset dir="${idea.dist.path}/${build.number}/windows/temp"/>
</zip>
<delete dir="${idea.dist.path}/${build.number}/windows/temp"/>
</target>
<target
name="all_dist"
description="Make a complete build">
<antcall target="clean"/>
<antcall target="prepare"/>
<antcall target="compile"/>
<antcall target="after-compile"/>
<antcall target="copy-dist"/>
<antcall target="build-completed"/>
</target>
<target name="after-compile" depends="help-index, generate-rgs, scramble, copy-resources, openapi, build-dists"/>
<target name="build-dists" depends="zip-win, tar-unix, run-installer"/>
<target name="clean">
<delete dir="${idea.build.path}" failonerror="false"/>
<delete dir="${idea.ia.build.path}" failonerror="false"/>
<delete dir="${idea.ia.icons.path}" failonerror="false"/>
</target>
<target name="deploy-plugin-tomcat-integration"> <!--depends="build-plugin-tomcat-integration" causes build-plugin-tomcat-integration to execute 3 times -->
<!-- params are: distribution.dir -->
<mkdir dir="${distribution.dir}/tomcatIntegration/lib"/>
<mkdir dir="${distribution.dir}/tomcatIntegration/docs"/>
<copy todir="${distribution.dir}/tomcatIntegration/lib">
<fileset dir="${idea.build.plugins}/tomcatIntegration/lib"/>
</copy>
<copy todir="${distribution.dir}/tomcatIntegration/docs">
<fileset dir="${idea.build.plugins}/tomcatIntegration/docs"/>
</copy>
<copy file="${idea.build.plugins}/tomcatIntegration/src/src.zip" todir="${distribution.dir}/tomcatIntegration"/>
</target>
<target name="deploy-plugin-starteam-integration">
<mkdir dir="${distribution.dir}/starteamIntegration/lib"/>
<mkdir dir="${distribution.dir}/starteamIntegration/docs"/>
<copy todir="${distribution.dir}/starteamIntegration/lib">
<fileset dir="${idea.build.plugins}/starteamIntegration/lib"/>
</copy>
<copy todir="${distribution.dir}/starteamIntegration/docs">
<fileset dir="${idea.build.plugins}/starteamIntegration/docs"/>
</copy>
<copy file="${idea.build.plugins}/starteamIntegration/src/src.zip" todir="${distribution.dir}/starteamIntegration"/>
</target>
<target name="deploy-plugin-cvs-integration">
<!-- params are: distribution.dir -->
<mkdir dir="${distribution.dir}/cvsIntegration/lib"/>
<mkdir dir="${distribution.dir}/cvsIntegration/docs"/>
<copy todir="${distribution.dir}/cvsIntegration/lib">
<fileset dir="${idea.build.plugins}/cvsIntegration/lib"/>
</copy>
<copy todir="${distribution.dir}/cvsIntegration/docs">
<fileset dir="${idea.build.plugins}/cvsIntegration/docs"/>
</copy>
<!-- <copy file="${idea.build.plugins}/cvsIntegration/src/src.zip" todir="${distribution.dir}/cvsIntegration"/> -->
</target>
<target name="deploy-plugin-uiDesigner">
<!-- params are: distribution.dir -->
<mkdir dir="${distribution.dir}/uiDesigner/lib"/>
<copy todir="${distribution.dir}/uiDesigner">
<fileset dir="${idea.build.plugins}/uiDesigner"/>
</copy>
</target>
<target name="plugins-build">
<!-- build tomcat integration plugin -->
<ant
antfile="${idea.project.plugins}/tomcatIntegration/build.xml"
target="mkdist"
dir="${idea.project.plugins}/tomcatIntegration"
inheritall="false"
inheritrefs="false">
<property name="dir.idea.lib.path" value="${idea.build.path}/dist.all/lib"/>
<property name="dir.jdk.lib.path" value="${idea.jdk.home}/lib"/>
<property name="dir.dest.path" value="${idea.build.plugins}/tomcatIntegration"/>
</ant>
<!-- build starteam integratin plugin -->
<ant
antfile="${idea.project.plugins}/starteam/build.xml"
target="mkdist"
dir="${idea.project.plugins}/starteam"
inheritall="false"
inheritrefs="false">
<property name="dir.idea.lib.path" value="${idea.build.path}/dist.all/lib"/>
<property name="dir.jdk.lib.path" value="${idea.jdk.home}/lib"/>
<property name="dir.dest.path" value="${idea.build.plugins}/starteamIntegration"/>
</ant>
<!-- build cvs integration plugin -->
<mkdir dir="${idea.build.plugins}/cvsIntegration/lib"/>
<copy todir="${idea.build.plugins}/cvsIntegration/lib" file="${idea.build.path}/cvsIntegration.jar"/>
<mkdir dir="${idea.build.plugins}/cvsIntegration/docs"/>
</target>
<target name="build-runtimesource-122" >
<property environment="env"/>
<java118compiler
srcdir="${idea.project.src.runtime}"
outdir="${idea.project.classes.runtime}"
javacpath="${idea.jdk.12.javac}"
libraries="${idea.jdk.12.home}\jre\lib\rt.jar;${idea.jdk.12.home}\lib\tools.jar;${idea.project.lib}\junit.jar;${idea.project.lib}\ant.jar;${idea.project.lib}\rt\jasper-compiler.jar;${idea.project.lib}\rt\jasper-runtime.jar;${idea.project.lib}\rt\jasper-xml.jar;${idea.project.lib}\xerces.jar;${idea.project.lib}\servlet.jar;${idea.project.lib}\bcel.jar;${idea.project.lib}\JNIWrap.jar"/>
<jar jarfile="${idea.build.path}/idea_rt.jar" basedir="${idea.project.classes.runtime}" compress="false"/>
</target>
<target name="copy-dist">
<copy todir="${deploy.dist.path}" overwrite="true">
<fileset dir="${idea.dist.path}"/>
</copy>
</target>
<target name="build-completed">
<mail from="build@intellij.com" tolist="idea-developers@intellij.net"
mailhost="mail"
subject="Build ${build.number} is ready, it's available at \\MAIN\Dist\..."/>
<cvs command="ci -m 'Build completed' version.properties" failonerror="false" />
</target>
<target name="build-failed" unless="silent">
<mail from="build@intellij.com" tolist="stathik@intellij.net"
mailhost="mail"
subject="Build ${build.number} failed. Log available here: \\build-unit\Work\Aurora\build\log\build.log"/>
<cvs command="ci -m 'Build failed' version.properties" failonerror="false" />
</target>
</project>