skia2/build/fuchsia/fidl_gen_cpp
Felix Zhu d4380b4cb6 Remove FIDL C bindings usages
The C bindings should not be considered a part of the SDK.
There are no current usages so removing this dependency
should have no effect.

Change-Id: I3d361b7ad17af0e7437e1d20b33bd57256fbba9b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291458
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: John Rosasco <rosasco@google.com>
2020-05-26 16:40:29 +00:00

90 lines
2.5 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright 2019 Google LLC.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""
Generate C/C++ headers and source files from the set of FIDL files
specified in the meta.json manifest.
"""
import argparse
import collections
import json
import os
import subprocess
import sys
def GetFIDLFilesRecursive(libraries, sdk_base, path):
with open(path) as json_file:
parsed = json.load(json_file)
result = []
deps = parsed['deps']
for dep in deps:
dep_meta_json = os.path.abspath('%s/fidl/%s/meta.json' % (sdk_base, dep))
GetFIDLFilesRecursive(libraries, sdk_base, dep_meta_json)
libraries[parsed['name']] = result + parsed['sources']
def GetFIDLFilesByLibraryName(sdk_base, root):
libraries = collections.OrderedDict()
GetFIDLFilesRecursive(libraries, sdk_base, root)
return libraries
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--fidlc-bin', dest='fidlc_bin', action='store', required=True)
parser.add_argument('--fidlgen-bin', dest='fidlgen_bin', action='store', required=True)
parser.add_argument('--sdk-base', dest='sdk_base', action='store', required=True)
parser.add_argument('--root', dest='root', action='store', required=True)
parser.add_argument('--json', dest='json', action='store', required=True)
parser.add_argument('--include-base', dest='include_base', action='store', required=True)
parser.add_argument('--output-base-cc', dest='output_base_cc', action='store', required=True)
parser.add_argument('--output-c-tables', dest='output_c_tables', action='store', required=True)
args = parser.parse_args()
assert os.path.exists(args.fidlc_bin)
assert os.path.exists(args.fidlgen_bin)
fidl_files_by_name = GetFIDLFilesByLibraryName(args.sdk_base, args.root)
fidlc_command = [
args.fidlc_bin,
'--tables',
args.output_c_tables,
'--json',
args.json
]
for _, fidl_files in fidl_files_by_name.iteritems():
fidlc_command.append('--files')
for fidl_file in fidl_files:
fidl_abspath = os.path.abspath('%s/%s' % (args.sdk_base, fidl_file))
fidlc_command.append(fidl_abspath)
subprocess.check_call(fidlc_command)
assert os.path.exists(args.json)
fidlgen_command = [
args.fidlgen_bin,
'-generators',
'cpp',
'-include-base',
args.include_base,
'-json',
args.json,
'-output-base',
args.output_base_cc
]
subprocess.check_call(fidlgen_command)
return 0
if __name__ == '__main__':
sys.exit(main())