summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoscan.pl33
1 files changed, 26 insertions, 7 deletions
diff --git a/autoscan.pl b/autoscan.pl
index 3285236..15ebf4e 100644
--- a/autoscan.pl
+++ b/autoscan.pl
@@ -123,14 +123,33 @@ sub init_tables
# Called by &find on each file.
sub wanted
{
- if (/^.*\.[chlymC]$/ || /^.*\.cc$/) {
- $name =~ s?^\./??; push(@cfiles, $name);
+ # Wanted only if there is no corresponding FILE.in.
+ return
+ if -f "$_.in";
+
+ # Strip a useless leading `./'.
+ $name =~ s,^\./,,;
+
+ if (/^.*\.[chlymC](\.in)?$/)
+ {
+ push (@cfiles, $name);
+ $programs{cc}++;
}
- elsif (/^[Mm]akefile$/ || /^[Mm]akefile\.in$/ || /^GNUmakefile$/) {
- $name =~ s?^\./??; push(@makefiles, $name);
+ elsif (/^.*\.(cc|cpp|cxx|CC|C|hh|hpp|hxx|HH|H|yy|ypp|ll|lpp)(\.in)?$/)
+ {
+ push (@cfiles, $name);
+ $programs{CC}++;
}
- elsif (/^.*\.sh$/) {
- $name =~ s?^\./??; push(@shfiles, $name);
+ elsif (/^[Mm]akefile(\.in)?$/ || /^GNUmakefile$/)
+ {
+ # Wanted only if there is no corresponding Makefile.in.
+ # Using Find, $_ contains the current filename with the current
+ # directory of the walk through.
+ push (@makefiles, $name);
+ }
+ elsif (/^.*\.sh(\.in)?$/)
+ {
+ push (@shfiles, $name);
}
}
@@ -244,7 +263,7 @@ sub scan_makefile
$libraries{$1}++;
}
# Tokens in the code.
- while (s/\W([a-zA-Z_]\w*)\W/ /) {
+ while (s/\W([a-zA-Z_][\w\+\.-]*)\W/ /) {
$programs{$1}++;
}
}