blob: 8d59af0580935aa446ec34eeee24ebcff87f263c [file] [log] [blame]
#!/usr/bin/env python3
# Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
import os
import re
import subprocess
import sys
def main(args):
# Build Wasm WasmIntrinsics.cpp.
wasm_intrinsics_wat = args[0]
wasm_intrinsics_cpp_in = args[1]
wasm_intrinsics_cpp_out = args[2]
with open(wasm_intrinsics_wat, 'rb') as fd:
wat = fd.read()
wat_hex = ','.join([hex(byte) for byte in wat])
with open(wasm_intrinsics_cpp_in) as fd:
template = fd.read()
template = template.replace('@WASM_INTRINSICS_SIZE@', '%s' % len(wat))
template = template.replace('@WASM_INTRINSICS_EMBED@', wat_hex)
with open(wasm_intrinsics_cpp_out, 'w') as fd:
fd.write(template)
# Build config.h
cmake_in = args[3]
config_h_in = args[4]
config_out = args[5]
with open(cmake_in) as fd:
cmake = fd.read()
with open(config_h_in) as fd:
template = fd.read()
match = re.search(
r'project\(binaryen LANGUAGES C CXX VERSION (?P<version>[0-9]+)\)',
cmake)
version = match['version']
git_args = ['git', 'describe', '--tags', '--match', 'version_*']
try:
output = subprocess.check_output(git_args,
cwd=os.path.dirname(cmake_in),
text=True)
version = '%s (%s)' % (version, output.strip())
except:
pass
template = template.replace('#cmakedefine', '#define')
template = template.replace('${PROJECT_VERSION}', version)
with open(config_out, 'w') as fd:
fd.write(template)
if __name__ == '__main__':
main(sys.argv[1:])