# Copyright 2015 The Chromium 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("//mojo/go/rules.gni")

# The purpose of this target is to ensure the parser remains buildable on all
# platforms. The output files are not consumed by anything. The parser is built
# and uploaded to GCS by manually running build_mojom_tool.py.
action("mojom_tool") {
  script = "../tools/build_mojom_tool.py"

  inputs = [
    "generated/mojom_files/mojom_files.mojom.go",
    "generated/mojom_types/mojom_types.mojom.go",
    "integration_tests/comment_merger_test.go",
    "integration_tests/computed_data_test.go",
    "integration_tests/resolution_test.go",
    "lexer/lexer.go",
    "lexer/token_stream.go",
    "lexer/tokens.go",
    "mojom/computed_data.go",
    "mojom/mojom_descriptor.go",
    "mojom/scopes.go",
    "mojom/types.go",
    "mojom/user_defined_types.go",
    "mojom/utils.go",
    "parser/parse_driver.go",
    "parser/parser.go",
    "parser/parsing.go",
    "serialization/serialization.go",
    "utils/sort_utils.go",
    "utils/wellfounded_graphs.go",
  ]

  outputs = [
    "$target_out_dir/mojom_linux_amd64",
    "$target_out_dir/mojom_darwin_amd64",
  ]

  args = [
    "--src-root",
    rebase_path("//", root_build_dir),
    "--out-dir",
    rebase_path(target_out_dir, root_build_dir),
    "--quiet",
  ]
}
