# Copyright 2018 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/public/tools/bindings/mojom.gni")

mojom_component("base") {
  sources = [
    "big_buffer.mojom",
    "big_string.mojom",
    "file.mojom",
    "file_error.mojom",
    "file_info.mojom",
    "file_path.mojom",
    "memory_allocator_dump_cross_process_uid.mojom",
    "process_id.mojom",
    "ref_counted_memory.mojom",
    "shared_memory.mojom",
    "string16.mojom",
    "text_direction.mojom",
    "thread_priority.mojom",
    "time.mojom",
    "unguessable_token.mojom",
    "values.mojom",
  ]

  if (is_win) {
    sources += [ "logfont_win.mojom" ]
  }
  enabled_features = []
  if (is_win) {
    enabled_features += [ "file_path_is_string16" ]
  } else {
    enabled_features += [ "file_path_is_string" ]
  }

  output_prefix = "mojo_base_mojom"
  macro_prefix = "MOJO_BASE_MOJOM"
}

mojom("read_only_buffer") {
  sources = [
    "read_only_buffer.mojom",
  ]
}
