# Copyright 2020 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.

# DO NOT MANUALLY EDIT!
# Generated by //scripts/sdk/gn/generate.py.


import("../../build/fidl_library.gni")

fidl_library("fuchsia.modular") {
  library_name = "modular"
  namespace = "fuchsia"
  public_deps = [
    "../fuchsia.auth",
    "../fuchsia.mem",
    "../fuchsia.modular.auth",
    "../fuchsia.sys",
    "../fuchsia.ui.policy",
    "../fuchsia.ui.views",
  ]
  sources = [
    "agent/agent.fidl",
    "agent/agent_context.fidl",
    "agent/agent_controller/agent_controller.fidl",
    "annotation/annotation.fidl",
    "basemgr/base_shell.fidl",
    "basemgr/user_provider.fidl",
    "component/component_context.fidl",
    "config/config.fidl",
    "intent/intent.fidl",
    "lifecycle/lifecycle.fidl",
    "module/link_path.fidl",
    "module/module_context.fidl",
    "module/module_controller.fidl",
    "module/module_data.fidl",
    "module/module_manifest.fidl",
    "module/module_state.fidl",
    "session/focus.fidl",
    "session/session_restart_controller.fidl",
    "session/session_shell.fidl",
    "story/create_link.fidl",
    "story/create_module_parameter_map.fidl",
    "story/puppet_master.fidl",
    "story/story_command.fidl",
    "story/story_controller.fidl",
    "story/story_info.fidl",
    "story/story_options.fidl",
    "story/story_provider.fidl",
    "story/story_shell.fidl",
    "story/story_shell_factory.fidl",
    "story/story_state.fidl",
    "story/story_visibility_state.fidl",
    "surface/surface.fidl",
  ]
}

group("all"){
  deps = [
    ":fuchsia.modular",
  ]
}
