1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
BEGIN {require 5.002;}
use ExtUtils::MakeMaker;
use Config;
# use strict; # we're possibly still 5.002 compliant ?
$Verbose++ if $ENV{USER} eq "k";
WriteMakefile(
NAME => "Msql::Integrat",
"DISTNAME" => "Msql-modules",
"dist" => { SUFFIX => ".gz", DIST_DEFAULT => 'all tardist',
COMPRESS => "gzip -9f" },
VERSION_FROM => "lib/Msql/Integrat.pm",
EXE_FILES => [qw(pmsql)],
CONFIGURE => \&Msql::Config::initialize,
);
package MY; # so that "SUPER" works right
sub test {
my $inherited = shift->SUPER::test(@_);
# warn "pre inherited[$inherited]";
my $matched = $inherited =~ s/(test\s*::[^\n]*\n)(\t[^\n]+\n)*\n/$1\n/s;
# warn "inherited matched[$matched]";
$inherited;
}
package Msql::Config;
use ExtUtils::MakeMaker qw(prompt);
use Config;
use vars qw(%X);
%X = ();
sub initialize {
return \%X if %X;
%X=();
my @msqldir = ($ENV{MSQL_HOME}, qw{/usr /usr/local/Hughes /usr/local/Minerva /usr/local /usr/mSQL /opt/mSQL});
my($msqldir,$gooddir);
for $msqldir (@msqldir) {
if (-f "$msqldir/include/msql.h") {
$gooddir = $msqldir;
last;
}
}
$gooddir ||= $msqldir[0];
# $gooddir = prompt("
#Where is your msql installed? Please tell me the directory that contains
#the subdirs lib/ and include/.",$gooddir) || $gooddir # || for 5.002
# unless exists $ENV{MSQL_HOME} && $gooddir eq $ENV{MSQL_HOME};
my $headerdir="$gooddir/include";
die "No msql.h file found\n" unless -f "$headerdir/msql.h";
# the necessity to determine the version at this stage is legacy ADESC
# the necessity to determine how many arguments are needed for
# msqlget*conf is due to random changes in the API
my $version = "MSQL1";
my $getconf = "";
open MSQL, "$headerdir/msql.h"
or die "Couldn't open $headerdir/msql.h: $!";
local $/ = "\n";
while (<MSQL>) {
if (/IDX_TYPE/) {
$version = "MSQL2";
}
if (
m{
^
(int|char)
\s+
\*?
msqlGet
(Int|Char)
Conf
\s+
__ANSI_PROTO
\(\(
char
\s*
\*\)\)
}x
) {
$getconf = " -DMSQLGETXCONF1";
}
}
my $libdir="$gooddir/lib";
my $extralibs = "";
my $linkwith = "";
if ( $Config{osname} eq 'sco_sv' ) { # Some extra libraries need added for SCO
print q{Yuk! I see that you are a SCO Unix system. We\'ll add -lc to the list of
libraries to link with...
};
$extralibs = "-lc";
} elsif ( $Config{osname} eq 'solaris' ) {
# We need to link with -R if we're on Solaris.......Brain-damaged....
print q{Oh dear. Solaris? Let\'s add some more flags into the linker stage...
};
$linkwith = "-L$libdir -R$libdir";
} elsif ( $Config{osname} eq 'hpux' ) {
# We need to add +z to the list of CFLAGS if we're on HP-SUX, or -fPIC
# if we're on HP-SUX and using 'gcc'
if ( $Config{cccdlflags} eq '+z' ) {
print q{You\'re building on HP-UX with the HP compiler.
You might get a warning at the link stage of:
ld: DP-Relative Code in file .../libmsql.a(libmsql.o)
> - Shared Library must be Position-Independent
You\'ll have to recompile libmsql.a from the mSQL distribution with the
'+z' flag of your C compiler.
};
} elsif( $Config{cccdlflags} eq '-fPIC' ) {
print q{You\'re building on HP-UX with the GNU C Compiler.
You might get a warning at the link stage like:
ld: DP-Relative Code in file .../libmsql.a(libmsql.o)
> - Shared Library must be Position-Independent
You\'ll have to recompile libmsql.a from the mSQL distribution specifying
the '-fPIC' flag to produce Position-Independent code.
};
}
}
# List the libraries we're linking with (ADESC)
my $sysliblist = "-L$libdir -lmsql -lm $extralibs";
my(@headerfiles) = ("$headerdir/msql.h");
$X{macro} = {MSQL_HOME => $gooddir};
$X{dynamic_lib} = { OTHERLDFLAGS => '-L$(MSQL_HOME)/lib ' . $linkwith } if $linkwith;
$X{DEFINE} = "-D$version$getconf";
$X{LIBS} = $sysliblist;
$X{INC} = "-I$headerdir -I\$(INSTALLSITEARCH)/auto/DBI -I\$(INSTALLARCHLIB)";
$X{H} = \@headerfiles;
\%X;
}
|