| # Copyright 2024 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/fuchsia/platform_version.gni") |
| import("//build/python/python_action.gni") |
| import("//build/python/python_binary.gni") |
| |
| python_binary("sdk_ir") { |
| # TODO(b/367413842): Enable MyPy type checking |
| enable_mypy = false |
| main_source = "sdk_ir.py" |
| sources = [ "merge.py" ] |
| deps = [ "//build/python/modules/depfile" ] |
| } |
| |
| template("platform_ir") { |
| python_action(target_name) { |
| binary_label = ":sdk_ir" |
| |
| sdk_fidl_json = "${root_build_dir}/sdk_fidl_json.json" |
| if (defined(invoker.api_level)) { |
| api_level = invoker.api_level |
| platform_ir = "${root_build_dir}/platform-ir-${api_level}.json" |
| } else { |
| platform_ir = "${root_build_dir}/platform-ir-PLATFORM.json" |
| not_needed([ "invoker" ]) |
| } |
| |
| depfile = "${platform_ir}.d" |
| |
| inputs = [ sdk_fidl_json ] |
| outputs = [ platform_ir ] |
| |
| args = [ |
| "--sdk-fidl-json", |
| rebase_path(sdk_fidl_json, root_build_dir), |
| "--output", |
| rebase_path(platform_ir, root_build_dir), |
| "--depfile", |
| rebase_path(depfile, root_build_dir), |
| ] |
| if (defined(invoker.api_level)) { |
| args += [ |
| "--api-level", |
| "${api_level}", |
| ] |
| } |
| |
| deps = [ |
| # Generates `sdk_fidl_json`. |
| "//build/fidl:sdk_fidl", |
| ] |
| } |
| } |
| |
| platform_ir("platform_ir_platform") { |
| } |
| |
| platform_ir_deps = [ ":platform_ir_platform" ] |
| |
| foreach(supported_level, |
| platform_version.frozen_api_levels + [ |
| "NEXT", |
| "HEAD", |
| ]) { |
| label = "platform_ir_${supported_level}" |
| platform_ir_deps += [ ":${label}" ] |
| platform_ir(label) { |
| api_level = supported_level |
| } |
| } |
| |
| group("generate-platform-ir") { |
| deps = platform_ir_deps |
| } |