diff options
Diffstat (limited to 'makedeps')
-rw-r--r-- | makedeps | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/makedeps b/makedeps deleted file mode 100644 index 70589ca..0000000 --- a/makedeps +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env perl - -use v5.12; -use warnings; -use subs qw/for_includes/; - -open my $fh, ">", "deps.mk"; -print $fh "# This file is generated by makedeps.\n"; - -while (my $f = glob("c/*.cpp")) { - $f =~ s,^c/,,; - $f =~ s/\.cpp$//; - - if ($f eq "main") { print $fh "b/\$(EXE):"; } - else { print $fh "b/$f.obj:"; } - - # Print dependencies in source file. - my @deps; - for_includes "c/$f.cpp", sub { - my $f = shift; - return if grep { $_ eq $f } @deps; - push @deps, $f; - print $fh " c/$f"; - - # Print dependencies in dependency. - for_includes "c/$f", sub { - my $f = shift; - return if grep { $_ eq $f } @deps; - push @deps, $f; - print $fh " c/$f"; - } - }; - - print $fh "\n"; -} - -sub for_includes ($&) { - my $f = shift; - my $c = shift; - state %cache; - - # Retrieve dependencies from cache. - if (exists $cache{$f}) { - $c->($_) for @{$cache{$f}}; - } - - # Find dependencies in file. - else { - open my $gh, "<", $f or die "($f) $!"; - while ($_ = <$gh>) { - next if /^$/; - last if not /#/; - next if not /^#include\s*"([^"]+)"/; - push @{$cache{$f}}, $1; - $c->($1); - } - } -} |