~ubuntu-branches/ubuntu/trusty/grub2/trusty-updates

« back to all changes in this revision

Viewing changes to grub-core/genmoddep.awk

Tags: upstream-1.99~20101122
ImportĀ upstreamĀ versionĀ 1.99~20101122

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /usr/bin/awk -f
 
2
#
 
3
# Copyright (C) 2006  Free Software Foundation, Inc.
 
4
#
 
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.
 
8
#
 
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.
 
13
 
 
14
# Read symbols' info from stdin.
 
15
BEGIN {
 
16
  error = 0
 
17
  lineno = 0;
 
18
  while (getline <"/dev/stdin") {
 
19
    lineno++;
 
20
    if ($1 == "defined") {
 
21
      symtab[$3] = $2;
 
22
      modtab[$2] = "" modtab[$2]
 
23
    } else if ($1 == "undefined") {
 
24
      if ($3 in symtab)
 
25
        modtab[$2] = modtab[$2] " " symtab[$3];
 
26
      else if ($3 != "__gnu_local_gp") {
 
27
        printf "%s in %s is not defined\n", $3, $2 >"/dev/stderr";
 
28
        error++;
 
29
      }
 
30
    }
 
31
    else {
 
32
      printf "error: %u: unrecognized input format\n", lineno;
 
33
      error++;
 
34
      break;
 
35
    }
 
36
  }
 
37
}
 
38
 
 
39
# Output the result.
 
40
END {
 
41
  if (error >= 1)
 
42
    exit 1;
 
43
 
 
44
  for (mod in modtab) {
 
45
    # Remove duplications.
 
46
    split(modtab[mod], depmods, " ");
 
47
    for (depmod in uniqmods) {
 
48
      delete uniqmods[depmod];
 
49
    }
 
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;
 
55
    }
 
56
    modlist = ""
 
57
    for (depmod in uniqmods) {
 
58
      modlist = modlist " " depmod;
 
59
    }
 
60
    printf "%s:%s\n", mod, modlist;
 
61
  }
 
62
}