annotate src/make-src-depend @ 5167:e374ea766cc1

clean up, rearrange allocation statistics code -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-03-21 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (assert_proper_sizing): * alloc.c (c_readonly): * alloc.c (malloced_storage_size): * alloc.c (fixed_type_block_overhead): * alloc.c (lisp_object_storage_size): * alloc.c (inc_lrecord_stats): * alloc.c (dec_lrecord_stats): * alloc.c (pluralize_word): * alloc.c (object_memory_usage_stats): * alloc.c (Fobject_memory_usage): * alloc.c (compute_memusage_stats_length): * alloc.c (disksave_object_finalization_1): * alloc.c (Fgarbage_collect): * mc-alloc.c: * mc-alloc.c (mc_alloced_storage_size): * mc-alloc.h: No functionality change here. Collect the allocations-statistics code that was scattered throughout alloc.c into one place. Add remaining section headings so that all sections have headings clearly identifying the start of the section and its purpose. Expose mc_alloced_storage_size() even when not MEMORY_USAGE_STATS; this fixes build problems and is related to the export of lisp_object_storage_size() and malloced_storage_size() when non-MEMORY_USAGE_STATS in the previous change set.
author Ben Wing <ben@xemacs.org>
date Sun, 21 Mar 2010 04:41:49 -0500
parents 6f2158fa75ed
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 : #-*- Perl -*-
1303
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
2
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
3 ### make-src-depend --- update the Makefile dependency information for XEmacs
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
4
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 # Copyright (C) 1998 Free Software Foundation, Inc.
5050
6f2158fa75ed Fix quick-build, use asserts() in place of ABORT()
Ben Wing <ben@xemacs.org>
parents: 4984
diff changeset
6 # Copyright (C) 2010 Ben Wing.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7
1303
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
8 ## Author: Martin Buchholz <martin@xemacs.org>
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
9 ## Maintainer: XEmacs Development Team
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
10
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
11 ## This file is part of XEmacs.
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
12
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
13 ## XEmacs is free software; you can redistribute it and/or modify it
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
14 ## under the terms of the GNU General Public License as published by
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
15 ## the Free Software Foundation; either version 2, or (at your option)
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
16 ## any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17
1303
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
18 ## XEmacs is distributed in the hope that it will be useful, but
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
19 ## WITHOUT ANY WARRANTY; without even the implied warranty of
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
20 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
21 ## General Public License for more details.
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
22
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
23 ## You should have received a copy of the GNU General Public License
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
24 ## along with XEmacs; see the file COPYING. If not, write to the Free
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
25 ## Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
26 ## 02111-1307, USA.
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
27
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 eval 'exec perl -w -S $0 ${1+"$@"}'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 if 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 use strict;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 my ($myName, $srcdir, %exists, %uses, %generated_header);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 ($myName = $0) =~ s@.*/@@; my $usage ="
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 Usage: $myName
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 Generates Makefile dependencies for the XEmacs src directory.
1303
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
38 The dependencies are written to stdout.
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
39 ";
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 die $usage if @ARGV;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 ($srcdir = $0) =~ s@[^/]+$@@;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 $srcdir = "." if $srcdir eq "";
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 chdir $srcdir or die "$srcdir: $!";
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 opendir SRCDIR, "." or die "$srcdir: $!";
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 for (grep (/\.[ch]$/, readdir (SRCDIR))) { $exists{$_} = 1; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 closedir SRCDIR;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 for (qw (config.h sheap-adjust.h paths.h Emacs.ad.h)) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 $generated_header{$_} = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
55 # Although this is not technically true, it ought to be true,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
56 # and makes the generated Makefile smaller.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
57 $uses{'lisp.h'}{'config.h'} = 1;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
58
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 for my $file (keys %exists) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 open (FILE, $file) or die "$file: $!";
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 undef $/; $_ = <FILE>;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 RemoveComments ($_);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 s/[ \t]+//g;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 # Find include dependencies
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 for (/^\#include([^\n]+)/gm) {
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 452
diff changeset
66 if (m@^\"([A-Za-z0-9._-]+\.[ch])\"@) {
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 $uses{$file}{$1} = 1 if exists $exists{$1};
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
68 } elsif (m@<([A-Za-z0-9._-]+\.h)>@) {
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 $uses{$file}{$1} = 1 if exists $generated_header{$1};
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
70 } elsif (m@\"../lwlib/([A-Za-z0-9._-]+\.h)\"@) {
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 $uses{$file}{"\$(LWLIB_SRCDIR)/lwlib.h"} = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 # Make transitive closure of %uses
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 while (1) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 my $changedP = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 for my $x (keys %uses) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 for my $y (keys %{$uses{$x}}) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 for my $z (keys %{$uses{$y}}) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 if (! exists $uses{$x}{$z}) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 $uses{$x}{$z} = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 $changedP = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 last if !$changedP;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 # Print file header
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 print
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
94 "## This file is automatically generated by \`$myName'. Do not modify.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
96 #if defined(USE_UNION_TYPE)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 LISP_UNION_H=lisp-union.h
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 LISP_UNION_H=lisp-disunion.h
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 ";
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 442
diff changeset
103 my @LISP_H = ('lisp.h', sort keys %{$uses{'lisp.h'}});
1303
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
104 print "
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
105 #if defined(QUICK_BUILD)
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
106 CONFIG_H=
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
107 LISP_H=
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
108 #else
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
109 CONFIG_H=config.h
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
110 LISP_H=@{[grep (!/lisp-(dis)?union\.h/, @LISP_H)]} \$(LISP_UNION_H)
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
111 #endif
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
112
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
113 ";
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 sub PrintDeps {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 my $file = shift;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 my $ofile = $file; $ofile =~ s/c$/o/; print "$ofile: ";
1303
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
118 if (exists $uses{$file}{'config.h'}) {
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
119 delete $uses{$file}{'config.h'};
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
120 $uses{$file}{'$(CONFIG_H)'} = 1;
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
121 }
5050
6f2158fa75ed Fix quick-build, use asserts() in place of ABORT()
Ben Wing <ben@xemacs.org>
parents: 4984
diff changeset
122 if (exists $uses{$file}{'lisp.h'}) {
6f2158fa75ed Fix quick-build, use asserts() in place of ABORT()
Ben Wing <ben@xemacs.org>
parents: 4984
diff changeset
123 for my $x (@LISP_H) {
6f2158fa75ed Fix quick-build, use asserts() in place of ABORT()
Ben Wing <ben@xemacs.org>
parents: 4984
diff changeset
124 delete $uses{$file}{$x};
6f2158fa75ed Fix quick-build, use asserts() in place of ABORT()
Ben Wing <ben@xemacs.org>
parents: 4984
diff changeset
125 }
6f2158fa75ed Fix quick-build, use asserts() in place of ABORT()
Ben Wing <ben@xemacs.org>
parents: 4984
diff changeset
126 $uses{$file}{'$(LISP_H)'} = 1;
6f2158fa75ed Fix quick-build, use asserts() in place of ABORT()
Ben Wing <ben@xemacs.org>
parents: 4984
diff changeset
127 }
1333
1b0339b048ce [xemacs-hg @ 2003-03-02 09:38:37 by ben]
ben
parents: 1304
diff changeset
128 # Huge hack. With QUICK_BUILD, general.c has no dependence on
1b0339b048ce [xemacs-hg @ 2003-03-02 09:38:37 by ben]
ben
parents: 1304
diff changeset
129 # general-slots.h but really should.
1b0339b048ce [xemacs-hg @ 2003-03-02 09:38:37 by ben]
ben
parents: 1304
diff changeset
130 $uses{$file}{'general-slots.h'} = 1 if $file eq "general.c";
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 print "@{[sort keys %{$uses{$file}}]}\n";
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 sub PrintPatternDeps {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 my ($pattern, $CPP_SYMBOL) = @_;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
136 print "#if defined($CPP_SYMBOL)\n";
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 for my $file (sort grep (/$pattern/ && /\.c$/, keys %uses)) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 PrintDeps($file);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 delete $uses{$file};
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 print "#endif\n";
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
144 PrintPatternDeps ('-msw\\.', "HAVE_MS_WINDOWS");
1303
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
145 PrintPatternDeps ('-xlike', "HAVE_XLIKE");
4984
f23cd0184dcf xlike, doc changes
Ben Wing <ben@xemacs.org>
parents: 4411
diff changeset
146 # X-specific files: *-x.c *-x-impl.h balloon_help.c x*.h Emacs*.[ch]
f23cd0184dcf xlike, doc changes
Ben Wing <ben@xemacs.org>
parents: 4411
diff changeset
147 PrintPatternDeps ('-x\\.|balloon_help|^Emacs', "HAVE_X_WINDOWS");
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
148 PrintPatternDeps ('-tty\\.', "HAVE_TTY");
1303
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
149 # GTK-specific files: *-gtk.[ch] *-gtk-*.[ch] gtk-*.[ch] emacs-marshals.c emacs-widget-accessors.c glade.c ui-byhand.c
f99d3d25df86 [xemacs-hg @ 2003-02-15 10:15:54 by ben]
ben
parents: 462
diff changeset
150 PrintPatternDeps ('gtk|emacs-marshals|emacs-widget-accessors|glade|ui-byhand', "HAVE_GTK");
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
151 PrintPatternDeps ('^database', "HAVE_DATABASE");
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
152 PrintPatternDeps ('^mule', "MULE");
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 PrintPatternDeps ('^(?:External|extw-)', "EXTERNAL_WIDGET");
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 for my $file (sort grep (/\.c$/, keys %uses)) { PrintDeps($file); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
157 # Surprisingly robust regexp to remove comments from arbitrary C code
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 sub RemoveComments {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 $_[0] =~
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 s{ (
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 [^\"\'/]+ |
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 (?:\"[^\"\\]*(?:\\.[^\"\\]*)*\" [^\"\'/]*)+ |
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 (?:\'[^\'\\]*(?:\\.[^\'\\]*)*\' [^\"\'/]*)+
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 | / (?:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 \*[^*]*\*+(?:[^/*][^*]*\*+)*/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 |
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 /[^\n]*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 }{defined $1 ? $1 : ""}gsxeo;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 }