# 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("//testing/test.gni")

group("cloud_print") {
  if (is_win) {
    public_deps = [
      "//cloud_print/virtual_driver/win/install:virtual_driver_setup",
      "//cloud_print/virtual_driver/win/port_monitor",
    ]

    # When compiling 32-bit, also reference the 64-bit driver for installing on
    # 64-bit systems.
    if (target_cpu == "x86" && current_cpu == "x86") {
      if (is_clang) {
        win64 = "//build/toolchain/win:clang_x64"
      } else {
        win64 = "//build/toolchain/win:x64"
      }
      public_deps += [ "//cloud_print/virtual_driver/win/port_monitor($win64)" ]
    }
  }
}

test("cloud_print_unittests") {
  sources = [
    "virtual_driver/win/port_monitor/port_monitor_unittest.cc",
  ]

  deps = [
    "//base",
    "//base/test:run_all_unittests",
    "//cloud_print/virtual_driver/win/port_monitor:lib",
    "//testing/gmock",
    "//testing/gtest",
  ]

  libs = [ "secur32.lib" ]
}
