summaryrefslogtreecommitdiff
path: root/scripts/gen-sorted.awk
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/gen-sorted.awk')
-rwxr-xr-xscripts/gen-sorted.awk113
1 files changed, 13 insertions, 100 deletions
diff --git a/scripts/gen-sorted.awk b/scripts/gen-sorted.awk
index 0092fe61d1..a943df6d2f 100755
--- a/scripts/gen-sorted.awk
+++ b/scripts/gen-sorted.awk
@@ -5,101 +5,23 @@
# Written by Ulrich Drepper <drepper@cygnus.com>, 1998.
BEGIN {
- cnt = split(subdirs, all) + 1
+ cnt = 0
dnt = 0
}
-
-# Let input files have comments.
-{ sub(/[ ]*#.*$/, "") }
-NF == 0 { next }
-
{
- subdir = type = FILENAME;
- sub(/^.*\//, "", type);
- sub(/\/[^/]+$/, "", subdir);
- sub(/^.*\//, "", subdir);
- thisdir = "";
-}
-
-type == "Depend" && NF == 1 {
- from[dnt] = subdir;
- to[dnt] = $1;
- ++dnt;
- next
-}
-
-type == "Subdirs" && NF == 1 { thisdir = $1 }
-
-type == "Subdirs" && NF == 2 && $1 == "first" {
- thisdir = $2;
- # Make the first dir in the list depend on this one.
- from[dnt] = all[1];
- to[dnt] = thisdir;
- ++dnt;
-}
-
-type == "Subdirs" && NF == 2 && $1 == "inhibit" {
- inhibit[$2] = subdir;
- next
-}
-
-type == "Subdirs" && thisdir {
- all[cnt++] = thisdir;
-
- if (FILENAME ~ (srcpfx ? /^\.\.\/sysdeps\// : /^sysdeps\//) \
- || system("test -d " srcpfx thisdir) == 0) {
- # This Subdirs file is in the main source tree,
- # or this subdirectory exists in the main source tree.
- this_srcdir = srcpfx thisdir
- }
- else {
- # The Subdirs file comes from an add-on that should have the subdirectory.
- dir = FILENAME;
- do
- sub(/\/[^/]+$/, "", dir);
- while (dir !~ /\/sysdeps$/);
- sub(/\/sysdeps$/, "", dir);
- if (system("test -d " dir "/" thisdir) == 0)
- dir = dir "/" thisdir;
- else {
- sub(/\/[^/]+$/, "", dir);
- if (system("test -d " dir "/" thisdir) == 0)
- dir = dir "/" thisdir;
- else {
- print FILENAME ":" FNR ":", "cannot find", thisdir > "/dev/stderr";
- exit 2
- }
- }
- file = dir "/Depend";
- if (srcpfx)
- sub(/^\.\.\//, "", dir);
- if (dir !~ /^\/.*$/)
- dir = "$(..)" dir;
- print thisdir "-srcdir", ":=", dir;
- }
- file = this_srcdir "/Depend";
- if (system("test -f " file) == 0) {
- ARGV[ARGC++] = file;
- # Emit a dependency on the implicitly-read file.
- if (srcpfx)
- sub(/^\.\.\//, "", file);
- if (file !~ /^\/.*$/)
- file = "$(..)" file;
- print "$(common-objpfx)sysd-sorted:", "$(wildcard", file ")";
+ if ($1 ~ /depend/) {
+ from[dnt] = $2
+ to[dnt] = $3
+ ++dnt
+ } else {
+ all[cnt++] = $1
}
- next
}
-
-{
- print FILENAME ":" FNR ":", "what type of file is this?" > "/dev/stderr";
- exit 2
-}
-
END {
do {
moved = 0
for (i = 0; i < dnt; ++i) {
- for (j = 1; j < cnt; ++j) {
+ for (j = 0; j < cnt; ++j) {
if (all[j] == from[i]) {
for (k = j + 1; k < cnt; ++k) {
if (all[k] == to[i]) {
@@ -120,20 +42,11 @@ END {
break
}
}
- } while (moved);
+ } while (moved)
- # Make sure we list "elf" last.
- saw_elf = 0;
- printf "sorted-subdirs :=";
- for (i = 1; i < cnt; ++i) {
- if (all[i] in inhibit)
- continue;
- if (all[i] == "elf")
- saw_elf = 1;
- else
- printf " %s", all[i];
+ printf "sorted-subdirs = "
+ for (i = 0; i < cnt; ++i) {
+ printf "%s ", all[i];
}
- printf "%s\n", saw_elf ? " elf" : "";
-
- print "sysd-sorted-done := t"
+ printf "\n"
}