<!--
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
-->
<project name="Scripting Framework Installer" default="jar" basedir=".">

  <!-- =================== Environmental Properties ======================= -->

  <property name="prj" value=".."/>
  <property file="${prj}/java/build.env"/>
  <property name="optimize"   value="on"/>
  <property name="debug"   value="on"/>
  <property name="installerclasses" value="${out}/class/sframeworkinstall"/>
  <property name="jardir" value="${out}/class"/>
  <property name="bindir" value="${out}/bin"/>
  <property name="sfversion" value="0.3"/>
  <property name="installerjarname" value="SFrameworkInstall.jar"/>
  <property environment="env"/>

  <!-- ==================== classpath setting ============================ -->
  <path id="idlclasspath">
    <pathelement location="${solar.jar}/unoil.jar"/>
    <!-- <pathelement location="${prj}/../unoil/${inpath}/class/unoil.jar"/>  -->
    <pathelement location="${solar.jar}/jurt.jar"/>
    <pathelement location="${solar.jar}/juh.jar"/>
    <pathelement location="${solar.jar}/java_uno.jar"/>
    <pathelement location="${solar.jar}/ridl.jar"/>
  </path>
  <path id="scriptexampleclasspath">
    <pathelement location="${solar.jar}/unoil.jar"/>
    <!-- pathelement location="${prj}/../unoil/${inpath}/class/unoil.jar"/ -->
    <pathelement location="${solar.jar}/jurt.jar"/>
    <pathelement location="${solar.jar}/juh.jar"/>
    <pathelement location="${solar.jar}/java_uno.jar"/>
    <pathelement location="${solar.jar}/ridl.jar"/>
    <pathelement location="${out}/class/ScriptRuntimeForJava.jar"/>
  </path>

  <path id="debuggerclasspath">
    <pathelement location="${out}/class/ScriptRuntimeForJava.jar"/>
    <pathelement location="${solar.jar}/ridl.jar"/>
    <pathelement location="${solar.jar}/unoil.jar"/>
    <pathelement location="${out}/class/jsruntime/skip_registration/js.jar"/>
    <pathelement location="${install.dir}/bsh-1.2b7.jar"/>
  </path>
  <!-- ===================== Set up build conditionals ========================= -->
  <target name="product.test">
      <condition property="noproext">
            <equals arg1="$${env.PROEXT}" arg2="${env.PROEXT}"/>
      </condition>
  </target>
  <target name="nonproduct.set" if="noproext">
      <echo message="non-product build"/>
      <property name="proext" value=""/>
  </target>
  <target name="product.set" unless="noproext">
      <echo message="product build"/>
      <property name="proext" value="${env.PROEXT}"/>
  </target>
  <target name="build.conditions" depends="product.test,nonproduct.set,product.set">
      <condition property="win9.build">
            <available file="${prj}/wntmsci9${proext}"/>
      </condition>
      <condition property="win8.build">
            <available file="${prj}/wntmsci8${proext}"/>
      </condition>
      <condition property="win7.build">
            <available file="${prj}/wntmsci7${proext}"/>
      </condition>
      <condition property="linx86.build">
            <available file="${prj}/unxlngi5${proext}"/>
      </condition>
      <condition property="solsparc.build">
            <available file="${prj}/unxsols4${proext}"/>
      </condition>
      <!-- <condition property="openoffice.build">
      </condition> -->
  </target>
  <!-- ===================== Build the examples ========================= -->
  <target name="buildexamples">

    <mkdir dir="${out}/class/examples/java/debugger"/>
    <javac srcdir="${prj}/examples/java/debugger"
           destdir="${out}/class/examples/java/debugger"
              includes="*.java"
           classpathref="debuggerclasspath"
       debug="${debug}" optimize="${optimize}" deprecation="on"/>

    <copy todir="${out}/class/examples/java/debugger">
        <fileset dir="${prj}/examples/java/debugger">
            <include name="**/*.java"/>
            <include name="*.xml"/>
        </fileset>
    </copy>

    <jar jarfile="${out}/class/examples/java/debugger/debugger.jar"
        basedir="${out}/class/examples/java/debugger" includes="*.class">
        <manifest>
            <attribute name="Built-By" value="Sun Microsystems"/>
            <attribute name="ScriptFramework-Version" value="${sfversion}"/>
        </manifest>
    </jar>

    <delete>
        <fileset dir="${out}/class/examples/java/debugger" includes="*.class"/>
    </delete>

    <mkdir dir="${out}/class/examples/java/Highlight"/>
    <javac srcdir="${prj}/examples/java/" destdir="${out}/class/examples/java/Highlight/"
              includes="**/Highlight*.java" classpathref="idlclasspath"
       debug="${debug}" optimize="${optimize}" deprecation="on"/>
    <copy todir="${out}/class/examples/java/Highlight/">
        <fileset dir="${prj}/examples/java/">
            <include name="**/Highlight*.java"/>
        </fileset>
    </copy>
    <copy file="${prj}/examples/java/HighlightTextParcel.xml" tofile="${out}/class/examples/java/Highlight/parcel-descriptor.xml"/>
    <jar jarfile="${out}/class/examples/java/Highlight/Highlight.jar"
        basedir="${out}/class/examples/java/Highlight"
        includes="**/*.java,**/*.class,**/*.xml"
        excludes="${out}/class/examples/java/Highlight/Highlight.jar">
        <manifest>
            <attribute name="Built-By" value="Sun Microsystems"/>
            <attribute name="ScriptFramework-Version" value="${sfversion}"/>
        </manifest>
    </jar>
    <mkdir dir="${out}/class/examples/java/MemoryUsage"/>
    <javac srcdir="${prj}/examples/java/" destdir="${out}/class/examples/java/MemoryUsage/"
              includes="**/MemoryUsage.java" classpathref="idlclasspath"
       debug="${debug}" optimize="${optimize}" deprecation="on"/>
    <copy file="${prj}/examples/java/MemoryUsage.java" todir="${out}/class/examples/java/MemoryUsage/"/>
    <copy file="${prj}/examples/java/MemoryUsageParcel.xml" tofile="${out}/class/examples/java/MemoryUsage/parcel-descriptor.xml"/>
    <copy file="${prj}/examples/java/MemoryUsage.java" todir="${out}/class/examples/java/MemoryUsage/"/>
    <copy file="${prj}/examples/java/ExampleSpreadSheet.sxc" todir="${out}/class/examples/java/MemoryUsage/"/>

    <mkdir dir="${out}/class/examples/java/ScriptFrmwrkHelper"/>
    <javac srcdir="${prj}/examples/java/" destdir="${out}/class/examples/java/ScriptFrmwrkHelper/"
              includes="**/ScriptFrmwrkHelper.java" classpathref="scriptexampleclasspath"
       debug="${debug}" optimize="${optimize}" deprecation="on"/>
    <copy todir="${out}/class/examples/java/ScriptFrmwrkHelper/">
        <fileset dir="${prj}/examples/java/">
            <include name="**/ScriptFrmwrkHelper.java"/>
        </fileset>
    </copy>
    <copy file="${prj}/examples/java/ScriptFrameWkHelperParcel.xml" tofile="${out}/class/examples/java/ScriptFrmwrkHelper/parcel-descriptor.xml"/>
    <jar jarfile="${out}/class/examples/java/ScriptFrmwrkHelper/ScriptFrmwrkHelper.jar"
        basedir="${out}/class/examples/java/ScriptFrmwrkHelper"
        includes="**/*.java,**/*.class,**/*.xml"
        excludes="${out}/class/examples/java/ScriptFrmwrkHelper/ScriptFrmwrkHelper.jar">
        <manifest>
            <attribute name="Built-By" value="Sun Microsystems"/>
            <attribute name="ScriptFramework-Version" value="${sfversion}"/>
        </manifest>
    </jar>
    <mkdir dir="${out}/class/examples/beanshell"/>
    <copy todir="${out}/class/examples/beanshell">
        <fileset dir="${prj}/examples/beanshell" includes="**"/>
    </copy>
    <mkdir dir="${out}/class/examples/javascript"/>
    <copy todir="${out}/class/examples/javascript">
        <fileset dir="${prj}/examples/javascript" includes="**"/>
    </copy>
  </target>

  <!-- ===================== Build UNO package ========================= -->
  <target name="buildunopackage_win9" depends="build.conditions" if="win9.build">
    <mkdir dir="${out}/class/sframeworkinstall/sframework"/>
    <mkdir dir="${out}/class/sframework"/>
    <copy file="${solar.bin}/ScriptFramework.rdb"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptRuntimeForJava.jar"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptFramework.jar"
        todir="${out}/class/sframework/"/>
    <mkdir dir="${out}/class/sframework/windows.plt"/>
    <copy todir="${out}/class/sframework/windows.plt">
        <fileset dir="${prj}/wntmsci9${proext}/bin/">
            <include name="**/*.dll"/>
        </fileset>
    </copy>
    <mkdir dir="${out}/class/sframework/skip_registration"/>
    <copy file="${solar.jar}/unoil.jar"
        todir="${out}/class/sframework/skip_registration"/>
  </target>
  <target name="buildunopackage_win8" depends="build.conditions" if="win8.build">
    <mkdir dir="${out}/class/sframeworkinstall/sframework"/>
    <mkdir dir="${out}/class/sframework"/>
    <copy file="${solar.bin}/ScriptFramework.rdb"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptRuntimeForJava.jar"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptFramework.jar"
        todir="${out}/class/sframework/"/>
    <mkdir dir="${out}/class/sframework/windows.plt"/>
    <copy todir="${out}/class/sframework/windows.plt">
        <fileset dir="${prj}/wntmsci8${proext}/bin/">
            <include name="**/*.dll"/>
        </fileset>
    </copy>
    <mkdir dir="${out}/class/sframework/skip_registration"/>
    <copy file="${solar.jar}/unoil.jar"
        todir="${out}/class/sframework/skip_registration"/>
  </target>
