# -*- perl -*- require 5.8.0; use strict; use vars qw($DBI_INC_DIR); require ExtUtils::MakeMaker; eval { require 5.8.0 } or die << 'EOD'; ####################################### # This module requires a minimum Perl version of 5.8.0 # Please upgrade! ####################################### EOD print " *** Configuring DBD::Teradata (feature-limited free edition)... "; my ($inc, $libs, $defines) = ('','',''); if ($^O eq 'MSWin32') { # # user must set the TDAT_DBD_CLI_LIB environment variable # first time they install on windows (or on re-install) # we'll default to common location # $ENV{TDAT_DBD_CLI_LIB} = 'C:\\PROGRA~1\\NCR\\TERADA~1\\cli\\lib' unless defined($ENV{TDAT_DBD_CLI_LIB}); $ENV{TDAT_DBD_CLI_INC} = 'C:\\PROGRA~1\\NCR\\TERADA~1\\cli\\inc' unless defined($ENV{TDAT_DBD_CLI_INC}); $inc = '-I' . $ENV{TDAT_DBD_CLI_INC}; if ((-e "$ENV{SystemRoot}\\System32\\wincli32.dll") && (-e "$ENV{TDAT_DBD_CLI_LIB}\\wincli32.lib")) { $libs .= "-L$ENV{TDAT_DBD_CLI_LIB} -lwincli32"; # print $libs, "\n"; foreach ('tdusr32', 'localisation', 'tdgss', 'terasso') { $libs .= " -l$_" if -e "$ENV{SystemRoot}\\System32\\$_.dll"; } } } else { # # how do we pick where the libs are installed ? for now assume /usr/lib # my $libdir = $ENV{TDAT_DBD_CLI_LIB} ||= '/usr/lib'; $inc = '-I' . $ENV{TDAT_DBD_CLI_INC} if defined($ENV{TDAT_DBD_CLI_INC}); $defines = '-D__error_t_defined=1'; if (-e "$libdir/libcliv2.so") { $libs .= "-L$libdir -lcliv2 -lnet -lsocket -lresolv"; foreach ('tdusr', 'tdgss') { $libs .= " -l$_.so" if -e "$libdir/lib$_.so"; } } } print " *************************************************************** * * !!!NOTE TO INSTALLERS!!! * * DBD::Teradata will be built using the following * directives: * Libraries: $libs * Include files: $inc * Compile flags: $defines * * If your CLI2 libraries and/or include files are in another * location, please update the TDAT_DBD_CLI_LIB and * TDAT_DBD_CLI_INC environment variables before running * Makefile.PL. * *************************************************************** "; my %opts = ( 'NAME' => 'DBD::Teradata', 'VERSION_FROM' => 'lib/DBD/Teradata.pm', 'dist' => { 'DIST_DEFAULT' => 'all tardist', 'SUFFIX' => 'gz', 'COMPRESS' => 'gzip -9vf' }, 'AUTHOR' => 'Dean Arnold (darnold@presicient.com)', 'ABSTRACT' => 'Perl DBI driver for Teradata', 'PREREQ_PM' => {}, 'LIBS' => $libs, 'INC' => $inc, 'CCFLAGS' => $defines ); my $ok = 1; my $failed = undef; $ok = undef, $failed = 1 unless CheckModule('DBI', '1.40'); $ok = undef, print ' DECIMAL values will be converted via floating point arithmetic. Math::BigInt may be installed for more accurate conversions. ' unless CheckModule('Math::BigInt', '1.73'); print ' Missing modules are available from any CPAN mirror, e.g., http://search.cpan.org/ ' unless $ok; &check_DBI(); exit(0) if $failed; ExtUtils::MakeMaker::WriteMakefile(%opts); sub check_DBI { eval { require DBI::DBD }; foreach (@INC) { $DBI_INC_DIR = "-I$_/auto/DBI", last if -f "$_/auto/DBI/DBIXS.h"; } unless (defined($DBI_INC_DIR)) { print "Unable to locate auto/DBI/DBIXS.h in the following directories:\n\n"; print " $_\n" foreach (@INC); print "\nDoesn't look like a correct DBI installation.\n"; $ok = 0; } exit(0) unless $ok; } sub CheckModule ($$;$) { my($module, $version, $package) = @_; $package ||= $module; if ($version) { print "Checking for $package, $version or later ... "; eval "use $module $version"; print "\nYou don't have the $package package version $version or later, installed.\n" and return 0 if $@; } else { print "Checking for $package ... "; eval "use $module"; print "\nYou don't have the $package package installed.\n" and return 0 if $@; } print "ok\n"; return 1; }