summaryrefslogtreecommitdiffstats
path: root/util/add-depends.pl
blob: a7b07b64ac2dcccb948d18f0f189b8b0960a6d06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#! /usr/bin/env perl
# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License").  You may not use
# this file except in compliance with the License.  You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html

use lib '.';
use configdata;

use File::Compare qw(compare_text);

my $buildfile = $config{build_file};
my $buildfile_new = "$buildfile.$$";
my $depext = $target{dep_extension} || ".d";
my @deps =
    grep { print STDERR "$_ exists: ", -f $_ ? "yes" : "no", "\n"; -f $_ }
    map { (my $x = $_) =~ s|\.o$|$depext|; $x; }
    grep { $unified_info{sources}->{$_}->[0] =~ /\.cc?$/ }
    keys %{$unified_info{sources}};

print STDERR "\@deps = ( ", join(", ", @deps), " )\n";

open IBF, $buildfile or die "Trying to read $buildfile: $!\n";
open OBF, '>', $buildfile_new or die "Trying to write $buildfile_new: $!\n";
while (<IBF>) {
    $force_rewrite = 0;
    last if /^# DO NOT DELETE THIS LINE/;
    print OBF or die "$!\n";
    $force_rewrite = 1;
}
close IBF;

print OBF "# DO NOT DELETE THIS LINE -- make depend depends on it.\n";

foreach (@deps) {
    open IBF,$_ or die "Trying to read $_: $!\n";
    while (<IBF>) {
        print OBF or die "$!\n";
    }
    close IBF;
}
close OBF;

if (compare_text($buildfile_new, $buildfile) != 0) {
    rename $buildfile_new, $buildfile
        or die "Trying to rename $buildfile_new -> $buildfile: $!\n";
}