# 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.
  remoting_enable_cast = false

  # Set this to enable Android Chromoting Cardboard Activity.
  remoting_enable_cardboard = false
}

# 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"
}
