<?xml version="1.0"?>
<!DOCTYPE project [
<!ENTITY common SYSTEM 'common.xml'>
]>
<!--
 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.

-->

<!--
	This file builds libesmtp using Apache Ant (http://ant.apache.org)
	and the C++ compilation tasks from http://ant-contrib.sourceforge.net.
-->
<project name="esmtp" default="build">

&common;

<property	name="src.dir"
			location="${basedir}"
/>
<property	name="include.dir"
			location="${src.dir}"
/>
<property	name="test.dir"
			location="${src.dir}/test"
/>
<property	name="target.dir"
			location="${basedir}/target"
/>
<property	name="lib.type"
			value="shared"
/>
<property	name="projects.dir"
			location="${target.dir}"
/>

<target	name="usage"
		description="Displays usage notes on build">
	<echo></echo>
</target>

<target	name="init"
		depends="common-init">
</target>

<target	name="clean"
		description="Removes build product files">
	<delete dir="${target.dir}" />
</target>

<target	name="configure-check"
		depends="init">
	<condition	property="esmtp-configure-available"
				value="true">
		<available file="${include.dir}/config.h" />
	</condition>
</target>

<target	name="win-configure"
		depends="configure-check"
		if="is-windows">
	<antcall target="copy-if-changed">
		<param	name="file"
				value="${include.dir}/config.h.in"
		/>
		<param	name="tofile"
				value="${include.dir}/config.h"
		/>
	</antcall>
</target>

<target	name="unix-configure"
		depends="configure-check"
		if="is-unix"
		unless="esmtp-configure-available">
	<!-- Shelling to configure allows cygwin to work -->
	<exec	executable="sh"
			dir="${src.dir}">
		<arg value="./configure" />
	</exec>
</target>

<target	name="configure"
		depends="unix-configure, win-configure"
/>

<target	name="build"
		depends="configure"
		description="Build library">
	<mkdir dir="${executable.dir}/libesmtp-ofiles" />
	<property	name="project.compiler"
				value="${compiler}"
	/>

	<cc	name="${project.compiler}"
		outfile="${executable.dir}/esmtp${lib-suffix}"
		subsystem="console"
		multithreaded="true"
		outtype="${lib.type}"
		objdir="${executable.dir}/libesmtp-ofiles"
		outputfileproperty="esmtp.dll"
		debug="${debug}"
		projectsOnly="${projectsOnly}">
		<fileset dir="${src.dir}">
			<include name="*.c" />
			<exclude name="getaddrinfo.c" />
			<exclude name="gethostbyname.c" if="is-windows" />
			<exclude name="strdup.c" if="is-windows" />
			<exclude name="snprintf.c" if="is-windows" />
			<exclude name="auth-client.c" if="is-windows" />
			<!-- exclude name="siobuf.c" if="is-windows"/ -->
		</fileset>

		<includepath	path="${include.dir}"	/>
		<defineset		define="HAVE_CONFIG_H"	/>
		<compilerarg	value="${pic-option}"
						if="pic-option"
		/>

		<libset	libs="advapi32 ws2_32 mswsock rpcrt4"
				if="is-windows"
		/>
		<libset	libs="ssl crypto"
				if="is-unix"
		/>
		<libset	libs="cw32mt"
				if="is-bcc"
		/>

		<project	type="${project.type}"
					outfile="${projects.dir}/projects/libesmtp"
					if="project.if"
		/>
	</cc>
</target>

<target	name="build-projects">
	<mkdir dir="${projects.dir}" />
	<antcall target="build">
		<param	name="project.if"
				value="true"
		/>
		<param	name="project.type"
				value="${project.type}"
		/>
		<param	name="project.compiler"
				value="${project.compiler}"
		/>
		<param	name="projects.dir"
				value="${projects.dir}"
		/>
		<param	name="projectsOnly"
				value="true"
		/>
	</antcall>
</target>

<target	name="build-projects-vc6"
		description="Builds project files for Microsoft Visual C++ 6">
	<antcall target="build-projects">
		<param	name="project.type"
				value="msvc6"
		/>
		<param	name="project.compiler"
				value="msvc"
		/>
	</antcall>
</target>

<target	name="build-projects-vc8"
		description="Builds project files for Microsoft Visual C++ 2005">
	<antcall target="build-projects">
		<param	name="project.type"
				value="msvc8"
		/>
		<param	name="project.compiler"
				value="msvc"
		/>
	</antcall>
</target>

<target	name="build-projects-xcode"
		description="Builds project files for Apple Xcode">
	<antcall target="build-projects">
		<param	name="project.type"
				value="xcode"
		/>
		<param	name="project.compiler"
				value="g++"
		/>
	</antcall>
</target>

</project>
