[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