<!--***********************************************************
 * 
 * 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="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.7" casesensitive="false" /> 
      <contains string="${java.vendor}" substring="Oracle" casesensitive="false" /> 
    </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>
