summaryrefslogtreecommitdiffstats
path: root/Makefile.PL
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.PL')
-rw-r--r--Makefile.PL139
1 files changed, 139 insertions, 0 deletions
diff --git a/Makefile.PL b/Makefile.PL
new file mode 100644
index 0000000..fa18b9f
--- /dev/null
+++ b/Makefile.PL
@@ -0,0 +1,139 @@
+#!/usr/bin/perl -w
+
+#
+# This Makefile.PL is an interface to ./configure intended to be used
+# by automatic CPAN builds. It just checks that some needed environment
+# variables are set and eventually tries to guess their value...
+#
+# You should use it instead of the ./configure program ;
+# it accepts the same options.
+#
+
+use strict;
+
+my $libname = "libqt-mt.so";
+my @prefix = ('/usr', '/usr/local');
+
+my $res="";
+my %p;
+my @alt;
+
+exec "./configure --help" if grep /^-?-h(elp)?$/, @ARGV;
+
+unless ($ENV{'QTDIR'} or grep /--with-qt-dir/, @ARGV)
+{
+ print "\n!!!!!!!!!!!! WARNING !!!!!!!!!!!!\n".
+ " Your QTDIR environment variable is not set and you\n".
+ "did not use the '--with-qt-dir=' commandline option.\n".
+ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n";
+ print "Nevermind, I'll try to guess Qt's location.\n";
+ sleep(6);
+ for(@prefix)
+ {
+ my $stdpath = $_."/lib/qt3/lib";
+ if(-s $stdpath."/$libname")
+ {
+ push @alt, glob($stdpath."/$libname*");
+ print "Found what looks like a Qt-3 tree in $_/lib/qt3\n";
+ sleep(1);
+ }
+ }
+
+ unless (@alt)
+ {
+ @alt=`locate $libname 2>/dev/null`;
+
+ if(!check_exit_status($?) || !@alt)
+ {
+ print "mmh... locate did not help. We'll try a find then.\n";
+ sleep(2);
+
+ print "Scanning local file system (ctrl-c to abort)...\n";
+ @alt=`find / -name "$libname*" 2>/dev/null`;
+ }
+ }
+
+ if(!check_exit_status($?) || !@alt)
+ {
+ print "Still no luck... I'll give up and let ./configure work it out\n";
+ }
+ elsif(@alt>1)
+ {
+ print "We have several answers. I'll try to discriminate a bit...\n";
+ sleep(3);
+ for(@alt) { /(.*)\/lib\// and $p{$1}++ }
+ if(keys %p == 1)
+ {
+ $res = each %p;
+ }
+ else
+ {
+ my ($ver,$tmp)=(0,0);
+ for(@alt)
+ {
+ /$libname(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?$/o;
+ $tmp = (($1?$1:0)*100)+(($2?$2:0)*10)+($3?$3:0);
+ if($tmp>=$ver)
+ {
+ $ver = $tmp;
+ $res = (/(.*)\/lib\//)[0]
+ }
+ }
+ $res = each %p if keys %p ==1;
+ }
+ print $res?"OK. We can try --with-qt-dir=$res.\n":"No, that's too fuzzy. I'll give up and let ./configure decide.\n";
+ }
+ else
+ {
+ ($res=$alt[0])=~s|(.*)/lib/.*|$1|;
+ print "Fine. We'll try with --with-qt-dir=$res.\n";
+ }
+ sleep(3);
+}
+
+unshift(@ARGV, "--with-qt-dir=$res") if $res;
+
+unless ($ENV{'KDEDIR'} or grep /--prefix/, @ARGV)
+{
+ print "\n!!!!!!!!!!!! WARNING !!!!!!!!!!!!\n".
+ " Your KDEDIR environment variable is not set and you\n".
+ "did not use the '--prefix=' commandline option.\n";
+ print "KDE-3 isn't required at all. However, if it's installed on your system,\n".
+ "it is much better to specify it's location since PerlQt uses (or build, if\n".
+ "it can't find it) a KDE library named smokeqt.\n";
+ print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n";
+ sleep(5);
+}
+
+print "\nNow starting ./configure ...\n\n";
+
+exec join " ", "./configure", @ARGV;
+
+#--------------------------------------------------------------#
+
+sub check_exit_status
+{
+ my $a = 0xFFFF & shift;
+ if( !$a )
+ {
+ return 1;
+ }
+ elsif( $a == 0xFF00 )
+ {
+ #die "\nSystem call failed: $!\n";
+ }
+ elsif( $a > 0x80 )
+ {
+ # non-zero status.
+ }
+ else
+ {
+ if( $a & 0x80 )
+ {
+ #die "\nProgram coredumped with signal ". ($a & ~0x80);
+ }
+ die "\nProgram interrupted by signal $a\n";
+ }
+ return 0;
+}
+