diff options
Diffstat (limited to 'REORG.TODO/scripts/soversions.awk')
-rw-r--r-- | REORG.TODO/scripts/soversions.awk | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/REORG.TODO/scripts/soversions.awk b/REORG.TODO/scripts/soversions.awk new file mode 100644 index 0000000000..247f061bc3 --- /dev/null +++ b/REORG.TODO/scripts/soversions.awk @@ -0,0 +1,43 @@ +# awk script for shlib-versions.v -> soversions.i; see Makeconfig. + +# Obey the first matching DEFAULT line. +$1 == "DEFAULT" { + $1 = ""; + default_set[++ndefault_set] = $0; + next +} + +# Collect all lib lines before emitting anything, so DEFAULT +# can be interspersed. +{ + lib = number = $1; + sub(/=.*$/, "", lib); + sub(/^.*=/, "", number); + if (lib in numbers) next; + numbers[lib] = number; + order[lib] = ++order_n; + if (NF > 1) { + $1 = ""; + versions[lib] = $0 + } +} + +END { + for (lib in numbers) { + if (lib in versions) + set = versions[lib]; + else { + set = ""; + if (ndefault_set >= 1) + set = default_set[1]; + } + line = set ? (lib FS numbers[lib] FS set) : (lib FS numbers[lib]); + if (!(lib in lineorder) || order[lib] < lineorder[lib]) { + lineorder[lib] = order[lib]; + lines[lib] = "DEFAULT" FS line; + } + } + for (c in lines) { + print lines[c] + } +} |