diff options
Diffstat (limited to 'scripts/gen-sorted.awk')
-rwxr-xr-x | scripts/gen-sorted.awk | 113 |
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" } |