|  | #!/usr/bin/perl | 
|  | # | 
|  | # Created: Thu Aug 15 11:57:33 1996 too | 
|  | # Last modified: Mon Dec 27 09:23:56 1999 too | 
|  | # | 
|  | # Copyright (c) 1996-1999 Tomi Ollila.  All rights reserved. | 
|  | # | 
|  | # Redistribution and use in source and binary forms, with or without | 
|  | # modification, are permitted provided that the following conditions | 
|  | # are met: | 
|  | # 1. Redistributions of source code must retain the above copyright | 
|  | #    notice, this list of conditions and the following disclaimer. | 
|  | # 2. Redistributions in binary form must reproduce the above copyright | 
|  | #    notice, this list of conditions and the following disclaimer in the | 
|  | #    documentation and/or other materials provided with the distribution. | 
|  | # | 
|  | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 
|  | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | 
|  | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO | 
|  | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
|  | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
|  | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | 
|  | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | 
|  | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | 
|  | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | 
|  | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
|  |  | 
|  | die "Usage: mkdep CPP-command [CPP options] file1 [file2...]\n" | 
|  | if ($#ARGV < 1); | 
|  |  | 
|  | $cmdl = shift(@ARGV); | 
|  |  | 
|  | $cmdl = "$cmdl " . shift (@ARGV) while ($ARGV[0] =~ /^-[A-Z]/); | 
|  |  | 
|  | while ($file = shift(@ARGV)) | 
|  | { | 
|  | $file =~ s/\.o$/.c/; | 
|  |  | 
|  | open(F, "$cmdl $file|"); | 
|  |  | 
|  | &parseout; | 
|  |  | 
|  | close(F); | 
|  | } | 
|  |  | 
|  |  | 
|  | sub initinit | 
|  | { | 
|  | %used = (); | 
|  | $of = $file; | 
|  | $of =~ s/\.c$/.lo/; | 
|  | $str = "$of:\t$file"; | 
|  | $len = length $str; | 
|  | } | 
|  |  | 
|  | sub initstr | 
|  | { | 
|  | $str = "\t"; | 
|  | $len = length $str; | 
|  | } | 
|  |  | 
|  | sub parseout | 
|  | { | 
|  | &initinit; | 
|  | while (<F>) | 
|  | { | 
|  | s/\\\\/\//g; | 
|  | next unless (/^# [0-9]* "(.*\.h)"/); | 
|  |  | 
|  | next if ($1 =~ /^\//); | 
|  |  | 
|  | next if $used{$1}; | 
|  |  | 
|  | $used{$1} = 1; | 
|  |  | 
|  | $nlen = length($1) + 1; | 
|  |  | 
|  | if ($len + $nlen > 72) | 
|  | { | 
|  | print $str, "\\\n"; | 
|  | &initstr; | 
|  | $str = $str . $1; | 
|  | } | 
|  | else { $str = $str . " " . $1; } | 
|  |  | 
|  | $len += $nlen; | 
|  |  | 
|  | } | 
|  | print $str, "\n"; | 
|  | } |