[openssl-dev] OpenSSL-1.1 make depend
Erik Forsberg
erik at efca.com
Thu Jan 21 00:49:04 UTC 2016
seems util/clean-depend.pl is now broken if using Solaris cc compiler.
Looks like its working if gcc is used, the difference seems to be that if
gcc is used the input to clean-depend.pl looks like
object.o: dep1.h dep2.h \
dep3.h dep4.h
if Solaris cc is used it looks like
object.o: dep1.h
object.o: dep2.h
object.o: dep3.h
object.o: dep4.h
I get gazillions of 'Use of uninitialized variable in ....' when running
and the net result is that all dependencies generated in the Makefile
looks like
: ../openssl/header.h
the make target printed before the colon is undefined.
This block from clean-depend.pl is the faulty part (seems
to be added in 1.1, 1.0.2 was working fine)
# Time to clean out possible system directories and normalise quirks
# from different makedepend methods
foreach $file (sort keys %files) {
# This gets around a quirk with gcc, which removes all directory
# information from the original file
my $tmpfile=$file;
$tmpfile=~s/\.o$/.c/;
(my $origfile)=grep(/(^|\/)${tmpfile}$/,@{$files{$file}});
my $newfile=$origfile;
$newfile=~s/\.c$/.o/;
if ($newfile ne $file) {
$files{$newfile} = $files{$file};
delete $files{$file};
$file = $newfile;
}
@{$files{$file}} =
grep(!/^\//,
grep(!/^$origfile$/, @{$files{$file}}));
}
Commenting out the entire block makes it work properly
Adding a test like
if (defined $origfile) {
}
around everything after the first grep call also fixes it
but it doesnt for example ignore system directory dependencies.
I use latest perl 5.22 if it matters
but this looks like generic failure to me.
More information about the openssl-dev
mailing list