X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=make%2Futilities.pm;h=baba584ad240754030525f0d60fcaae7ec975302;hb=a785f350fd584d87f3b84bbaff569ecb59c29f04;hp=9281246fbbc1d320ff8df941b9c2387911d92646;hpb=553a8da754c8cd308bad2008018849714e70f9b7;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/make/utilities.pm b/make/utilities.pm index 9281246fb..baba584ad 100644 --- a/make/utilities.pm +++ b/make/utilities.pm @@ -29,6 +29,7 @@ use warnings FATAL => qw(all); 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); @@ -76,6 +77,7 @@ sub promptstring($$$$$) sub make_rpath($;$) { my ($executable, $module) = @_; + return "" if defined $ENV{DISABLE_RPATH}; chomp(my $data = `$executable`); my $output = ""; while ($data =~ /-L(\S+)/) @@ -83,10 +85,10 @@ sub make_rpath($;$) 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; @@ -94,6 +96,7 @@ sub make_rpath($;$) 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"; @@ -127,7 +130,8 @@ sub pkgconfig_get_include_dirs($$$;$) if ((!defined $v) || ($v eq "")) { print "\e[31mCould not find $packagename via pkg-config\e[m (\e[1;32mplease install pkg-config\e[m)\n"; - $foo = `locate "$headername" 2>/dev/null | head -n 1`; + my $locbin = $^O eq 'solaris' ? 'slocate' : 'locate'; + $foo = `$locbin "$headername" 2>/dev/null | head -n 1`; my $find = $foo =~ /(.+)\Q$headername\E/ ? $1 : ''; chomp($find); if ((defined $find) && ($find ne "") && ($find ne $packagename)) @@ -242,7 +246,8 @@ sub pkgconfig_get_lib_dirs($$$;$) my $foo = ""; if ((!defined $v) || ($v eq "")) { - $foo = `locate "$libname" | head -n 1`; + my $locbin = $^O eq 'solaris' ? 'slocate' : 'locate'; + $foo = `$locbin "$libname" | head -n 1`; $foo =~ /(.+)\Q$libname\E/; my $find = $1; chomp($find); @@ -315,6 +320,15 @@ sub translate_functions($$) 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; @@ -391,13 +405,14 @@ sub translate_functions($$) 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\("(.+?)","(.+?)","(.+?)"\)/) @@ -432,7 +447,6 @@ sub translate_functions($$) while ($line =~ /rpath\("(.+?)"\)/) { my $replace = make_rpath($1,$module); - $replace = "" if ($^O =~ /darwin/i); $line =~ s/rpath\("(.+?)"\)/$replace/; } }; @@ -444,7 +458,7 @@ sub translate_functions($$) 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