summaryrefslogtreecommitdiffstats
path: root/build/mkdep.perl
diff options
context:
space:
mode:
Diffstat (limited to 'build/mkdep.perl')
-rw-r--r--build/mkdep.perl90
1 files changed, 90 insertions, 0 deletions
diff --git a/build/mkdep.perl b/build/mkdep.perl
new file mode 100644
index 0000000..7f776d8
--- /dev/null
+++ b/build/mkdep.perl
@@ -0,0 +1,90 @@
+#!/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";
+}