Move Controls ubyte values into substructure
Reduce relocations for Controls members
Remove duplicate kconfig labels

import re, fileinput
which = 3
last = [None, None]
e = re.compile(r'(?P<left>	\{(?:\s*\d+,){8})(?P<quote>"?)(?P
[^",]+)(?P=quote)(?P<right>,.*},)$')
for line in fileinput.input(inplace=True):
	if line == '#if defined(DXX_BUILD_DESCENT_I)\n':
		which = 1
	elif line == '#elif defined(DXX_BUILD_DESCENT_II)\n':
		which = 2
	elif line == '#endif\n':
		which = 3
	else:
		m = e.match(line)
		if m:
			s = m.group('s')
			suppress = True
			if (which & 1) and last[0] != s:
				suppress = False
				last[0] = s
			if (which & 2) and last[1] != s:
				suppress = False
				last[1] = s
			if suppress:
				line = m.group('left') + ' NULL /* duplicate */' + m.group('right') + '\n'
	print line,
Factor out file extension filtering
Compact known file extension storage
Only pass -Werror=redundant-decls if it works well