# 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 = false
  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",
    "//garnet/public/lib/inspect",
  ]
  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"]
  }

  # Extra stack needed to avoid crashes when loading vulkan validation layers
  # with asan enabled.
  ldflags = [ "-Wl,-z,stack-size=0x100000" ]
}

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