# 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("//build/config/chrome_build.gni")

# These arguments can be overridden from the command line (see "gn help args").
declare_args() {
  # Set this to run the jscompile checks after building the webapp.
  enable_remoting_jscompile = false

  # Set this to enable building internal AppRemoting apps.
  enable_internal_app_remoting_targets = false
}

# Set this to enable cast mode on the android client.
enable_cast = 0

# Set this to use GCD instead of the remoting directory service.
remoting_use_gcd = 0

# Enable the multi-process host on Windows by default.
if (is_win) {
  remoting_multi_process = 1
} else {
  remoting_multi_process = 0
}

remoting_rdp_session = 1

if (is_chrome_branded) {
  branding_path = rebase_path("//remoting/branding_Chrome", root_build_dir)
} else {
  branding_path = rebase_path("//remoting/branding_Chromium", root_build_dir)
}

# The ar_service_environment variable is used to define the target
# environment for the app being built.
# The allowed values are dev and prod.
if (is_debug) {
  ar_service_environment = "dev"
} else {
  # Non-dev builds should default to 'prod'.
  ar_service_environment = "prod"
}
