2014-01-10 00:44:24 +04:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
|
|
|
# This file takes the .mk files from an upstream opus repo and generates the
|
|
|
|
# sources.mozbuild file. It is invoked as part of update.sh
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import re
|
|
|
|
|
|
|
|
def add_value(values, text):
|
|
|
|
text = text.replace('\\', '')
|
|
|
|
text = text.strip()
|
|
|
|
if text:
|
|
|
|
values.append(text)
|
|
|
|
|
|
|
|
def write_values(output, values):
|
|
|
|
for value in sorted(values, key=lambda x: x.lower()):
|
|
|
|
output.write(" '%s',\n" % value)
|
|
|
|
output.write(']\n\n')
|
|
|
|
|
|
|
|
def generate_sources_mozbuild(path):
|
|
|
|
makefiles = [
|
|
|
|
'celt_sources.mk',
|
|
|
|
'opus_sources.mk',
|
|
|
|
'silk_sources.mk',
|
|
|
|
]
|
|
|
|
|
2015-12-19 00:04:12 +03:00
|
|
|
var_definition = re.compile('([A-Z0-9_]*) = (.*)')
|
2014-01-10 00:44:24 +04:00
|
|
|
with open('sources.mozbuild', 'w') as output:
|
|
|
|
|
|
|
|
output.write('# THIS FILE WAS AUTOMATICALLY GENERATED BY %s. DO NOT EDIT.\n' % sys.argv[0])
|
|
|
|
for makefile in makefiles:
|
|
|
|
values = []
|
|
|
|
definition_started = False
|
|
|
|
|
|
|
|
with open('%s/%s' % (path, makefile), 'r') as mk:
|
|
|
|
for line in mk:
|
|
|
|
line = line.rstrip()
|
|
|
|
result = var_definition.match(line)
|
|
|
|
if result:
|
|
|
|
if definition_started:
|
|
|
|
write_values(output, values)
|
|
|
|
values = []
|
|
|
|
definition_started = True
|
|
|
|
|
|
|
|
# Some variable definitions have the first entry on the
|
|
|
|
# first line. Eg:
|
|
|
|
#
|
|
|
|
# CELT_SOURCES = celt/bands.c
|
|
|
|
#
|
|
|
|
# So we treat the first group as the variable name and
|
|
|
|
# the second group as a potential value.
|
|
|
|
#
|
|
|
|
# Note that we write the variable name in lower case (so
|
|
|
|
# "CELT_SOURCES" in the .mk file becomes "celt_sources"
|
|
|
|
# in the .mozbuild file) because moz.build reserves
|
|
|
|
# upper-case variable names for build system outputs.
|
|
|
|
output.write('%s = [\n' % result.group(1).lower())
|
|
|
|
add_value(values, result.group(2))
|
|
|
|
else:
|
|
|
|
add_value(values, line)
|
|
|
|
write_values(output, values)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
if len(sys.argv) != 2:
|
|
|
|
print "Usage: %s /path/to/opus" % (sys.argv[0])
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
generate_sources_mozbuild(sys.argv[1])
|