<!--  <target name="buildunopackage_win7" depends="build.conditions" if="win7.build">
    <mkdir dir="${out}/class/sframeworkinstall/sframework"/>
    <mkdir dir="${out}/class/sframework"/>
    <copy file="${solar.bin}/ScriptFramework.rdb"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptRuntimeForJava.jar"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptFramework.jar"
        todir="${out}/class/sframework/"/>
    <mkdir dir="${out}/class/sframework/windows.plt"/>
    <copy todir="${out}/class/sframework/windows.plt">
        <fileset dir="${prj}/wntmsci7${proext}/bin/">
            <include name="**/*.dll"/>
        </fileset>
    </copy>
    <mkdir dir="${out}/class/sframework/skip_registration"/>
    <copy file="${solar.jar}/unoil.jar"
        todir="${out}/class/sframework/skip_registration"/>
  </target> -->
  <target name="buildunopackage_linux" depends="build.conditions" if="linx86.build">
    <mkdir dir="${out}/class/sframeworkinstall/sframework"/>
    <mkdir dir="${out}/class/sframework"/>
    <copy file="${solar.bin}/ScriptFramework.rdb"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptRuntimeForJava.jar"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptFramework.jar"
        todir="${out}/class/sframework/"/>
    <mkdir dir="${out}/class/sframework/linux_x86.plt"/>
    <copy todir="${out}/class/sframework/linux_x86.plt">
        <fileset dir="${prj}/unxlngi5${proext}/lib/">
            <include name="**/lib*.so"/>
        </fileset>
    </copy>
    <mkdir dir="${out}/class/sframework/skip_registration"/>
    <copy file="${solar.jar}/unoil.jar"
        todir="${out}/class/sframework/skip_registration"/>
  </target>
  <target name="buildunopackage_solaris" depends="build.conditions" if="solsparc.build">
    <mkdir dir="${out}/class/sframeworkinstall/sframework"/>
    <mkdir dir="${out}/class/sframework"/>
    <copy file="${solar.bin}/ScriptFramework.rdb"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptRuntimeForJava.jar"
        todir="${out}/class/sframework/"/>
    <copy file="${out}/class/ScriptFramework.jar"
        todir="${out}/class/sframework/"/>
    <mkdir dir="${out}/class/sframework/solaris_sparc.plt"/>
    <copy todir="${out}/class/sframework/solaris_sparc.plt">
        <fileset dir="${prj}/unxsols4${proext}/lib/">
            <include name="**/lib*.so"/>
        </fileset>
    </copy>
    <mkdir dir="${out}/class/sframework/skip_registration"/>
    <copy file="${solar.jar}/unoil.jar"
        todir="${out}/class/sframework/skip_registration"/>
  </target>
  <target name="buildunopackage" depends="buildunopackage_win8,buildunopackage_linux,buildunopackage_solaris">
  <!-- <target name="buildunopackage" depends="buildunopackage_win9,buildunopackage_win7,buildunopackage_linux,buildunopackage_solaris"> -->
    <copy file="installer/ProtocolHandler.xcu"
        todir="${out}/class/sframework/"/>
    <zip zipfile="${out}/class/sframeworkinstall/sframework/ooscriptframe.zip"
        basedir="${out}/class/sframework">
    </zip>
  </target>

  <!-- ================== Build JavaScript UNO package ===================== -->
  <target name="buildjsuno">
    <mkdir dir="${out}/class/sframeworkinstall/sframework"/>

    <mkdir dir="${out}/class/jsruntime"/>
    <mkdir dir="${out}/class/jsruntime/skip_registration"/>
    <mkdir dir="${out}/class/jsruntimetmp"/>

    <copy file="${out}/class/ScriptRuntimeForJavaScript.jar"
        todir="${out}/class/jsruntime/"/>
    <copy file="installer/Scripting.JavaScript.xcu"
        tofile="${out}/class/jsruntime/Scripting.xcu"/>

    <unzip src="${install.dir}/js.jar"
        dest="${out}/class/jsruntimetmp"/>

    <javac srcdir="${prj}/examples/java/debugger"
           destdir="${out}/class/jsruntimetmp"
              includes="rhino/Main.java" classpathref="debuggerclasspath"
       debug="${debug}" optimize="${optimize}" deprecation="on"/>

    <zip destfile="${out}/class/jsruntime/skip_registration/js.jar"
        basedir="${out}/class/jsruntimetmp" includes="**"/>

    <zip zipfile="${out}/class/sframeworkinstall/sframework/jsruntime.zip"
        basedir="${out}/class/jsruntime">
    </zip>
  </target>

  <!-- =================== Build BeanShell UNO package ===================== -->
  <target name="buildbshuno">
    <mkdir dir="${out}/class/bshruntime"/>
    <copy file="${out}/class/ScriptRuntimeForBeanShell.jar"
        todir="${out}/class/bshruntime/"/>
    <copy file="installer/Scripting.BeanShell.xcu"
        tofile="${out}/class/bshruntime/Scripting.xcu"/>
    <mkdir dir="${out}/class/bshruntime/skip_registration"/>
    <copy file="${install.dir}/bsh-1.2b7.jar"
        todir="${out}/class/bshruntime/skip_registration"/>
    <zip zipfile="${out}/class/sframeworkinstall/sframework/bshruntime.zip"
        basedir="${out}/class/bshruntime">
    </zip>
  </target>

  <!-- ========= Package schema, scripts, dialogs & examples =========== -->
  <target name="packagedialogsandexamples" depends="buildexamples">
    <mkdir dir="${out}/class/sframeworkinstall/schema"/>
    <copy file="installer/Scripting.xcs"
        todir="${out}/class/sframeworkinstall/schema/"/>
    <mkdir dir="${out}/class/sframeworkinstall/bindingdialog"/>
    <copy todir="${out}/class/sframeworkinstall/bindingdialog">
        <fileset dir="bindings/">
            <include name="**/*.x*"/>
        </fileset>
    </copy>
    <mkdir dir="${out}/class/sframeworkinstall/examples"/>
    <copy todir="${out}/class/sframeworkinstall/examples">
        <fileset dir="${out}/class/examples/"/>
    </copy>
  </target>

  <!-- ===================== Package IDEs ================================== -->
  <target name="packageide">
    <mkdir dir="${out}/class/sframeworkinstall/ide"/>
    <copy todir="${out}/class/sframeworkinstall/ide">
        <fileset dir="${out}/class/">
            <include name="idesupport.jar"/>
            <include name="office.jar"/>
        </fileset>
    </copy>
  </target>

  <!-- ======================== Compile Classes ========================== -->
  <target name="compileinstaller">
    <mkdir dir="${installerclasses}"/>
    <javac srcdir="installer/" destdir="${installerclasses}"
              includes="**/*.java" classpathref="idlclasspath"
       debug="${debug}" optimize="${optimize}" deprecation="on"/>
    <copy file="installer/sidebar.jpg" todir="${out}/class/sframeworkinstall/installer"/>
  </target>

  <!-- ===================== jar ========================= -->
  <target name="jar" depends="buildunopackage,buildbshuno,buildjsuno,compileinstaller,packagedialogsandexamples,packageide">
    <jar jarfile="${jardir}/${installerjarname}"
         basedir="${installerclasses}">
        <manifest>
            <attribute name="Built-By" value="Sun Microsystems"/>
            <attribute name="ScriptFramework-Version" value="${sfversion}"/>
            <attribute name="Main-Class" value="installer.InstallWizard"/>
        </manifest>
    </jar>
  </target>

  <!-- ====================== Clean Generated Files ===================== -->
  <target name="clean">
    <delete dir="${scriptingclasses}"/>
    <delete dir="${storageclasses}"/>
    <delete dir="${jardir}/${scriptingjarname}"/>
  </target>

  <!-- ========================= All In One Build ======================= -->
  <target name="all" depends="clean,jar"/>


</project>