#! /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 = sort grep { -f $_ } map { (my $x = $_) =~ s|\.o$|$depext|; $x; } grep { $unified_info{sources}->{$_}->[0] =~ /\.cc?$/ } keys %{$unified_info{sources}}; open IBF, $buildfile or die "Trying to read $buildfile: $!\n"; open OBF, '>', $buildfile_new or die "Trying to write $buildfile_new: $!\n"; while () { $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 () { 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"; } # On VMS, we want to remove all generations of this file, in case there are # more than one while (unlink $buildfile_new) {}