blob: e5430268c02fb3207b19f06bdfd9954bb44e8a0b [file] [log] [blame] [edit]
<project name="Kotlin" default="dist">
<include file="jslib_files.xml" />
<property file="resources/manifest.properties"/>
<!-- Set to false to disable proguard run on kotlin-compiler.jar. Speeds up the build -->
<property name="shrink" value="true"/>
<!-- Set to false to disable compiler's @NotNull assertions. Speeds up the build -->
<property name="generate.assertions" value="true"/>
<!-- Set to false to disable compiler's javadoc generation. Speeds up the build -->
<property name="generate.javadoc" value="true"/>
<property name="bootstrap.home" value="dependencies/bootstrap-compiler"/>
<property name="bootstrap.compiler.home" value="${bootstrap.home}/Kotlin/kotlinc"/>
<property name="bootstrap.runtime" value="${bootstrap.compiler.home}/lib/kotlin-runtime.jar"/>
<property name="output.relative" value="dist"/>
<property name="output" value="${basedir}/${output.relative}"/>
<property name="kotlin-home" value="${output}/kotlinc"/>
<property name="build.number" value="snapshot"/>
<property name="bootstrap.build.no.tests" value="false"/>
<property name="output.name" value="kotlin-compiler-${build.number}"/>
<property name="idea.sdk" value="${basedir}/ideaSDK"/>
<property name="java.target" value="1.6"/>
<property name="external.annotations.path" value="${basedir}/annotations"/>
<property name="dependencies.dir" value="${basedir}/dependencies"/>
<path id="classpath">
<file file="${bootstrap.runtime}"/>
<fileset dir="${idea.sdk}" includes="core/*.jar"/>
<fileset dir="${idea.sdk}" includes="lib/protobuf-2.5.0.jar"/>
<fileset dir="${basedir}/lib" includes="**/*.jar"/>
<fileset dir="${dependencies.dir}" includes="jline.jar"/>
<fileset dir="${dependencies.dir}" includes="jansi.jar"/>
<fileset dir="${dependencies.dir}" includes="cli-parser-1.1.1.jar"/>
<fileset dir="${basedir}/ideaSDK/jps" includes="jps-model.jar"/>
</path>
<typedef resource="org/jetbrains/jet/buildtools/ant/antlib.xml" classpath="${bootstrap.compiler.home}/lib/kotlin-ant.jar"/>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${dependencies.dir}/ant-contrib.jar"/>
<taskdef name="javac2" classname="org.apache.tools.ant.taskdefs.Javac"/>
<if>
<istrue value="${generate.assertions}"/>
<then>
<path id="javac2.classpath">
<pathelement location="${idea.sdk}/lib/javac2.jar"/>
<pathelement location="${idea.sdk}/lib/asm-all.jar"/>
</path>
<taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>
<echo message="Use javac2 from Idea lib"/>
</then>
<else>
<echo message="Use default javac compiler"/>
</else>
</if>
<dirset id="compilerSources.dirset" dir="${basedir}/">
<include name="compiler/frontend/src"/>
<include name="core/descriptors/src"/>
<include name="core/serialization/src"/>
<include name="core/descriptor.loader.java/src"/>
<include name="compiler/frontend.java/src"/>
<include name="core/serialization.java/src"/>
<include name="compiler/backend-common/src"/>
<include name="compiler/backend/src"/>
<include name="compiler/cli/src"/>
<include name="compiler/cli/cli-common/src"/>
<include name="compiler/util/src"/>
<include name="core/util.runtime/src"/>
<!--<include name="j2k/src"/>-->
<include name="compiler/jet.as.java.psi/src"/>
<include name="compiler/builtins-serializer"/>
<include name="js/js.dart-ast/src"/>
<include name="js/js.translator/src"/>
<include name="js/js.frontend/src"/>
<include name="js/js.inliner/src"/>
</dirset>
<property name="idea.out" value="${basedir}/out/production"/>
<patternset id="compilerClassesFromIDEA.fileset">
<include name="frontend/**"/>
<include name="descriptors/**"/>
<include name="serialization/**"/>
<include name="descriptor.loader.java/**"/>
<include name="frontend.java/**"/>
<include name="serialization.java/**"/>
<include name="backend/**"/>
<include name="backend-common/**"/>
<include name="cli/**"/>
<include name="cli-common/**"/>
<include name="util/**"/>
<include name="util.runtime/**"/>
<include name="jet.as.java.psi/**"/>
<include name="builtins-serializer/**"/>
<include name="js.dart-ast/**"/>
<include name="js.translator/**"/>
<include name="js.frontend/**"/>
<include name="js.inliner/**"/>
</patternset>
<path id="compilerSources.path">
<dirset refid="compilerSources.dirset"/>
</path>
<path id="preloaderSources.path">
<dirset dir="compiler/preloader/src"/>
</path>
<macrodef name="cleandir">
<attribute name="dir"/>
<sequential>
<echo message="Cleaning @{dir}"/>
<delete dir="@{dir}" failonerror="false"/>
<mkdir dir="@{dir}"/>
</sequential>
</macrodef>
<target name="clean">
<delete dir="${output}"/>
</target>
<target name="init">
<mkdir dir="${kotlin-home}"/>
<mkdir dir="${kotlin-home}/lib"/>
</target>
<target name="prepareDist">
<copy todir="${kotlin-home}/bin">
<fileset dir="${basedir}/compiler/cli/bin"/>
</copy>
<fixcrlf srcdir="${kotlin-home}/bin" excludes="**/*.bat" eol="unix"/>
<copy todir="${kotlin-home}/license">
<fileset dir="${basedir}/license"/>
</copy>
<echo file="${kotlin-home}/build.txt" message="${build.number}"/>
<chmod dir="${kotlin-home}/bin" excludes="**/*.bat" perm="755"/>
</target>
<target name="compilerSources">
<jar jarfile="${output}/kotlin-compiler-sources.jar">
<!-- TODO How to convert it from pathset or dirset ? -->
<fileset dir="compiler/frontend/src"/>
<fileset dir="core/descriptors/src"/>
<fileset dir="core/descriptor.loader.java/src"/>
<fileset dir="core/serialization/src"/>
<fileset dir="core/serialization.java/src"/>
<fileset dir="compiler/frontend.java/src"/>
<fileset dir="compiler/backend-common/src"/>
<fileset dir="compiler/backend/src"/>
<fileset dir="compiler/cli/src"/>
<fileset dir="j2k/src"/>
<fileset dir="compiler/util/src"/>
<fileset dir="core/util.runtime/src"/>
<fileset dir="compiler/jet.as.java.psi/src"/>
<fileset dir="compiler/builtins-serializer"/>
<fileset dir="js/js.dart-ast/src"/>
<fileset dir="js/js.translator/src"/>
<fileset dir="js/js.frontend/src"/>
<fileset dir="js/js.inliner/src"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.compiler.sources}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
<if>
<istrue value="${generate.javadoc}"/>
<then>
<delete dir="${output}/kotlin-compiler-javadoc" failonerror="false"/>
<javadoc destdir="${output}/kotlin-compiler-javadoc"
sourcepathref="compilerSources.path"
classpathref="classpath"
linksource="yes"
windowtitle="${manifest.impl.title.kotlin.compiler}"/>
<jar jarfile="${output}/kotlin-compiler-javadoc.jar">
<fileset dir="${output}/kotlin-compiler-javadoc"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.compiler.javadoc}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</then>
<else>
<jar jarfile="${output}/kotlin-compiler-javadoc.jar">
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.compiler.javadoc}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</else>
</if>
</target>
<target name="jslib">
<property name="compiled.stdlib.js" value="stdlib.js" />
<property name="stdlib.js.dir" value="${basedir}/js/js.translator/testData" />
<kotlin2js output="${output}/${compiled.stdlib.js}" main="noCall">
<src>
<fileset refid="kotlin.builtin.files" />
<resources refid="js.lib.files" />
</src>
</kotlin2js>
<jar jarfile="${kotlin-home}/lib/kotlin-jslib.jar">
<resources refid="js.lib.files" />
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.javascript.stdlib}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
<taskdef name="closure-compiler"
classname="com.google.javascript.jscomp.ant.CompileTask"
classpath="${dependencies.dir}/closure-compiler.jar"/>
<!-- value should be one of: whitespace, simple, advanced -->
<property name="compilationLevel" value="simple" />
<!-- value should be one of: default, quiet, verbose -->
<property name="warningLevel" value="default" />
<closure-compiler
compilationLevel="${compilationLevel}"
prettyprint="true"
languagein="ECMASCRIPT5_STRICT"
warning="${warningLevel}"
output="${kotlin-home}/lib/kotlin.js" >
<sources dir="${stdlib.js.dir}">
<file name="kotlin_lib_ecma5.js"/>
<file name="kotlin_lib.js"/>
<file name="maps.js"/>
<file name="long.js"/>
</sources>
<sources dir="${output}">
<file name="${compiled.stdlib.js}"/>
</sources>
<sources dir="${stdlib.js.dir}">
<file name="export_Kotlin_if_possible.js"/>
</sources>
<externs dir="${stdlib.js.dir}">
<file name="externs.js"/>
</externs>
</closure-compiler>
</target>
<target name="preloader">
<cleandir dir="${output}/classes/preloader"/>
<javac2 destdir="${output}/classes/preloader" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<src refid="preloaderSources.path"/>
</javac2>
<jar jarfile="${kotlin-home}/lib/kotlin-preloader.jar">
<fileset dir="${output}/classes/preloader"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.preloader}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
<attribute name="Main-Class" value="org.jetbrains.jet.preloading.Preloader"/>
</manifest>
</jar>
</target>
<target name="builtins">
<cleandir dir="${output}/builtins"/>
<java classname="org.jetbrains.jet.utils.builtinsSerializer.BuiltinsSerializerPackage"
classpath="${bootstrap.compiler.home}/lib/kotlin-compiler.jar"
failonerror="true"
fork="true">
<assertions>
<enable/>
</assertions>
<arg value="${output}/builtins"/>
<arg value="core/builtins/native"/>
<arg value="core/builtins/src"/>
</java>
</target>
<macrodef name="pack_compiler">
<attribute name="jarfile"/>
<attribute name="compress" default="true"/>
<sequential>
<!--
For "Compiler and Plugin - Bootstrap - No Tests" configuration the compiler will contain the runtime it was built against, and
will NOT contain the new runtime in its "Class-Path" attribute. This is done because the new compiler is guaranteed to work
against the OLD runtime (because the new compiler is just a Kotlin application, compiled by the old compiler with the old
runtime), but _will not necessarily_ work against the new one.
However we don't do this on the second run of our distribution, i.e. we do not include the new runtime in the NEWEST compiler.
This is because there are little to no differences between the new and the newest runtime, and so we assume that our newest
compiler will work with any of them. Also distributing two runtimes (inside the compiler and a separate one) could cause all
kinds of problems and confusion for users who include both our compiler and runtime in their classpath
-->
<if>
<istrue value="${bootstrap.build.no.tests}"/>
<then>
<property name="compiler.manifest.class.path" value="."/>
</then>
<else>
<property name="compiler.manifest.class.path" value="kotlin-runtime.jar"/>
</else>
</if>
<jar jarfile="@{jarfile}" compress="@{compress}" duplicate="preserve">
<zipfileset src="${bootstrap.runtime}">
<include name="**/*.class" if="${bootstrap.build.no.tests}"/>
</zipfileset>
<fileset dir="${output}/classes/compiler"/>
<fileset dir="${output}/builtins">
<include name="kotlin/**"/>
<exclude name="kotlin/internal/**"/>
</fileset>
<fileset dir="${basedir}/compiler/frontend.java/src" includes="META-INF/services/**"/>
<fileset dir="${basedir}/compiler/backend/src" includes="META-INF/services/**"/>
<fileset dir="${basedir}/resources" includes="manifest.properties"/>
<zipgroupfileset dir="${basedir}/lib" includes="*.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/core" includes="*.jar" excludes="util.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/lib" includes="jna-utils.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/lib" includes="oromatcher.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/lib" includes="protobuf-2.5.0.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/jps" includes="jps-model.jar"/>
<zipgroupfileset dir="${dependencies.dir}" includes="jline.jar"/>
<zipgroupfileset dir="${dependencies.dir}" includes="cli-parser-1.1.1.jar"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.compiler}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
<attribute name="Class-Path" value="${compiler.manifest.class.path}"/>
<attribute name="Main-Class" value="org.jetbrains.jet.cli.jvm.K2JVMCompiler"/>
</manifest>
</jar>
</sequential>
</macrodef>
<target name="compiler_quick">
<delete dir="${output}/classes/compiler"/>
<copy todir="${output}/classes/compiler">
<fileset dir="${idea.out}/">
<patternset refid="compilerClassesFromIDEA.fileset"/>
</fileset>
<!-- out/production contains classes under module directories, here we are merging them all into one root-->
<cutdirsmapper dirs="1"/>
</copy>
<delete file="${kotlin-home}/lib/kotlin-compiler.jar"/>
<pack_compiler jarfile="${kotlin-home}/lib/kotlin-compiler.jar" compress="false"/>
</target>
<target name="compiler">
<taskdef resource="proguard/ant/task.properties" classpath="${dependencies.dir}/proguard.jar"/>
<cleandir dir="${output}/classes/compiler"/>
<javac2 destdir="${output}/classes/compiler" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin externalannotations="${external.annotations.path}"/>
<src refid="compilerSources.path"/>
<classpath refid="classpath"/>
</javac2>
<pack_compiler jarfile="${output}/kotlin-compiler-before-shrink.jar"/>
<delete file="${kotlin-home}/lib/kotlin-compiler.jar" failonerror="false"/>
<if>
<isfalse value="${shrink}"/>
<then>
<copy file="${output}/kotlin-compiler-before-shrink.jar"
tofile="${kotlin-home}/lib/kotlin-compiler.jar"/>
</then>
<else>
<available property="rtjar" value="${java.home}/lib/rt.jar" file="${java.home}/lib/rt.jar"/>
<available property="rtjar" value="${java.home}/../Classes/classes.jar" file="${java.home}/../Classes/classes.jar"/>
<available property="jssejar" value="${java.home}/lib/jsse.jar" file="${java.home}/lib/jsse.jar"/>
<available property="jssejar" value="${java.home}/../Classes/jsse.jar" file="${java.home}/../Classes/jsse.jar"/>
<proguard><![CDATA[
-injars '${output}/kotlin-compiler-before-shrink.jar'(
!com/thoughtworks/xstream/converters/extended/ISO8601**,
!com/thoughtworks/xstream/converters/reflection/CGLIBEnhancedConverter**,
!com/thoughtworks/xstream/io/xml/Dom4J**,
!com/thoughtworks/xstream/io/xml/Xom**,
!com/thoughtworks/xstream/io/xml/Wstx**,
!com/thoughtworks/xstream/io/xml/KXml2**,
!com/thoughtworks/xstream/io/xml/BEAStax**,
!com/thoughtworks/xstream/io/json/Jettison**,
!com/thoughtworks/xstream/mapper/CGLIBMapper**,
!org/apache/log4j/jmx/Agent*,
!org/apache/log4j/net/JMS*,
!org/apache/log4j/net/SMTP*,
!org/apache/log4j/or/jms/MessageRenderer*,
!org/jdom/xpath/Jaxen*,
!org/mozilla/javascript/xml/impl/xmlbeans/**,
!META-INF/maven**,
**.class,**.properties,**.kt,**.kotlin_*,
META-INF/services/**,META-INF/native/**,META-INF/MANIFEST.MF,
messages/**)
-outjars '${kotlin-home}/lib/kotlin-compiler.jar'
-dontnote **
-dontwarn com.intellij.util.ui.IsRetina*
-dontwarn com.intellij.util.RetinaImage*
-dontwarn apple.awt.*
-dontwarn dk.brics.automaton.*
-dontwarn org.fusesource.**
-dontwarn org.xerial.snappy.SnappyBundleActivator
-dontwarn com.intellij.util.CompressionUtil
-dontwarn com.intellij.util.SnappyInitializer
-dontwarn net.sf.cglib.**
-dontwarn org.objectweb.asm.** # this is ASM3, the old version that we do not use
-libraryjars '${rtjar}'
-libraryjars '${jssejar}'
-libraryjars '${bootstrap.runtime}'
-target 1.6
-dontoptimize
-dontobfuscate
-keep class org.fusesource.** { *; }
-keep class org.jdom.input.JAXPParserFactory { *; }
-keep class org.jetbrains.annotations.** {
public protected *;
}
-keep class javax.inject.** {
public protected *;
}
-keep class org.jetbrains.k2js.** {
public protected *;
}
-keep class org.jetbrains.jet.** {
public protected *;
}
-keep class jet.** {
public protected *;
}
-keep class kotlin.** {
public protected *;
}
-keep class com.intellij.psi.** {
public protected *;
}
# for kdoc & dokka
-keep class com.intellij.openapi.util.TextRange { *; }
-keep class com.intellij.lang.impl.PsiBuilderImpl* {
public protected *;
}
-keep class com.intellij.openapi.util.text.StringHash { *; }
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * {
** toString();
** hashCode();
void start();
void stop();
void dispose();
}
-keepclassmembers class org.jetbrains.org.objectweb.asm.Opcodes {
*** ASM5;
}
-keepclassmembers class org.jetbrains.org.objectweb.asm.ClassReader {
*** SKIP_CODE;
*** SKIP_DEBUG;
*** SKIP_FRAMES;
}
]]></proguard>
</else>
</if>
<jar jarfile="${output}/kotlin-compiler-for-maven.jar">
<zipfileset src="${kotlin-home}/lib/kotlin-compiler.jar" includes="**"/>
<zipfileset src="${bootstrap.runtime}" includes="**" excludes="META-INF/**"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.compiler}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
<attribute name="Main-Class" value="org.jetbrains.jet.cli.jvm.K2JVMCompiler"/>
</manifest>
</jar>
</target>
<target name="antTools">
<cleandir dir="${output}/classes/buildTools"/>
<javac2 destdir="${output}/classes/buildTools" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin externalannotations="${external.annotations.path}"/>
<src>
<dirset dir="${basedir}/build-tools">
<include name="core/src"/>
<include name="ant/src"/>
</dirset>
</src>
<compilerarg value="-Xlint:all"/>
<classpath>
<fileset dir="${kotlin-home}/lib" includes="kotlin-compiler.jar"/>
<file file="${bootstrap.runtime}"/>
<fileset dir="${dependencies.dir}/ant-1.7/lib" includes="ant.jar"/>
</classpath>
</javac2>
<jar destfile="${kotlin-home}/lib/kotlin-ant.jar">
<fileset dir="${output}/classes/buildTools"/>
<fileset dir="${basedir}/build-tools/ant/src" includes="**/*.xml"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.compiler.ant.task}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
<attribute name="Class-Path" value="kotlin-compiler.jar"/>
</manifest>
</jar>
</target>
<target name="jdkAnnotations">
<copy file="dependencies/annotations/kotlin-jdk-annotations.jar" todir="${kotlin-home}/lib"/>
</target>
<target name="androidSdkAnnotations">
<copy file="dependencies/annotations/kotlin-android-sdk-annotations.jar" todir="${kotlin-home}/lib"/>
</target>
<target name="runtime">
<macrodef name="new_kotlinc">
<attribute name="src"/>
<attribute name="output"/>
<attribute name="classpath"/>
<sequential>
<cleandir dir="@{output}"/>
<java classname="org.jetbrains.jet.cli.jvm.K2JVMCompiler" failonerror="true" fork="true">
<classpath>
<path refid="classpath"/>
<pathelement location="${kotlin-home}/lib/kotlin-compiler.jar"/>
</classpath>
<assertions>
<enable/>
</assertions>
<arg line="@{src}"/>
<arg value="-d"/>
<arg value="@{output}"/>
<arg value="-no-stdlib"/>
<arg value="-classpath"/>
<arg value="@{classpath}"/>
</java>
</sequential>
</macrodef>
<new_kotlinc src="${basedir}/core/builtins/src ${basedir}/core/runtime.jvm/src ${basedir}/core/reflection/src"
output="${output}/classes/runtime"
classpath="${basedir}/core/runtime.jvm/src"/>
<javac2 destdir="${output}/classes/runtime" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<src path="${basedir}/core/runtime.jvm/src"/>
<classpath location="${output}/classes/runtime"/>
</javac2>
<new_kotlinc src="${basedir}/libraries/stdlib/src"
output="${output}/classes/stdlib"
classpath="${output}/classes/runtime"/>
<jar destfile="${kotlin-home}/lib/kotlin-runtime.jar">
<fileset dir="${output}/classes/runtime"/>
<fileset dir="${output}/classes/stdlib"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.jvm.runtime}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</target>
<target name="runtime_sources">
<jar destfile="${kotlin-home}/lib/kotlin-runtime-sources.jar">
<fileset dir="${basedir}/core/builtins/native" includes="**/*"/>
<fileset dir="${basedir}/core/builtins/src" includes="**/*"/>
<fileset dir="${basedir}/core/runtime.jvm/src" includes="**/*"/>
<fileset dir="${basedir}/core/reflection/src" includes="**/*"/>
<fileset dir="${basedir}/libraries/stdlib/src" includes="**/*"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.jvm.runtime.sources}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</target>
<!-- See description -->
<target name="dist"
depends="clean,init,prepareDist,preloader,builtins,compiler,compilerSources,antTools,jdkAnnotations,androidSdkAnnotations,runtime,runtime_sources,jslib"
description="Builds redistributables from sources"/>
<!-- builds everything, but classes are reused from project out dir, doesn't run proguard and javadoc -->
<target name="dist_quick"
depends="clean,init,prepareDist,preloader,builtins,compiler_quick,antTools,jdkAnnotations,androidSdkAnnotations,runtime,runtime_sources,jslib"/>
<!-- See description -->
<target name="dist_quick_compiler_only"
depends="init,prepareDist,preloader,builtins,compiler_quick"
description="Builds compiler jar from project out dir"/>
<target name="zip" depends="dist">
<zip destfile="${output}/${output.name}.zip">
<zipfileset prefix="kotlinc" dir="${kotlin-home}" excludes="bin/*"/>
<zipfileset prefix="kotlinc/bin" dir="${kotlin-home}/bin" includes="*.bat" filemode="644"/>
<zipfileset prefix="kotlinc/bin" dir="${kotlin-home}/bin" excludes="*.bat" filemode="755"/>
</zip>
</target>
<target name="kotlin-for-upsource" depends="dist">
<cleandir dir="${output}/classes/idea-analysis"/>
<javac2 destdir="${output}/classes/idea-analysis" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin externalannotations="${external.annotations.path}"/>
<src>
<dirset dir="${basedir}/idea/ide-lazy-resolve">
<include name="src"/>
</dirset>
<dirset dir="${basedir}/idea/idea-analysis">
<include name="src"/>
</dirset>
</src>
<classpath>
<fileset dir="${idea.sdk}" includes="core/*.jar"/>
<fileset dir="${idea.sdk}" includes="core-analysis/*.jar"/>
<fileset dir="${idea.sdk}" includes="lib/protobuf-2.5.0.jar"/>
<fileset dir="${basedir}/lib" includes="**/*.jar"/>
<fileset dir="${dependencies.dir}" includes="jline.jar"/>
<fileset dir="${dependencies.dir}" includes="jansi.jar"/>
<fileset dir="${dependencies.dir}" includes="cli-parser-1.1.1.jar"/>
<fileset dir="${basedir}/ideaSDK/jps" includes="jps-model.jar"/>
<pathelement location="${output}/classes/runtime"/>
<pathelement location="${output}/classes/compiler"/>
<pathelement location="${output}/classes/stdlib"/>
</classpath>
</javac2>
<!--copy resources-->
<copy todir="${output}/classes/idea-analysis">
<fileset dir="${basedir}/idea/idea-analysis/src" excludes="**/*.java, **/*.kt"/>
</copy>
<jar jarfile="${output}/kotlin-for-upsource0.jar">
<fileset dir="${output}/classes/idea-analysis"/>
<fileset dir="${output}/classes/compiler"/>
<fileset dir="${output}/classes/runtime"/>
<fileset dir="${output}/builtins">
<include name="kotlin/**"/>
<exclude name="kotlin/internal/**"/>
</fileset>
<fileset dir="${basedir}/compiler/frontend.java/src" includes="META-INF/services/**"/>
<fileset dir="${basedir}/compiler/backend/src" includes="META-INF/services/**"/>
<zipgroupfileset dir="${basedir}/lib" includes="*.jar"/>
<zipgroupfileset dir="${kotlin-home}/lib" includes="kotlin-runtime-sources.jar"/> <!--Library.kt-->
<fileset dir="${output}/classes/stdlib"/>
<!-- icons, etc. -->
<fileset dir="idea/resources"/>
<!-- plugin.xml and friends -->
<fileset dir="idea/src" includes="META-INF/**"/>
</jar>
<sleep seconds="1"/>
<jar jarfile="${output}/kotlin-for-upsource.jar">
<zipfileset src="${output}/kotlin-for-upsource0.jar">
<exclude name="javax/**/*.java"/>
</zipfileset>
</jar>
<delete file="${output}/kotlin-for-upsource0.jar"/>
<!--sources-->
<jar jarfile="${output}/kotlin-for-upsource-sources.jar">
<fileset dir="compiler/frontend/src"/>
<fileset dir="core/descriptors/src"/>
<fileset dir="core/descriptor.loader.java/src"/>
<fileset dir="core/serialization/src"/>
<fileset dir="core/serialization.java/src"/>
<fileset dir="compiler/frontend.java/src"/>
<fileset dir="compiler/backend-common/src"/>
<fileset dir="compiler/backend/src"/>
<fileset dir="compiler/cli/src"/>
<fileset dir="j2k/src"/>
<fileset dir="compiler/util/src"/>
<fileset dir="core/util.runtime/src"/>
<fileset dir="compiler/jet.as.java.psi/src"/>
<fileset dir="compiler/builtins-serializer"/>
<fileset dir="js/js.dart-ast/src"/>
<fileset dir="js/js.translator/src"/>
<fileset dir="js/js.frontend/src"/>
<fileset dir="js/js.inliner/src"/>
<fileset dir="idea/idea-analysis/src"/>
<fileset dir="idea/ide-lazy-resolve/src"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</target>
<target name="build-artifacts" depends="zip,kotlin-for-upsource"/>
</project>