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

# To build a different Scenic-y executable, cut'n'paste the
# declare_args() and executable("scenic") into a different
# BUILD.gn and then modify the args and the executable name,
# as desired.

declare_args() {
  enable_value_subsystem = false
  enable_gfx_subsystem = true
  enable_sketchy_subsystem = true
  enable_input_subsystem = true
}

executable("scenic") {
  sources = [
    "//garnet/bin/ui/scenic/app.cc",
    "//garnet/bin/ui/scenic/app.h",
    "//garnet/bin/ui/scenic/main.cc",
  ]

  deps = [
    "//garnet/bin/ui/scenic:base_deps",
  ]
  defines = []

  if (enable_gfx_subsystem) {
    defines += [ "SCENIC_ENABLE_GFX_SUBSYSTEM" ]
    deps += [ "//garnet/lib/ui/gfx" ]
  }

  if (enable_sketchy_subsystem) {
    defines += [ "SCENIC_ENABLE_SKETCHY_SUBSYSTEM" ]
    deps += [ "//garnet/lib/ui/sketchy" ]
  }

  if (enable_input_subsystem) {
    defines += [ "SCENIC_ENABLE_INPUT_SUBSYSTEM" ]
    deps += [ "//garnet/lib/ui/input" ]
  }
}

source_set("base_deps") {
  public_deps = [
    "//garnet/lib/ui/scenic",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//zircon/public/lib/trace-provider",
    "//zircon/public/lib/fit",
  ]
}
