/usr/local/CPAN/Device-Modem/Makefile.PL


# $Id: Makefile.PL,v 1.6 2005-04-30 21:45:47 cosimo Exp $
use ExtUtils::MakeMaker;

#print "\n\n", '-' x 60, "\n", ' ' x 20, 'Device::Modem setup', "\n", '-' x 60, "\n\n";

my $is_windoze = index($^O, 'Win') >= 0;

#
# my %config = configure();
#

WriteMakefile(
	'AUTHOR'        => 'Cosimo Streppone <cosimo@cpan.org>',
	'ABSTRACT_FROM' => 'Modem.pm',
	'NAME'	        => 'Device::Modem',
	'VERSION_FROM'	=> 'Modem.pm',
	'PREREQ_PM'		=> $is_windoze
                       ? { 'Win32::SerialPort'   => 0 }
                       : { 'Device::SerialPort'  => 0 },
	'META_MERGE'    => {
		resources => {
			repository => 'git://github.com/cosimo/perl5-device-modem.git',
			bugtracker => 'mailto:bug-device-modem@rt.cpan.org',
			license    => 'http://dev.perl.org/licenses/',
		},
	},
);

sub configure {

	my $default;

	#
	# Modem setup
	#

	my $port;
	$default = 'n';   # default = no modem

	do {

		print <<HELP;

* Modem configuration

  Do you have a modem connected to one of your serial ports ?
  Please choose one:

  n) no modem. Tests will not access serial port    *DEFAULT*
HELP

		if( ! $is_windoze ) {
			print "  0) (zero). Modem is connected to [/dev/ttyS0]\n";
		}

		for( 1 .. 4 ) {
			print "  $_) Modem is connected to ", $is_windoze ? 'COM' : '/dev/ttyS', $_, "\n";
		}

		if( ! $is_windoze ) {
			print "  m) Modem is connected to [/dev/modem]\n";
		}

		print "\n? ";

		$port = <STDIN>;
		chomp $port;
		$port = lc substr $port, 0, 1;

		$port = $default unless defined $port;

	} until( index( '01234nm', $port ) != -1 );

	if( $port eq 'n' ) {
		$conf{'port'} = 'NONE';
	} elsif( $port eq 'm' ) {
		$conf{'port'} = '/dev/modem';
	} else {
		$conf{'port'} = $is_windoze ? 'COM%d' : '/dev/ttyS%d';
		$conf{'port'} = sprintf $conf{'port'}, $port;
	}

	$conf{'port'} = 'COM1' if $conf{'port'} eq 'COM0';

	#
	# Baud rate configuration
	#

	my $baud;
	$default = 4;   # default = 19200

	do {

		print <<HELP;

* Serial link speed

  Please choose one:

  1) 2400 baud
  2) 4800 baud
  3) 9600 baud
  4) 19200 baud    *DEFAULT*
  5) 38400 baud

HELP

		print "? ";
		$baud = <STDIN>; chomp $baud; $baud =~ s/\D//g;
		$baud ||= $default;

	} until( $baud >= 1 and $baud <= 5 );

	$conf{'baudrate'} = 2400 << ($baud - 1);

	print "\n- Selected $conf{'baudrate'} speed\n";


	# Write configuration file
	if( open CONF, '>.config.pm' ) {

		print CONF "# Device::Modem setup parameters\n# \$Id: Makefile.PL,v 1.6 2005-04-30 21:45:47 cosimo Exp $\n\n";

		foreach( sort keys %conf ) {
			print CONF "\$Device::Modem::$_ = '$conf{$_}';\n";
		}

		print CONF "\n1;\n\n";
		close CONF;

	}

	return %conf;

}