Merge branch 'makefile' into haiku
[grub2/phcoder.git] / genmoddep.awk
blobf7f085e99018d6782df9554c8a3c894b6147aa3f
1 #! /usr/bin/awk -f
3 # Copyright (C) 2006 Free Software Foundation, Inc.
5 # This genmoddep.awk is free software; the author
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 # PARTICULAR PURPOSE.
14 # Read defined symbols from stdin.
15 BEGIN {
16 while (getline <"/dev/stdin") {
17 symtab[$1] = $2
21 # The first line contains a module name.
22 FNR == 1 {
23 module = $1
24 next
27 # The rest is undefined symbols.
29 if ($1 in symtab) {
30 modtab[module] = modtab[module] " " symtab[$1];
32 else {
33 printf "%s in %s is not defined\n", $1, module >"/dev/stderr";
34 error++;
35 exit;
39 # Output the result.
40 END {
41 if (error == 1)
42 exit 1;
44 for (mod in modtab) {
45 # Remove duplications.
46 split(modtab[mod], depmods, " ");
47 for (depmod in uniqmods) {
48 delete uniqmods[depmod];
50 for (i in depmods) {
51 depmod = depmods[i];
52 # Ignore kernel, as always loaded.
53 if (depmod != "kernel" && depmod != mod)
54 uniqmods[depmod] = 1;
56 modlist = ""
57 for (depmod in uniqmods) {
58 modlist = modlist " " depmod;
60 printf "%s:%s\n", mod, modlist;