| <?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> |