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 )