DBD-Oracle
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
# get a cut down $linkwith to pass to MakeMaker liblist
my $linkwith_s = expand_mkvars($linkwith, 1, 1);
# convert "/full/path/libFOO.a" into "-L/full/path -lFOO"
# to cater for lack of smarts in MakeMaker / Liblist
# which ignores /foo/bar.a entries!
my $lib_ext_re = "(a|$Config{dlext}|$Config{so})";
$linkwith_s =~ s!(\S+)/lib(\w+)\.($lib_ext_re)\b!-L$1 -l$2!g;
# Platform specific fix-ups:
# delete problematic crt?.o on solaris
$linkwith_s = del_crtobj($linkwith_s) if $^O eq 'solaris';
$linkwith_s =~ s/-l:lib(\w+)\.sl\b/-l$1/g; # for hp-ux
# this kind of stuff should be in a ./hints/* file:
$linkwith_s .= " -lc" if $Config{osname} eq 'dynixptx'
or $Config{archname} =~ /-pc-sco3\.2v5/;
if ($^O eq 'solaris' and $linkwith_s =~ /-lthread/
and $osvers >= 2.3 and $osvers <= 2.6
) {
print "WARNING: Solaris 2.5 bug #1224467 may cause '_rmutex_unlock' error.\n";
print "Deleting -lthread from link list as a possible workround ($osvers).\n";
$linkwith_s =~ s/\s*-lthread\b/ /g;
}
# extract object files, keep for use later
my @linkwith_o;
push @linkwith_o, $1 while $linkwith_s =~ s/(\S+\.[oa])\b//;
# also extract AIX .exp files since they confuse MakeMaker
push @linkwith_o, $1 while $linkwith_s =~ s/(-bI:\S+\.exp)\b//;
$linkwith_msg = "@linkwith_o $linkwith_s [from $linkvia]";
$opts{LIBS} = [ "-L$libhome $linkwith_s" ];
$opts{dynamic_lib} = { OTHERLDFLAGS => "$::opt_g @linkwith_o \$(COMPOBJS)" };
}
my $OCIINCLUDE = expand_mkvars($MK{INCLUDE} || '', 0, 0);
my @h_dirs = find_headers();
my $inc = join " ", map { "-I$_" } @h_dirs;
$opts{INC} = "$inc $OCIINCLUDE -I$dbi_arch_dir";
}
# --- Handle special cases ---
if ($::opt_g && $^O eq "MSWin32" && $Config::Config{cc} eq "cl") {
$opts{LDDLFLAGS} = $Config::Config{lddlflags} . ' -debug'
}
$opts{DEFINE} .= ' -Wall -Wno-comment' if $Config{gccversion};
$opts{DEFINE} .= ' -Xa' if $Config{cc} eq 'clcc'; # CenterLine CC
$opts{DEFINE} .= ' -DUTF8_SUPPORT' if ($] >= 5.006);
# Use OCIEnvNlsCreate if available for best unicode behaviour
#$opts{DEFINE} .= ' -DNEW_OCI_INIT' if $client_version >= 9.2;
$opts{DEFINE} .= ($^O ne 'VMS')
? " -DORA_OCI_VERSION=\\\"$client_version_full\\\""
: " -DORA_OCI_VERSION=\"$client_version_full\"";
# force additional special behavior for oci 8. For now, this means
# emulating OciLobWriteAppend
# use this if, for some reason the default handling for this function
# doesn't work or you are building a binary release for distribution
# to machines with older client libraries.
print "\nclient_version=$client_version\n\n";
$opts{DEFINE} .= " -DORA_OCI_102" if ($::opt_V && $client_version == 10.2)
or ( $client_version >= 10.2);
$opts{DEFINE} .= " -DORA_OCI_112" if ($::opt_V && $client_version == 11.2)
or ( $client_version >= 11.2);
print "\nDEFINE=$opts{DEFINE}\n\n";
# OCIStmntFetch2() is a feature of OCI 9.0.0
$opts{DEFINE} .= " -DUSE_ORA_OCI_STMNT_FETCH " if ( $client_version < 9.0 );
# Set some private WriteMakefile options if this is 'me' :-)
if ($is_developer){ # a reasonable guess
$BELL = "<BELL>" if ($ENV{LOGNAME}||'') eq 'timbo';
$::opt_g = '-g';
if ($Config{gccversion}) {
$opts{DEFINE} .= ' -Wall -Wcast-align -Wpointer-arith';
$opts{DEFINE} .= ' -Wbad-function-cast -Wcast-qual';
#$opts{DEFINE} .= ' -Wconversion'; # very noisy so remove to see what people say
$opts{DEFINE} .= ' -Wimplicit -Wimplicit-int -Wimplicit-function-declaration -Werror-implicit-function-declaration -Wimport -Winline -Wlong-long -Wmissing-braces -Wmissing-format-attribute -Wmissing-noreturn -Wmultichar -Wpacked -Wparentheses -...
if $::opt_w;
}
$opts{dynamic_lib}->{OTHERLDFLAGS} .= " $::opt_g";
}
# HP-UX 9 cannot link a non-PIC object file into a shared library.
# Since the # .a libs that Oracle supplies contain non-PIC object
# files, we sadly have to build static on HP-UX 9 :(
if ($^O eq 'hpux') {
if ($osvers < 10) {
print "WARNING: Forced to build static not dynamic on $^O $osvers.$BELL\n";
$opts{LINKTYPE} = 'static';
}
else {
print "WARNING: If you have trouble, see DBD::Oracle::Troubleshooting::Hpux...\n"
." you may have to build your own perl, or go hunting for libraries\n";
}
print "WARNING: If you have trouble, try perl Makefile.PL -l\n" unless $::opt_l;
sleep 5;
$opts{DEFINE} .= ' $(HP64DEFINES)' if ($Config{archname} =~ /-thread\b/i and perl_is_64bit());
# linker doesn't understand +DD64 flag Weiguo Sun <wesun@cisco.com>
$opts{dynamic_lib}->{OTHERLDFLAGS} =~ s/\+DD64\b// if $opts{dynamic_lib}->{OTHERLDFLAGS};
# see also const_cccmd for -Aa to -Ae flag change
}
# --- check for Test::Harness bug
( run in 0.621 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )