<!--***********************************************************
 *
 * 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
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 ***********************************************************-->


<project name="Scripting Framework" default="all" basedir=".">

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

  <property name="prj" value=".."/>
  <property name="build.compiler"   value="modern"/>
  <property name="optimize"   value="off"/>
  <property name="debug"   value="on"/>
  <property name="jardir" value="${out}/class"/>
  <property name="bindir" value="${out}/bin"/>
  <property name="idesupport.dir" value="org/openoffice/idesupport"/>
  <property name="netbeans.dir" value="org/openoffice/netbeans/modules/office"/>
  <property name="framework.dir" value="Framework/com/sun/star/script/framework/security"/>

  <!-- Change this property if you are building NetBeans editor support jar.
       Not needed in default build -->
  <property name="netbeans.install.path" value="/export/home/netbeans"/>

  <property environment="env"/>
  <property name="env.BSH_JAR" value="${solar.jar}/bsh.jar"/>

  <target name="eval_environment">
    <condition property="with_rhino">
      <equals arg1="${env.ENABLE_JAVASCRIPT}" arg2="YES" />
    </condition>
    <condition property="with_beanshell">
      <equals arg1="${env.ENABLE_BEANSHELL}" arg2="YES" />
    </condition>
  </target>

  <!-- ==================== classpath setting ============================ -->
  <path id="idlclasspath">
    <pathelement location="${solar.jar}/jurt.jar"/>
    <pathelement location="${solar.jar}/unoil.jar"/>
    <pathelement location="${solar.jar}/juh.jar"/>
    <pathelement location="${solar.jar}/java_uno.jar"/>
    <pathelement location="${solar.jar}/ridl.jar"/>
    <pathelement location="${env.BSH_JAR}"/>
    <pathelement location="${solar.jar}/js.jar"/>
    <pathelement location="${jardir}"/>
  </path>

  <path id="idesupport.class.path">
    <pathelement path="${jardir}"/>
  </path>

  <path id="openide.class.path">
    <pathelement path="${jardir}"/>
    <pathelement path="${solar.jar}/openide.jar"/>
  </path>

  <path id="netbeans.editor.support.classpath">
    <pathelement path="${jardir}"/>
    <pathelement path="${netbeans.install.path}/modules/ext/nb-editor.jar"/>
  </path>

  <condition property="boot_refID" value="macPath" else="nonMacPath">
    <and>
      <os family="mac"/>
      <os family="unix"/>
    </and>
  </condition>

  <path id="mac.apple.java.path" location="${java.home}/../Classes/classes.jar"/>
  <path id="mac.oracle.java.path" location="${java.home}/lib/rt.jar"/>

  <condition property="mac.java.path" value="mac.oracle.java.path" else ="mac.apple.java.path">
    <and>
      <os family="mac"/>
      <os family="unix"/>
      <contains string="${java.version}" substring="1.8" casesensitive="false" />
      <or>
        <contains string="${java.vendor}" substring="Oracle" casesensitive="false" />
        <contains string="${java.vendor}" substring="adoptopenjdk" casesensitive="false" />
        <contains string="${java.vendor}" substring="azul" casesensitive="false" />
      </or>
    </and>
  </condition>

  <path id="macPath" refID="${mac.java.path}"/>

  <!-- rhino.jar from OpenJDK breaks build -->
  <path id="nonMacPath">
    <fileset dir="${java.home}/">
       <include name="jre/lib/*.jar"/>
       <include name="lib/*.jar"/>
       <exclude name="jre/lib/rhino.jar"/>
       <exclude name="lib/rhino.jar"/>
     </fileset>
  </path>
  <path id="my.bootstrap.classpath" refID="${boot_refID}"/>

  <!-- ===================== Prepare Directories ========================= -->
  <target name="prepare">
    <mkdir dir="${jardir}"/>
  </target>

  <!-- ======================== Compile Classes ========================== -->
  <target name="compile" depends="prepare, eval_environment">
    <javac srcdir="com" destdir="${jardir}"
         includes="**/*.java" classpathref="idlclasspath" includeantruntime="false"
         debug="${debug}" optimize="${optimize}" deprecation="off">
      <exclude name="**/provider/javascript/*.java" unless="with_rhino" />
      <exclude name="**/provider/beanshell/*.java" unless="with_beanshell" />
      <compilerarg value="-Xbootclasspath:${toString:my.bootstrap.classpath}"/>
    </javac>
    <javac srcdir="Framework/" destdir="${jardir}"
         includes="**/*.java" classpathref="idlclasspath" debug="${debug}"
         optimize="${optimize}" deprecation="off" includeantruntime="false">
     <compilerarg value="-Xbootclasspath:${toString:my.bootstrap.classpath}"/>
    </javac>
  </target>

  <target name="idesupport.compile" depends="compile, prepare">
    <javac srcdir="." destdir="${jardir}"
           debug="${debug}" deprecation="on">
      <classpath refid="idesupport.class.path"/>
      <exclude name="${idesupport.dir}/**/.*/*"/>
      <exclude name="${idesupport.dir}/localoffice/**/*"/>
      <exclude name="${idesupport.dir}/LocalOffice.java"/>
      <include name="${idesupport.dir}/*.java"/>
      <include name="${idesupport.dir}/*/*.java"/>
    </javac>
  </target>

  <target name="localoffice.compile" depends="prepare">
    <javac srcdir="." destdir="${jardir}"
           debug="${debug}" deprecation="on">
      <classpath refid="idlclasspath"/>
      <exclude name="${idesupport.dir}/localoffice/.*/*"/>
      <include name="${idesupport.dir}/localoffice/*.java"/>
    </javac>
  </target>

  <target name="netbeans.compile" depends="idesupport.compile, prepare">
    <javac srcdir="." destdir="${jardir}"
           debug="${debug}" deprecation="on">
      <classpath refid="openide.class.path"/>
      <exclude name="${netbeans.dir}/**/.*/*"/>
      <include name="${netbeans.dir}/**/*.java"/>
    </javac>
  </target>

  <target name="netbeans.editor.support" depends="prepare">
    <javac srcdir="." destdir="${jardir}"
           debug="${debug}" deprecation="on">
      <classpath refid="netbeans.editor.support.classpath"/>
      <include name="org/openoffice/netbeans/editor/*.java"/>
    </javac>
    <jar jarfile="${jardir}/nb-editorsupport.jar">
      <fileset dir="${jardir}">
          <include name="org/openoffice/netbeans/editor/*.class"/>
      </fileset>
      <fileset dir=".">
        <include name="org/openoffice/netbeans/editor/OOo.jcs"/>
        <include name="org/openoffice/netbeans/editor/OOo.jcb"/>
      </fileset>
    </jar>
  </target>

  <!-- ===================== jar ========================= -->
  <target name="jar.provider.java" depends="compile">
    <jar jarfile="${jardir}/ScriptProviderForJava.jar"
         basedir="${jardir}">
        <manifest>
            <attribute name="Built-By" value="Sun Microsystems"/>
            <attribute name="RegistrationClassName"
                       value="com.sun.star.script.framework.provider.java.ScriptProviderForJava"/>
            <attribute name="Class-Path" value="ScriptFramework.jar"/>
            <attribute name="UNO-Type-Path" value=""/>
        </manifest>
        <include name="**/provider/java/*.class"/>
    </jar>
  </target>

  <target name="jar.provider.beanshell" depends="compile" if="with_beanshell">
    <jar jarfile="${jardir}/ScriptProviderForBeanShell.jar"
         basedir="${jardir}">
        <manifest>
            <attribute name="Built-By" value="Sun Microsystems"/>
            <attribute name="RegistrationClassName"
                       value="com.sun.star.script.framework.provider.beanshell.ScriptProviderForBeanShell"/>
            <attribute name="Class-Path" value="ScriptFramework.jar bsh.jar"/>
            <attribute name="UNO-Type-Path" value=""/>
        </manifest>
        <include name="**/provider/beanshell/*.class"/>
        <fileset dir=".">
          <include name="**/provider/beanshell/*.bsh"/>
        </fileset>
    </jar>
  </target>

  <target name="jar.provider.javascript" depends="compile" if="with_rhino">
    <jar jarfile="${jardir}/ScriptProviderForJavaScript.jar"
         basedir="${jardir}">
        <manifest>
            <attribute name="Built-By" value="Sun Microsystems"/>
            <attribute name="RegistrationClassName"
                       value="com.sun.star.script.framework.provider.javascript.ScriptProviderForJavaScript"/>
            <attribute name="Class-Path" value="ScriptFramework.jar js.jar"/>
            <attribute name="UNO-Type-Path" value=""/>
        </manifest>
        <include name="**/provider/javascript/*.class"/>
        <fileset dir=".">
          <include name="**/provider/javascript/*.js"/>
        </fileset>
    </jar>
  </target>

  <target name="jar.scriptframework" depends="compile">
    <jar jarfile="${jardir}/ScriptFramework.jar"
         basedir="${jardir}">
        <manifest>
            <attribute name="Built-By" value="Sun Microsystems"/>
            <attribute name="RegistrationClassName"
                       value="com.sun.star.script.framework.security.SecurityDialog"/>
            <attribute name="UNO-Type-Path" value=""/>
        </manifest>
        <include name="**/security/*"/>
        <include name="**/log/*.class"/>
        <include name="**/provider/*.class"/>
        <include name="**/browse/*.class"/>
        <include name="**/container/*.class"/>
        <include name="**/io/*.class"/>
    </jar>
  </target>

  <target name="jar" depends="jar.provider.java,jar.provider.beanshell,jar.provider.javascript,jar.scriptframework">
  </target>

  <target name="idesupport.jar" depends="idesupport.compile">
    <jar jarfile="${jardir}/idesupport.jar">
      <fileset dir="${jardir}">
          <include name="${idesupport.dir}/**/*.class"/>
          <include name="CommandLineTools*"/>
          <exclude name="${idesupport.dir}/localoffice/*.class"/>
      </fileset>
      <fileset dir=".">
        <include name="${idesupport.dir}/ui/add.gif"/>
      </fileset>
    </jar>
  </target>

  <target name="localoffice.jar" depends="localoffice.compile">
    <unjar
      src="${solar.jar}/unoil.jar"
      dest="${jardir}"/>
    <jar jarfile="${jardir}/localoffice.jar">
      <fileset dir="${jardir}">
        <include name="${idesupport.dir}/localoffice/*.class"/>
        <include name="drafts/com/sun/star/script/framework/storage/*.class"/>
      </fileset>
    </jar>
  </target>

  <target name="netbeans.jar" depends="netbeans.compile">
    <jar jarfile="${jardir}/office.jar" manifest="manifest.mf">
      <fileset dir="${jardir}">
        <include name="${netbeans.dir}/**/*.class"/>
        <exclude name="${netbeans.dir}/**/ParcelDescriptorChildren.class"/>
        <exclude name="${netbeans.dir}/**/ScriptNode.class"/>
        <include name="${idesupport.dir}/**/*.class"/>
        <include name="CommandLineTools*"/>
      </fileset>
      <fileset dir=".">
        <include name="${idesupport.dir}/ui/add.gif"/>
        <include name="${netbeans.dir}/resources/*"/>
        <include name="${netbeans.dir}/resources/templates/*"/>
        <include name="${netbeans.dir}/**/Bundle*"/>
      </fileset>
    </jar>
  </target>

  <!-- Uncomment this target when building within NetBeans to reinstall the
       module.
  <target name="netbeans.install" depends="netbeans.package">
    <copy file="${jardir}/localoffice.jar"
          tofile="${netbeans.home}/modules/ext/localoffice.jar"/>
    <nbinstaller action="reinstall" module="${jardir}/office.jar"/>
  </target>
  -->

  <!-- ====================== Clean Generated Files ===================== -->
  <target name="clean">
    <delete file="${jardir}/ScriptProviderForJava.jar"/>
    <delete file="${jardir}/ScriptProviderForJavaScript.jar"/>
    <delete file="${jardir}/ScriptProviderForBeanShell.jar"/>
    <delete file="${jardir}/ScriptFramework.jar"/>
    <delete file="${jardir}/office.jar"/>
    <delete file="${jardir}/localoffice.jar"/>
    <delete file="${jardir}/idesupport.jar"/>
  </target>

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