use Exporter 'import';
use POSIX;
+use File::Temp;
use Getopt::Long;
use Fcntl;
our @EXPORT = qw(make_rpath pkgconfig_get_include_dirs pkgconfig_get_lib_dirs pkgconfig_check_version translate_functions promptstring);
sub make_rpath($;$)
{
my ($executable, $module) = @_;
+ return "" if defined $ENV{DISABLE_RPATH};
chomp(my $data = `$executable`);
my $output = "";
while ($data =~ /-L(\S+)/)
my $libpath = $1;
if (!exists $already_added{$libpath})
{
- print "Adding extra library path to \e[1;32m$module\e[0m ... \e[1;32m$libpath\e[0m\n";
+ print "Adding runtime library path to \e[1;32m$module\e[0m ... \e[1;32m$libpath\e[0m\n";
$already_added{$libpath} = 1;
}
- $output .= "-Wl,--rpath -Wl,$libpath -L$libpath " unless defined $main::opt_disablerpath;
+ $output .= "-Wl,-rpath -Wl,$libpath -L$libpath ";
$data =~ s/-L(\S+)//;
}
return $output;
sub extend_pkg_path()
{
+ return if defined $ENV{DISABLE_EXTEND_PKG_PATH};
if (!exists $ENV{PKG_CONFIG_PATH})
{
$ENV{PKG_CONFIG_PATH} = "/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/libdata/pkgconfig:/usr/X11R6/libdata/pkgconfig";
die "Developers should no longer use backticks in configuration macros. Please use exec() and eval() macros instead. Offending line: $line (In module: $module)";
}
+ if ($line =~ /if(gt|lt)\("(.+?)","(.+?)"\)/) {
+ chomp(my $result = `$2 2>/dev/null`);
+ if (($1 eq 'gt' && $result le $3) || ($1 eq 'lt' && $result ge $3)) {
+ $line = substr $line, 0, $-[0];
+ } else {
+ $line =~ s/if$1\("$2","$3"\)//;
+ }
+ }
+
if ($line =~ /ifuname\(\!"(\w+)"\)/)
{
my $uname = $1;
my $tmpfile;
do
{
- $tmpfile = tmpnam();
+ $tmpfile = File::Temp::tmpnam();
} until sysopen(TF, $tmpfile, O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW, 0700);
print "(Created and executed \e[1;32m$tmpfile\e[0m)\n";
print TF $1;
close TF;
my $replace = `perl $tmpfile`;
chomp($replace);
+ unlink($tmpfile);
$line =~ s/eval\("(.+?)"\)/$replace/;
}
while ($line =~ /pkgconflibs\("(.+?)","(.+?)","(.+?)"\)/)
while ($line =~ /rpath\("(.+?)"\)/)
{
my $replace = make_rpath($1,$module);
- $replace = "" if ($^O =~ /darwin/i);
$line =~ s/rpath\("(.+?)"\)/$replace/;
}
};
print "\nMake sure you have pkg-config installed\n";
print "\nIn the case of gnutls configuration errors on debian,\n";
print "Ubuntu, etc, you should ensure that you have installed\n";
- print "gnutls-bin as well as gnutls-dev and gnutls.\n";
+ print "gnutls-bin as well as libgnutls-dev and libgnutls.\n";
exit;
}
else