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