use 5.006;

use strict;

use ExtUtils::MakeMaker;
use Config;

if ((not $ARGV[0]) or (not $ARGV[1]))
{
	print "Usage: perl Makefile.PL <path-to-sendmail-source> <path-to-sendmail-obj.dir>\n";
	print "(e.g. 'perl Makefile.PL ../sendmail ../sendmail/obj.FreeBSD.4.0-RELEASE.i386')\n";
	print "\n";
	exit;
}

if (not $Config{usethreads})
{
	print "To use this module, your perl interpreter must have been compiled with\n";
	print "\t-Dusethreads.\n";
	print "\n";
	exit;
}

my $SENDMAIL_PATH = MM->canonpath($ARGV[0]);
my $SENDMAIL_OBJ_PATH = MM->canonpath($ARGV[1]);

my $MILTER_LIB = MM->catdir($SENDMAIL_OBJ_PATH, "libmilter");
my $SMUTIL_LIB = MM->catdir($SENDMAIL_OBJ_PATH, "libsmutil");
my $SM_LIB = MM->catdir($SENDMAIL_OBJ_PATH, "libsm");
my $MILTER_INCLUDE = MM->catdir($SENDMAIL_PATH, "include");
my $SENDMAIL_INCLUDE = MM->catdir($SENDMAIL_PATH, "sendmail");

sub milter_configure
{
	my $hash_ref = {};
	my $libs;
	my $ccflags;

	# Standard milter libraries
	$libs = "-L$MILTER_LIB -L$SMUTIL_LIB -L$SM_LIB -lmilter -lsmutil -lsm";

	# POSIX threads support.
	if ($Config{libs} =~ /-lpthread/)
	{
		$libs .= " -lpthread";
	}
	else
	{
		$ccflags = '-pthread';
	}

	# Solaris 2.6 -lsocket -lnsl support.
	if ($Config{libs} =~ /-lsocket/)
	{
		$libs .= " -lsocket";
	}
	if ($Config{libs} =~ /-lnsl/)
	{
		$libs .= " -lnsl";
	}

	# Solaris and inet_aton / inet_pton functions.
	if (($^O eq 'solaris') && (not $Config{d_inetaton}))
	{
		$libs .= " -lresolv";
	}

	# Only set the CCFLAGS variable if there's something.
	if ($ccflags)
	{
		$hash_ref->{'CCFLAGS'} = $ccflags;
	}

	$hash_ref->{'LIBS'} = [ "$libs" ];

	return $hash_ref;
}

WriteMakefile(
    'NAME'		=> 'Sendmail::Milter',
    'VERSION_FROM'	=> 'Milter.pm',
    'CONFIGURE'		=> \&milter_configure,
    'OBJECT'		=> '$(BASEEXT)$(OBJ_EXT) intpools$(OBJ_EXT) callbacks$(OBJ_EXT)',
    'DEFINE'		=> '',
    'INC'		=> "-I$SENDMAIL_INCLUDE -I$MILTER_INCLUDE",
);