DBD-MaxDB

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

if ($^O eq 'MSWin32') {
  $SQLDBC_lib    = Win32::GetShortPathName($SQLDBC_lib);
  $SQLDBC_slPath = Win32::GetShortPathName($SQLDBC_slPath);
  $SQLDBC_sl     = Win32::GetShortPathName($SQLDBC_sl);
  $SQLDBC_incl   = Win32::GetShortPathName($SQLDBC_incl);
  $SQLDBC_SDK    = Win32::GetShortPathName($SQLDBC_SDK);
}

checkSQLDBCSDK($SQLDBC_sl);
checkSQLDBCSDK("$SQLDBC_incl/SQLDBC_C.h");
checkSQLDBCSDK("$SQLDBC_incl/SQLDBC_Types.h");
checkSQLDBCSDK($SQLDBC_lib) if ($^O eq 'MSWin32');

print "Using MaxDB SQLDBC sdk installed in $SQLDBC_SDK\n";

checkSQLDBCSDKVersion($SQLDBC_incl.'/SQLDBC_C.h');

if ($^O ne 'MSWin32') {
	$SQLDBC_sl     =~ s/^(.*\s+.*)/\"$1\"/;
	$SQLDBC_slPath =~ s/^(.*\s+.*)/\"$1\"/;
	$SQLDBC_incl   =~ s/^(.*\s+.*)/\"$1\"/;
}

if ($^O eq 'aix') {
  $opts{CCFLAGS} .= " -DREL30 -DAIX -D_IBMR2 -DSAG -ma -qnoinline -DBIT64 -qtbtable=full -qalias=noansi -U__STR__ -qchars=signed  -D_LARGE_FILES -D_REENTRANT -qnotempinc";
}
$opts{INC} .= ' -I'.$SQLDBC_incl." -I$dbi_arch_dir";
if ($^O eq 'aix') {
$opts{INC} .= " -q64 -qcpluscmt -qsuppress=1506-234 -DBIT64";
}
if ($^O ne 'MSWin32') {
  $opts{LIBS} .= ' -L'.$SQLDBC_slPath.' -lSQLDBC_C -ldl';
} else {
  $opts{LIBS} .= ' '.$SQLDBC_lib;
}

print "\n";
WriteMakefile(%opts);

local($^W)=0;
print qq{
The DBD::MaxDB tests will use these values for the database connection:
    DBI_DSN=$ENV{DBI_DSN}	e.g. dbi:MaxDB:<host>/<dbname>
    DBI_USER=$ENV{DBI_USER}
    DBI_PASS=$ENV{DBI_PASS}
};
print "Warning: not all required environment variables are set.\n"
	unless ($ENV{DBI_DSN} && $ENV{DBI_USER} && $ENV{DBI_PASS});
print "Warning: DBI_DSN ($ENV{DBI_DSN}) doesn't start with 'dbi:MaxDB:'\n"
	if ($ENV{DBI_DSN} && $ENV{DBI_DSN} !~ m/^dbi:MaxDB:/);
print "\n";

