<project name="mps" default="build" basedir="..">
  <!-- Generated by MPS -->
  <property name="build.dir" location="build" />
  <property name="build.tmp" location="${build.dir}/tmp/mps" />
  <property name="build.layout" location="${build.dir}/artifacts/mps" />
  <loadfile property="build.number" srcFile="${basedir}/build.txt" />
  <tstamp>
    <format property="date" pattern="yyyyMMdd" />
  </tstamp>
  <property name="build.vcs.number" value="HEAD" />
  <property name="teamcity.buildConfName" value="local" />
  <loadfile property="idea.platform.build.number" srcFile="${basedir}/lib/build.txt" />
  <property name="mps.build.counter" value="SNAPSHOT" />
  <property file="${basedir}/build/dependencies/dependencies.properties" prefix="loaded.for.runtimeBuild" />
  <property name="runtimeBuild" value="${loaded.for.runtimeBuild.runtimeBuild}" />
  <property name="mps_home" location="${basedir}" />
  <property name="artifacts.mpsBuild" location="${build.dir}/artifacts/mpsBuild" />
  <property name="artifacts.mpsConsolePlugin" location="${build.dir}/artifacts/mpsConsolePlugin" />
  <property name="artifacts.mpsTroveCollections" location="${build.dir}/artifacts/mpsTroveCollections" />
  <property name="artifacts.mpsStandalone" location="${build.dir}/artifacts/mpsStandalone" />
  <property name="artifacts.mpsDevKit" location="${build.dir}/artifacts/mpsDevKit" />
  <property name="artifacts.mpsPlugins" location="${build.dir}/artifacts/mpsPlugins" />
  <property name="artifacts.mpsJava" location="${build.dir}/artifacts/mpsJava" />
  <property name="artifacts.mpsHttpSupportPlugin" location="${build.dir}/artifacts/mpsHttpSupportPlugin" />
  <property name="artifacts.mpsNavigationBar" location="${build.dir}/artifacts/mpsNavigationBar" />
  <property name="artifacts.mpsMakePlugin" location="${build.dir}/artifacts/mpsMakePlugin" />
  <property name="artifacts.mpsBuildUI" location="${build.dir}/artifacts/mpsBuildUI" />
  <property name="artifacts.mpsVcs" location="${build.dir}/artifacts/mpsVcs" />
  <property name="artifacts.mpsMigrationCore" location="${build.dir}/artifacts/mpsMigrationCore" />
  <property name="artifacts.mpsMigration" location="${build.dir}/artifacts/mpsMigration" />
  <property name="artifacts.mpsDebuggerPlugin" location="${build.dir}/artifacts/mpsDebuggerPlugin" />
  <property name="artifacts.mpsDiagramEditor" location="${build.dir}/artifacts/mpsDiagramEditor" />
  <property name="artifacts.jetpad" location="${build.dir}/artifacts/jetpad" />
  <property name="artifacts.mpsExecutionPlugin" location="${build.dir}/artifacts/mpsExecutionPlugin" />
  <property name="artifacts.mpsTooltips" location="${build.dir}/artifacts/mpsTooltips" />
  <property name="artifacts.mpsTesting" location="${build.dir}/artifacts/mpsTesting" />
  <property name="artifacts.mpsContextActionsTool" location="${build.dir}/artifacts/mpsContextActionsTool" />
  <property name="artifacts.mpsSpellCheckPlugin" location="${build.dir}/artifacts/mpsSpellCheckPlugin" />
  <property name="artifacts.mpsKotlinPlugin" location="${build.dir}/artifacts/mpsKotlinPlugin" />
  <property name="artifacts.mpsCore" location="${build.dir}/artifacts/mpsCore" />
  <property name="artifacts.mpsAntToolsPlugin" location="${build.dir}/artifacts/mpsAntToolsPlugin" />
  <property file="${artifacts.mpsBuild}/build.properties" prefix="import.mpsBuild" />
  <property name="mpsBootstrapCore.version.major" value="${import.mpsBuild.mpsBootstrapCore.version.major}" />
  <property name="mpsBootstrapCore.version.minor" value="${import.mpsBuild.mpsBootstrapCore.version.minor}" />
  <property name="mpsBootstrapCore.version.bugfixNr" value="${import.mpsBuild.mpsBootstrapCore.version.bugfixNr}" />
  <property name="mpsBootstrapCore.version.eap" value="${import.mpsBuild.mpsBootstrapCore.version.eap}" />
  <property name="mpsBootstrapCore.version" value="${import.mpsBuild.mpsBootstrapCore.version}" />
  
  <target name="assemble" depends="collect-tips-mps-tips, fetchDependencies">
    <mkdir dir="${build.layout}/bin" />
    <copy todir="${build.layout}/bin">
      <fileset dir="${mps_home}/bin">
        <exclude name="**/*.dll" />
        <exclude name="**/*.exe" />
        <exclude name="**/linux/" />
        <exclude name="**/mac/" />
        <exclude name="**/nix/" />
        <exclude name="**/win/" />
      </fileset>
    </copy>
    <copy todir="${build.layout}/bin">
      <fileset file="${mps_home}/workbench/mps-icons/source/mps.svg" />
    </copy>
    <mkdir dir="${build.layout}/languages" />
    <copy todir="${build.layout}/languages">
      <fileset dir="${artifacts.mpsStandalone}/languages" />
    </copy>
    <mkdir dir="${build.layout}/lib" />
    <copy todir="${build.layout}/lib">
      <fileset dir="${artifacts.mpsStandalone}/lib">
        <exclude name="jna/" />
        <exclude name="pty4j/" />
      </fileset>
    </copy>
    <mkdir dir="${build.tmp}/default/branding.jar" />
    <mkdir dir="${build.tmp}/default/branding.jar/idea" />
    <echoxml file="${build.tmp}/default/branding.jar/idea/MPSApplicationInfo.xml">
      <component>
        <version major="${mpsBootstrapCore.version.major}" minor="${mpsBootstrapCore.version.minor}${mpsBootstrapCore.version.bugfixNr}" eap="true" update-channel="MPS261EAP" />
        <company name="JetBrains s.r.o." url="https://www.jetbrains.com/?fromIDE" copyrightStart="2009" />
        <build number="${build.number}" date="${date}" />
        <logo url="/splash.png" textcolor="FFFFFF" progressColor="FFFFFF" progressY="396" progressHeight="4" />
        <icon ico="/MPS.ico" svg="/mps.svg" svg-small="/mps_16.svg" />
        <package code="code" />
        <names product="MPS" fullname="JetBrains MPS" script="mps" />
        
        <welcome-screen logo-url="/MPS_welcomeScreen.png" />
        
        <plugins url="https://plugins.jetbrains.com/" />
        <update-urls check="https://www.jetbrains.com/mps/update.xml" patches="https://www.jetbrains.com/mps/download/?utm_source=product&amp;utm_media=link&amp;utm_campaign=MPS&amp;utm_content=${mpsBootstrapCore.version.major}.${mpsBootstrapCore.version.minor}" />
        
        <help root="mps" webhelp-url="https://www.jetbrains.com/mps/webhelp/" />
        <documentation url="https://www.jetbrains.com/help/mps/${mpsBootstrapCore.version.major}.${mpsBootstrapCore.version.minor}/fast-track-to-mps.html" />
        <support url="https://www.jetbrains.com/support/mps/index.html" />
        <feedback url="https://www.jetbrains.com/feedback/feedback.jsp?product=mps" />
        <whatsnew url="https://www.jetbrains.com/mps/whatsnew/index.html" />
        <keymap win="https://www.jetbrains.com/help/mps/${mpsBootstrapCore.version.major}.${mpsBootstrapCore.version.minor}/default-keymap-reference.html" mac="https://www.jetbrains.com/help/mps/${mpsBootstrapCore.version.major}.${mpsBootstrapCore.version.minor}/default-keymap-reference.html" />
        <jetbrains-tv url="https://www.youtube.com/user/JetBrainsTV/search?query=MPS" />
        <youtrack url="https://youtrack.jetbrains.com/newissue?project=MPS&amp;clearDraft=true&amp;description=$DESCR" />
        
      </component>
    </echoxml>
    <jar destfile="${build.layout}/lib/branding.jar" duplicate="preserve">
      <fileset file="${basedir}/workbench/mps-icons/source/mps.svg" />
      <fileset file="${basedir}/workbench/mps-icons/source/mps_16.svg" />
      <fileset file="${basedir}/workbench/mps-icons/source/MPS.ico" />
      <fileset file="${basedir}/workbench/mps-icons/source/MPS_welcomeScreen.png" />
      <fileset file="${basedir}/workbench/mps-icons/source/splash.png" />
      <fileset file="${basedir}/workbench/mps-icons/source/splash@2x.png" />
      <fileset file="${basedir}/workbench/mps-icons/source/about@2x.png" />
      <fileset file="${basedir}/workbench/mps-icons/source/MPS_welcomeScreen@2x.png" />
      <fileset file="${basedir}/euaMps.html" />
      <fileset dir="${build.tmp}/default/branding.jar" />
    </jar>
    <jar destfile="${build.layout}/lib/mps-tips.jar" duplicate="preserve">
      <fileset file="${build.tmp}/out/mps-tips/mps-tips/**" />
    </jar>
    <mkdir dir="${build.tmp}/default/MPS-src.zip" />
    <copy todir="${build.tmp}/default/MPS-src.zip">
      <fileset dir="${mps_home}">
        <include name="MPSPlugin/**/*.java" />
        <include name="core/**/*.java" />
        <include name="plugins/**/*.java" />
        <include name="workbench/**/*.java" />
        <include name="testbench/**/*.java" />
        <exclude name="**/sandbox/**" />
        <exclude name="**/languages/**" />
      </fileset>
      <regexpmapper from="(.*)(/|\\)(src|sources|source|source_gen|source-api)(/|\\)(.*)" to="\5" />
    </copy>
    <zip destfile="${build.layout}/lib/MPS-src.zip">
      <fileset dir="${build.tmp}/default/MPS-src.zip" />
    </zip>
    <mkdir dir="${build.layout}/license" />
    <copy todir="${build.layout}/license">
      <fileset dir="${artifacts.mpsStandalone}/license" />
    </copy>
    <copy file="${artifacts.mpsStandalone}/LICENSE.txt" todir="${build.layout}" />
    <mkdir dir="${build.layout}/plugins" />
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsStandalone}/plugins" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-core" />
    <copy todir="${build.layout}/plugins/mps-core">
      <fileset dir="${artifacts.mpsCore}/mps-core" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-build" />
    <copy todir="${build.layout}/plugins/mps-build">
      <fileset dir="${artifacts.mpsBuild}/mps-build" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsConsolePlugin}" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-trove" />
    <copy todir="${build.layout}/plugins/mps-trove">
      <fileset dir="${artifacts.mpsTroveCollections}/mps-trove" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-java" />
    <copy todir="${build.layout}/plugins/mps-java">
      <fileset dir="${artifacts.mpsJava}/mps-java" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-devkit" />
    <copy todir="${build.layout}/plugins/mps-devkit">
      <fileset dir="${artifacts.mpsDevKit}/mps-devkit" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsExecutionPlugin}" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsMakePlugin}" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsPlugins}" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-vcs" />
    <copy todir="${build.layout}/plugins/mps-vcs">
      <fileset dir="${artifacts.mpsVcs}/mps-vcs" />
    </copy>
    <mkdir dir="${build.layout}/plugins/vcs-git" />
    <copy todir="${build.layout}/plugins/vcs-git">
      <fileset dir="${artifacts.mpsVcs}/vcs-git" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-git4idea" />
    <copy todir="${build.layout}/plugins/mps-git4idea">
      <fileset dir="${artifacts.mpsVcs}/mps-git4idea" />
    </copy>
    <mkdir dir="${build.layout}/plugins/vcs-svn" />
    <copy todir="${build.layout}/plugins/vcs-svn">
      <fileset dir="${artifacts.mpsVcs}/vcs-svn" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-migration" />
    <copy todir="${build.layout}/plugins/mps-migration">
      <fileset dir="${artifacts.mpsMigration}/mps-migration" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-project-migrations" />
    <copy todir="${build.layout}/plugins/mps-project-migrations">
      <fileset dir="${artifacts.mpsMigration}/mps-project-migrations" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-tooltips" />
    <copy todir="${build.layout}/plugins/mps-tooltips">
      <fileset dir="${artifacts.mpsTooltips}/mps-tooltips" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-build-ui" />
    <copy todir="${build.layout}/plugins/mps-build-ui">
      <fileset dir="${artifacts.mpsBuildUI}/mps-build-ui" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.jetpad}" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsDiagramEditor}" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsDebuggerPlugin}" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-junit5" />
    <copy todir="${build.layout}/plugins/mps-junit5">
      <fileset dir="${artifacts.mpsTesting}/mps-junit5" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-testing" />
    <copy todir="${build.layout}/plugins/mps-testing">
      <fileset dir="${artifacts.mpsTesting}/mps-testing" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsHttpSupportPlugin}" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsNavigationBar}" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsContextActionsTool}" />
    </copy>
    <copy todir="${build.layout}/plugins">
      <fileset dir="${artifacts.mpsSpellCheckPlugin}" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-kotlin" />
    <copy todir="${build.layout}/plugins/mps-kotlin">
      <fileset dir="${artifacts.mpsKotlinPlugin}/mps-kotlin" />
    </copy>
    <mkdir dir="${build.layout}/plugins/mps-ant-make" />
    <copy todir="${build.layout}/plugins/mps-ant-make">
      <fileset dir="${artifacts.mpsAntToolsPlugin}/mps-ant-make" />
    </copy>
    <zip destfile="${build.layout}/samples.zip">
      <zipfileset dir="${basedir}/samples" prefix="MPSSamples">
        <exclude name="**/vcs.xml" />
        <exclude name="**/*.history" />
      </zipfileset>
    </zip>
    <echo file="${build.layout}/build.number">build.number=${build.number}${line.separator}date=${date}${line.separator}revision.number=${build.vcs.number}${line.separator}configuration.name=${teamcity.buildConfName}${line.separator}version=${mpsBootstrapCore.version}${line.separator}idea.platform.build.number=${idea.platform.build.number}</echo>
    <copy todir="${build.layout}">
      <fileset file="${basedir}/build.txt" />
      <filterchain>
        <tokenfilter>
          <replaceregex pattern=".+" replace="${build.number}" flags="" />
        </tokenfilter>
      </filterchain>
    </copy>
    <copy todir="${build.layout}">
      <fileset file="${basedir}/about.txt" />
    </copy>
    <copy todir="${build.layout}">
      <fileset file="${basedir}/releaseNotes.txt" />
    </copy>
    <copy todir="${build.layout}">
      <fileset file="${basedir}/readme.txt" />
      <filterchain>
        <tokenfilter>
          <replaceregex pattern="\$version\$" replace="${mpsBootstrapCore.version}" flags="" />
        </tokenfilter>
      </filterchain>
    </copy>
    <echo file="${build.layout}/build.properties">mps.build.number=${build.number}${line.separator}mps.date=${date}${line.separator}mps.build.vcs.number=${build.vcs.number}${line.separator}mps.teamcity.buildConfName=${teamcity.buildConfName}${line.separator}mps.idea.platform.build.number=${idea.platform.build.number}${line.separator}mps.mps.build.counter=${mps.build.counter}${line.separator}mps.runtimeBuild=${runtimeBuild}${line.separator}mpsBootstrapCore.version.major=${mpsBootstrapCore.version.major}${line.separator}mpsBootstrapCore.version.minor=${mpsBootstrapCore.version.minor}${line.separator}mpsBootstrapCore.version.bugfixNr=${mpsBootstrapCore.version.bugfixNr}${line.separator}mpsBootstrapCore.version.eap=${mpsBootstrapCore.version.eap}${line.separator}mpsBootstrapCore.version=${mpsBootstrapCore.version}</echo>
  </target>
  
  <target name="buildDependents">
    <ant antfile="build/mpsTrueBootstrap.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsBootstrapCore.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsCore.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsWorkbench.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsBuild.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsTesting.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsTroveCollections.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsPlugins.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsDevKit.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsJavaCore.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsMakePlugin.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsConsolePlugin.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsStandalone.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsJava.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsHttpSupportPlugin.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsNavigationBar.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsDebuggerPlugin.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsExecutionPlugin.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsBuildUI.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsVcsPlatform.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsVcsStandaloneJar.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsVcs.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsMigrationCore.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsMigration.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/jetpad.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsDiagramEditor.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsTooltips.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsContextActionsTool.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsSpellCheckPlugin.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsKotlinPlugin.xml" inheritAll="false" useNativeBasedir="true" />
    <ant antfile="build/mpsAntToolsPlugin.xml" inheritAll="false" useNativeBasedir="true" />
  </target>
  
  <target name="fetchDependencies" />
  
  <target name="build" depends="assemble" />
  
  <target name="clean">
    <delete dir="${build.tmp}" />
    <delete dir="${build.layout}" />
  </target>
  
  <target name="collect-tips-mps-tips">
    <mkdir dir="${build.tmp}/out/mps-tips/mps-tips/tips/css" />
    <mkdir dir="${build.tmp}/out/mps-tips/mps-tips/tips/images" />
    <mkdir dir="${build.tmp}/out/mps-tips/mps-tips/tips" />
    <copy todir="${build.tmp}/out/mps-tips/mps-tips/tips">
      <fileset dir="${basedir}/workbench/mps-tips/source/tips" />
    </copy>
    <mkdir dir="${build.tmp}/out/mps-tips/mps-tips/META-INF" />
    <fileset id="contents" includes="*.*" dir="${build.tmp}/out/mps-tips/mps-tips/tips" />
    <property name="mps-tips.prop.contents" refid="contents" />
    <echoxml file="${build.tmp}/out/mps-tips/mps-tips/META-INF/IdeTipsAndTricks.xml">
      <idea-plugin>
        <extensions defaultExtensionNs="com.intellij">
          <tipAndTrick file="${mps-tips.prop.contents}" />
        </extensions>
      </idea-plugin>
    </echoxml>
    <replace file="${build.tmp}/out/mps-tips/mps-tips/META-INF/IdeTipsAndTricks.xml" token=";" value="&quot;/&gt;&#xD;&#x0009;&lt;tipAndTrick file=&quot;" />
    <replace file="${build.tmp}/out/mps-tips/mps-tips/META-INF/IdeTipsAndTricks.xml" token="&lt;tipAndTrick file=&quot;&quot; /&gt;" value="" />
  </target>
</project>