<!--***********************************************************
 * 
 * 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="Scipting 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="macPath" location="${java.home}/../Classes/classes.jar"/>
  <!-- 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>
