blob: 1ee9685290cf2b9e405b11e126eef3ff4d5c2eca [file] [log] [blame] [edit]
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License v. 2.0, which is available at
http://www.eclipse.org/legal/epl-2.0.
This Source Code may also be made available under the following Secondary
Licenses when the conditions for such availability set forth in the
Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
version 2 with the GNU Classpath Exception, which is available at
https://www.gnu.org/software/classpath/license.html.
SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-->
<!DOCTYPE project [
<!ENTITY commonBuild SYSTEM "ant-common.xml">
]>
<project name="JavaMail" default="all" basedir="."
xmlns:cpptasks="antlib:org.sf.net.antcontrib.cpptasks">
<taskdef resource="cpptasks.tasks"/>
<typedef resource="cpptasks.types"/>
<!-- ========== Initialize Properties =================================== -->
<!--
component.name: required property. the value should be the
name of the component directory
-->
<property name="component.name" value="mbox"/>
<property file="./build.properties"/>
<property name="cc.debug" value="false"/>
<property name="generated.dir" value="mbox/target/generated"/>
<property name="obj.dir" value="mbox/target/native/${os.name}-${os.arch}"/>
<property name="lib.dir" value="mbox/target/lib/${os.name}-${os.arch}"/>
<condition property="is-solaris">
<os name="SunOS"/>
</condition>
&commonBuild;
<!-- all -->
<target name="all" depends="mboxcompile, mboxcc, mboxjar"
description="Build entire mbox component">
</target>
<!-- build -->
<target name="build" depends="mboxcompile, mboxcc, mboxjar"
description="Build entire mbox component">
</target>
<!-- init. Initialization involves creating publishing directories and
OS specific targets. -->
<target name="init" description="${component.name} initialization">
<tstamp>
<format property="start.time" pattern="MM/dd/yyyy hh:mm aa"/>
</tstamp>
<echo message="Building component ${component.name}"/>
<mkdir dir="${component.classes.mbox.dir}"/>
<mkdir dir="${generated.dir}"/>
<mkdir dir="${obj.dir}"/>
<mkdir dir="${lib.dir}"/>
</target>
<!-- prepare manifest files for jars -->
<target name="cook-manifest" depends="init"
description="Generate MANIFEST.MF files">
<mkdir dir="${component.classes.mbox.dir}/manifest"/>
<copy file="${resources.mbox.dir}/META-INF/MANIFEST.MF"
tofile="${component.classes.mbox.dir}/manifest/MANIFEST.MF">
<filterset begintoken="{" endtoken="}">
<filter token="mail.spec.version"
value="${release.specversion}"/>
<filter token="mail.version" value="${release.version}"/>
</filterset>
</copy>
</target>
<!-- mbox compile -->
<target name="mboxcompile" depends="init"
description="Compile com/sun/mail/mbox sources">
<javac srcdir="${src.mbox.dir}"
destdir="${component.classes.mbox.dir}"
debug="${javac.debug}"
optimize="${javac.optimize}"
source="${javac.source}"
deprecation="${javac.deprecation}"
failonerror="true"
target="${javac.target}">
<classpath>
<pathelement location="${component.classes.dir}"/>
<pathelement location="${activation.jar}"/>
</classpath>
<!--
<include name="com/sun/mail/mbox/**"/>
-->
</javac>
</target>
<target name="mboxheaders" depends="mboxcompile">
<javah destdir="${generated.dir}"
force="yes"
verbose="yes"
classpath="${component.classes.mbox.dir}:${component.classes.dir}">
<class name="com.sun.mail.mbox.UNIXFile"/>
<class name="com.sun.mail.mbox.UNIXInbox"/>
</javah>
</target>
<target name="mboxcc" depends="mboxheaders, mboxcc-solaris"/>
<!--
make-based build uses these compiler and linker options:
cc -Xa -xO2 -v -D_REENTRANT -Dsparc -DSOLARIS2
cc -G -o ../../../../../../build/solaris/lib/sparc/libmbox.so
obj/sparc/./UNIXFile.o obj/sparc/./UNIXInbox.o
-L/java/re/jdk/1.4/archive/fcs/binaries/solsparc/jre/lib/sparc
-L../../../../../../build/solaris/lib/sparc
-lmail
-L../../../../../../build/solaris/lib/sparc
-ljava
-lc
-->
<target name="mboxcc-solaris" depends="mboxheaders" if="is-solaris">
<cc debug="${cc.debug}"
link="shared"
outfile="${lib.dir}/mbox"
objdir="${obj.dir}">
<compiler name="sunc89"/>
<fileset dir="mbox/src/main/cpp" includes="**/*.c"/>
<includepath location="${generated.dir}"/>
<sysincludepath location="${java.home}/../include"/>
<sysincludepath location="${java.home}/../include/solaris"/>
<defineset>
<define name="_REENTRANT"/>
</defineset>
<compilerarg value="-Xa"/>
<compilerarg value="-xO2"/>
<linker name="sunc89">
<syslibset libs="mail,java,c"/>
</linker>
</cc>
</target>
<target name="clean" description="Clean the build">
<delete includeEmptyDirs="true" failonerror="false">
<fileset dir="${component.classes.mbox.dir}"/>
</delete>
</target>
<!-- JavaMail bundle build targets -->
<target name="mboxrelease" depends="init, mboxjar, mboxcc">
<property name="rel" value="mbox-${release.version}"/>
<property name="zipname" value="${rel}.zip"/>
<delete file="${basedir}/mbox/target/${zipname}"/>
<echo message="Creating mbox bundle ${basedir}/mbox/target/${zipname}"/>
<zip destfile="${basedir}/mbox/target/${zipname}">
<zipfileset dir="${resources.legal.dir}/META-INF" prefix="${rel}"
includes="LICENSE.txt"/>
<zipfileset dir="${release.dir}/lib" prefix="${rel}"
includes="mbox.jar"/>
<zipfileset dir="${lib.dir}/.." prefix="${rel}/lib"
includes="**/*.so"/>
</zip>
</target>
<target name="mboxjar" depends="init, mboxcompile, cook-manifest">
<mkdir dir="${release.dir}/lib"/>
<jar jarfile="${release.mbox.jar}"
manifest="${component.classes.mbox.dir}/manifest/MANIFEST.MF">
<metainf dir="${resources.legal.dir}/META-INF"
includes="LICENSE.txt"/>
<fileset dir="${component.classes.mbox.dir}">
<include name="com/sun/mail/mbox/*.class"/>
<include name="com/sun/mail/mbox/mailcap"/>
</fileset>
</jar>
</target>
<target name="push-to-maven-prepare" depends="-push-to-maven-init, mboxjar"
description="creates an image for the 'push-to-maven' goal">
<delete dir="target/maven-repo" /><!-- clean it -->
<maven-repository-importer destdir="target/maven-repo"
version="${release.version}">
<artifact jar="target/release/mbox.jar" pom="mbox.pom"
srczip="target/mbox.src.zip" />
</maven-repository-importer>
</target>
<target name="push-to-maven" depends="push-to-maven-prepare"
description="pushes jars to the java.net maven repository">
<cvs-import src="target/maven-repo" dest="glassfish/repo" />
</target>
</project>