Blame scripts/soversions.awk

Packit Service 82fcde
# awk script for shlib-versions.v -> soversions.i; see Makeconfig.
Packit Service 82fcde
Packit Service 82fcde
# Obey the first matching DEFAULT line.
Packit Service 82fcde
$1 == "DEFAULT" {
Packit Service 82fcde
  $1 = "";
Packit Service 82fcde
  default_set[++ndefault_set] = $0;
Packit Service 82fcde
  next
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
# Collect all lib lines before emitting anything, so DEFAULT
Packit Service 82fcde
# can be interspersed.
Packit Service 82fcde
{
Packit Service 82fcde
  lib = number = $1;
Packit Service 82fcde
  sub(/=.*$/, "", lib);
Packit Service 82fcde
  sub(/^.*=/, "", number);
Packit Service 82fcde
  if (lib in numbers) next;
Packit Service 82fcde
  numbers[lib] = number;
Packit Service 82fcde
  order[lib] = ++order_n;
Packit Service 82fcde
  if (NF > 1) {
Packit Service 82fcde
    $1 = "";
Packit Service 82fcde
    versions[lib] = $0
Packit Service 82fcde
  }
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
END {
Packit Service 82fcde
  for (lib in numbers) {
Packit Service 82fcde
    if (lib in versions)
Packit Service 82fcde
      set = versions[lib];
Packit Service 82fcde
    else {
Packit Service 82fcde
      set = "";
Packit Service 82fcde
      if (ndefault_set >= 1)
Packit Service 82fcde
	set = default_set[1];
Packit Service 82fcde
    }
Packit Service 82fcde
    line = set ? (lib FS numbers[lib] FS set) : (lib FS numbers[lib]);
Packit Service 82fcde
    if (!(lib in lineorder) || order[lib] < lineorder[lib]) {
Packit Service 82fcde
      lineorder[lib] = order[lib];
Packit Service 82fcde
      lines[lib] = "DEFAULT" FS line;
Packit Service 82fcde
    }
Packit Service 82fcde
  }
Packit Service 82fcde
  for (c in lines) {
Packit Service 82fcde
    print lines[c]
Packit Service 82fcde
  }
Packit Service 82fcde
}