sub MY::post_constants {
   my ($self) = shift;
   my $sqldbc_sl_name = 'libSQLDBC_C.'.$Config{so};
   '
# copy some files
inst_libdbdsqldbc =       ' . File::Spec->catdir ($self->{INST_LIB}, 'DBD/MaxDB') . '
getinfo_pm =              ' . File::Spec->catfile($self->{INST_LIB}, 'DBD/MaxDB', 'GetInfo.pm') . '
typeinfoascii_pm =        ' . File::Spec->catfile($self->{INST_LIB}, 'DBD/MaxDB', 'TypeInfoAscii.pm') . '
typeinfounicode_pm =      ' . File::Spec->catfile($self->{INST_LIB}, 'DBD/MaxDB', 'TypeInfoUnicode.pm') . '
inst_libdbdsqldbc_c_sl =  ' . File::Spec->catdir ($self->{INST_ARCHAUTODIR}, '') . '
libdbdsqldbc_c_sl =       ' . File::Spec->catfile($self->{INST_ARCHAUTODIR}, '', $sqldbc_sl_name) . '

config :: $(getinfo_pm) $(typeinfoascii_pm) $(typeinfounicode_pm) $(libdbdsqldbc_c_sl)
	@$(NOOP)

$(getinfo_pm): GetInfo.pm
	$(NOECHO) $(MKPATH) $(inst_libdbdsqldbc)
	$(NOECHO) $(RM_F) $(getinfo_pm)
	$(CP) GetInfo.pm $(getinfo_pm)

$(typeinfoascii_pm): TypeInfoAscii.pm
	$(NOECHO) $(MKPATH) $(inst_libdbdsqldbc)
	$(NOECHO) $(RM_F) $(typeinfoascii_pm)
	$(CP) TypeInfoAscii.pm $(typeinfoascii_pm)

$(typeinfounicode_pm): TypeInfoUnicode.pm
	$(NOECHO) $(MKPATH) $(inst_libdbdsqldbc)
	$(NOECHO) $(RM_F) $(typeinfounicode_pm)
	$(CP) TypeInfoUnicode.pm $(typeinfounicode_pm)

$(libdbdsqldbc_c_sl): '.$SQLDBC_sl.'
	$(NOECHO) $(MKPATH) $(inst_libdbdsqldbc_c_sl)
	$(NOECHO) $(RM_F) $(libdbdsqldbc_c_sl)
	$(CP) '.$SQLDBC_sl.' $(libdbdsqldbc_c_sl)
';
}

# ====================================================================
sub checkSQLDBCSDK {
  my ($filename)=@_;
  
  unless ( -f $filename){ 
    print "\n";
    print "Cannot find $filename\n\n";
    print "The DBD::MaxDB module needs to link with MaxDB's common database \n";
    print "interface SQLDBC. The DBD::MaxDB module does _not_ include the\n";
    print "MaxDB SQLDBC sdk! If it isn't already installed you can download\n";
    print "it from the MaxDB homepage.\n\n";
    print "You need also to set the path to the SQLDBC sdk directory.\n";
    print "You can do this either by setting the SQLDBCSDK environment variable\n";
    print "or by running 'perl Makefile.PL -o <sqldbc-sdk-dir>'.\n";
    print "Alternatively you can specify the path to the include and library\n";
    print "files separately using the -i <include-path> and -l <lib-path>\n";
    print "command line switches.\n\n";
    die "Makefile.PL aborted.\n";
  }
}

sub checkSQLDBCSDKVersion {
  my ($sqldbc_h) = @_;
  my $version = undef; 
  my $version_okay = 0; 
  if (open FILE_IN, "<$sqldbc_h") {
    while (<FILE_IN>) {
      chomp $_;
      if (/^#define SQLDBC_CHeaderVersion \"SQLDBC_C.H\s*((\d+).(\d+).(\d+)\s*BUILD\s*(\d+).*)\"$/) {
			   if ( $2<7 || ($2>=7 && $3<6) || ($2==7 && $3==6 && $4==0 && $5<=19)){ 
			    $version = $1;
          last;
			  }
			  $version_okay = 1;
        print "SQLDBC sdk version is $1\n"; 
        last;
      }
    }
    close (FILE_IN);
    if (! $version_okay){ 
      print "\n";
      if ($version){
        print "Wrong version of SQLDBC sdk found $version.\n"; 
      }else {
        print "Cannot find the version of SQLDBC sdk.\n"; 
      }
	    print "The version of SQLDBC-SDK must be at least 7.6.0 Build 019 but\n";
	    print "you should always try the newest version available.\n\n";
	    print "The DBD::MaxDB module needs to link with MaxDB's common database \n";
	    print "interface SQLDBC. The DBD::MaxDB module does _not_ include the\n";
	    print "MaxDB SQLDBC sdk! If it isn't already installed you can download\n";
	    print "it from the MaxDB homepage.\n\n";



( run in 2.411 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )