This will translate a file that consists of backslash-newline broken lines into a file with single long lines, and squash whitespace.
For example:
acpi_quirks.h optional acpi \
dependency "$S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \
compile-with "${AWK} -f $S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \
no-obj no-implicit-rule before-depend \
clean "acpi_quirks.h"
becomes
acpi_quirks.h optional acpi dependency "$S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" compile-with "${AWK} -f $S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" no-obj no-implicit-rule before-depend clean "acpi_quirks.h"
expand "${file}" | sed -ne '
s/#.*$//g # Strip out all comments, as they may interfere
s/ *$// # Remove end-of-line whitespace
/[^\\]$/ { # If the line doesn't end with a backslash, print the whole thing
H # Append current line to hold
s/.*//g # Clear pattern so that hold will be emptied
x # Exchange (hold is empty, pattern has what we want)
s/^\n//g # Remove initial newline, caused by appending to empty buffer
s/\n/ /g # Change newlines to spaces
s/ */ /g # Squash extra spaces
p # Print
}
/\\$/ { # If the line ends with a backslash, append it to hold without backslash
s/\\$// # Remove tailing backslash
H # Append to hold
}'
