package make::utilities;
use Exporter 'import';
+use make::configure;
use POSIX;
@EXPORT = qw(make_rpath pkgconfig_get_include_dirs pkgconfig_get_lib_dirs translate_functions);
sub pkgconfig_get_include_dirs($$$;$)
{
my ($packagename, $headername, $defaults, $module) = @_;
+
+ if (exists $config{$key})
+ {
+ my $key = "default_includedir_$packagename";
+ $ret = $config{$key};
+ return $ret;
+ }
+
extend_pkg_path();
print "Locating include directory for package \033[1;32m$packagename\033[0m for module \033[1;32m$module\033[0m... ";
chomp($ret);
if (($ret eq " ") || (!defined $ret))
{
- print "\033[1;32mUsing defaults\033[0m\n";
+ my $key = "default_includedir_$packagename";
+ if (exists $config{$key})
+ {
+ $ret = $config{$key};
+ }
+ else
+ {
+ $headername =~ s/^\///;
+ promptstring("path to the directory containing $headername", $key, "/usr/include");
+ $ret = $config{$key};
+ }
}
else
{
sub pkgconfig_get_lib_dirs($$$;$)
{
my ($packagename, $libname, $defaults, $module) = @_;
+
+ if (exists $config{$key})
+ {
+ my $key = "default_libdir_$packagename";
+ $ret = $config{$key};
+ return $ret;
+ }
+
extend_pkg_path();
print "Locating library directory for package \033[1;32m$packagename\033[0m for module \033[1;32m$module\033[0m... ";
chomp($ret);
if (($ret eq " ") || (!defined $ret))
{
- print "\033[1;32mUsing defaults\033[0m\n";
+ my $key = "default_libdir_$packagename";
+ if (exists $config{$key})
+ {
+ $ret = $config{$key};
+ }
+ else
+ {
+ $libname =~ s/^\///;
+ promptstring("path to the directory containing $libname", $key, "/usr/lib");
+ $ret = $config{$key};
+ }
}
else
{
# to functions within these modules at configure time.
sub translate_functions($$)
{
+ my ($line,$module) = @_;
+
eval
{
- my ($line,$module) = @_;
$module =~ /modules*\/(.+?)$/;
$module = $1;
do
{
$tmpfile = tmpnam();
- } until sysopen(TF, $tmpfile, O_RDWR|O_CREAT|O_EXCL, 0700);
+ } until sysopen(TF, $tmpfile, O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW, 0700);
print "(Created and executed \033[1;32m$tmpfile\033[0m)\n";
print TF $1;
close TF;
my $replace = make_rpath($1,$module);
$line =~ s/rpath\("(.+?)"\)/$replace/;
}
- return $line;
};
if ($@)
{
print "\n\nConfiguration failed. The following error occured:\n\n$@\n";
exit;
}
+ else
+ {
+ return $line;
+ }
}
1;