# 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] } }