summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrettw <brettw@chromium.org>2015-10-13 17:49:38 -0700
committerCommit bot <commit-bot@chromium.org>2015-10-14 00:50:16 +0000
commit53eae14bacb401632d4f2045ed8715705dcd8d1d (patch)
tree9e081d4dc9e2ac8570c7e120ad8812fe30a52b53
parent0b999094d4ce8a462b70327cc38ca117313a1504 (diff)
downloadchromium_src-53eae14bacb401632d4f2045ed8715705dcd8d1d.zip
chromium_src-53eae14bacb401632d4f2045ed8715705dcd8d1d.tar.gz
chromium_src-53eae14bacb401632d4f2045ed8715705dcd8d1d.tar.bz2
Add cloud_print to the GN build.
There were some existing cloud_print targets that were hooked up only on Linux, but most of the code was Windows-only. This adds the missing targets and should bring us up to GYP parity. Fix the cloud print size_t to int warnings and remove the warning disable from GYP. Move generated resources file from cloud_print/resources.h to cloud_print/service/resources.h to match where the source file is. Cloud print does some messy things to get the content switches constants, including the file directly in its sources and manually setting LINK_CONTENT_STATICALLY for all targets. In GN, this adds a static_switches target in content that does this in an official way. Review URL: https://codereview.chromium.org/1393123003 Cr-Commit-Position: refs/heads/master@{#353928}
-rw-r--r--.gn3
-rw-r--r--BUILD.gn2
-rw-r--r--build/config/win/manifest.gni4
-rw-r--r--build/gn_migration.gypi10
-rw-r--r--build/win/require_administrator.manifest9
-rw-r--r--chrome/version_resource_rules.gypi3
-rw-r--r--cloud_print/BUILD.gn38
-rw-r--r--cloud_print/cloud_print.gyp2
-rw-r--r--cloud_print/cloud_print_resources.gyp3
-rw-r--r--cloud_print/common/BUILD.gn26
-rw-r--r--cloud_print/common/common.gyp1
-rw-r--r--cloud_print/service/BUILD.gn56
-rw-r--r--cloud_print/service/service.gyp10
-rw-r--r--cloud_print/service/win/BUILD.gn108
-rw-r--r--cloud_print/service/win/cloud_print_service.cc4
-rw-r--r--cloud_print/service/win/cloud_print_service_config.cc7
-rw-r--r--cloud_print/service/win/installer.cc2
-rw-r--r--cloud_print/service/win/service.gyp5
-rw-r--r--cloud_print/service/win/service_controller.h2
-rw-r--r--cloud_print/virtual_driver/win/BUILD.gn19
-rw-r--r--cloud_print/virtual_driver/win/install/BUILD.gn110
-rw-r--r--cloud_print/virtual_driver/win/install/virtual_driver_install.gyp2
-rw-r--r--cloud_print/virtual_driver/win/port_monitor/BUILD.gn61
-rw-r--r--cloud_print/virtual_driver/win/virtual_driver.gypi3
-rw-r--r--content/public/common/BUILD.gn23
25 files changed, 475 insertions, 38 deletions
diff --git a/.gn b/.gn
index 5a7b9ce..243474c 100644
--- a/.gn
+++ b/.gn
@@ -30,7 +30,7 @@ check_targets = [
# TODO(brettw): Fix http://crbug.com/460828 and uncomment the following
# line.
#"//chrome_elf/*",
- "//cloud_print/*",
+ #"//cloud_print/*",
#"//components/*", # Lots of errors.
"//components/app_modal/*",
@@ -63,6 +63,7 @@ check_targets = [
#"//content/*", # A whole lot of errors.
"//content/public/common:result_codes",
+ "//content/public/common:static_switches",
"//courgette/*",
"//crypto/*",
"//data/*",
diff --git a/BUILD.gn b/BUILD.gn
index f9cb097..d52dd38 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -596,6 +596,8 @@ group("both_gn_and_gyp") {
"//chrome/installer/setup:setup_unittests",
"//chrome_elf:chrome_elf_unittests",
"//chrome_elf:dll_hash_main",
+ "//cloud_print/service/win:cloud_print_service",
+ "//cloud_print:cloud_print_unittests",
"//components/crash/content/tools:crash_service",
"//components/wifi:wifi_test",
"//net:quic_client",
diff --git a/build/config/win/manifest.gni b/build/config/win/manifest.gni
index 6dc6755..285cf25 100644
--- a/build/config/win/manifest.gni
+++ b/build/config/win/manifest.gni
@@ -42,6 +42,10 @@ common_controls_manifest = "//build/win/common_controls.manifest"
# request elevated privileges from the user. This is normally what you want.
as_invoker_manifest = "//build/win/as_invoker.manifest"
+# An alternative to as_invoker_manifest when you want the application to always
+# elevate.
+require_administrator_manifest = "//build/win/require_administrator.manifest"
+
# Construct a target to combine the given manifest files into a .rc file.
#
# Variables for the windows_manifest template:
diff --git a/build/gn_migration.gypi b/build/gn_migration.gypi
index 1c97307..0d5a7a5 100644
--- a/build/gn_migration.gypi
+++ b/build/gn_migration.gypi
@@ -477,6 +477,11 @@
'../chrome/installer/mini_installer.gyp:mini_installer',
'../chrome_elf/chrome_elf.gyp:chrome_elf_unittests',
'../chrome_elf/chrome_elf.gyp:dll_hash_main',
+ '../cloud_print/service/win/service.gyp:cloud_print_service',
+ '../cloud_print/service/win/service.gyp:cloud_print_service_config',
+ '../cloud_print/service/win/service.gyp:cloud_print_service_setup',
+ '../cloud_print/virtual_driver/win/install/virtual_driver_install.gyp:virtual_driver_setup',
+ '../cloud_print/virtual_driver/win/virtual_driver.gyp:gcp_portmon',
'../components/components.gyp:wifi_test',
'../net/net.gyp:quic_client',
'../net/net.gyp:quic_server',
@@ -673,11 +678,6 @@
'../cloud_print/gcp20/prototype/gcp20_device.gyp:gcp20_device',
'../cloud_print/gcp20/prototype/gcp20_device.gyp:gcp20_device_unittests',
- '../cloud_print/service/win/service.gyp:cloud_print_service',
- '../cloud_print/service/win/service.gyp:cloud_print_service_config',
- '../cloud_print/service/win/service.gyp:cloud_print_service_setup',
- '../cloud_print/virtual_driver/win/install/virtual_driver_install.gyp:virtual_driver_setup',
- '../cloud_print/virtual_driver/win/virtual_driver.gyp:gcp_portmon',
'../components/test_runner/test_runner.gyp:layout_test_helper',
'../content/content_shell_and_tests.gyp:content_shell_crash_service',
'../gpu/gpu.gyp:angle_end2end_tests',
diff --git a/build/win/require_administrator.manifest b/build/win/require_administrator.manifest
new file mode 100644
index 0000000..4142e73
--- /dev/null
+++ b/build/win/require_administrator.manifest
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+ <security>
+ <requestedPrivileges>
+ <requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
+ </requestedPrivileges>
+ </security>
+</trustInfo></assembly>
diff --git a/chrome/version_resource_rules.gypi b/chrome/version_resource_rules.gypi
index afd44e3..cf774f9 100644
--- a/chrome/version_resource_rules.gypi
+++ b/chrome/version_resource_rules.gypi
@@ -4,6 +4,9 @@
# This file defines rules that allow you to generate version resources for
# Windows images.
+#
+# GN: Use the "process_version" template in //chrome/version.gni.
+# For an example, see the target //chrome:chrome_exe_version
# Include 'version.gypi' at the top of your GYP file to define
# the required variables:
diff --git a/cloud_print/BUILD.gn b/cloud_print/BUILD.gn
index 2cd785b..d92c3b2 100644
--- a/cloud_print/BUILD.gn
+++ b/cloud_print/BUILD.gn
@@ -4,6 +4,25 @@
import("//testing/test.gni")
+group("cloud_print") {
+ if (is_win) {
+ public_deps = [
+ "//cloud_print/service/win:cloud_print_service",
+ "//cloud_print/service/win:cloud_print_service_config",
+ "//cloud_print/service/win:cloud_print_service_setup",
+ "//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") {
+ # TODO(brettw) enable this when Windows cross-compiles are set up.
+ # public_deps += [ "//cloud_print/virtual_driver/win/port_monitor(//build/toolchain/win:x64)" ]
+ }
+ }
+}
+
test("cloud_print_unittests") {
sources = [
"service/service_state_unittest.cc",
@@ -12,18 +31,17 @@ test("cloud_print_unittests") {
deps = [
"//base",
"//base/test:run_all_unittests",
- "//cloud_print/service:cloud_print_service_lib",
+ "//cloud_print/service:lib",
"//testing/gmock",
"//testing/gtest",
]
- # TODO(GYP)
- # if (is_win) {
- # sources += [
- # "service/win/service_ipc_unittest.cc",
- # "virtual_driver/win/port_monitor/port_monitor_unittest.cc",
- # ]
- #
- # deps += [ "virtual_driver/win:gcp_portmon_lib" ]
- #}
+ if (is_win) {
+ sources += [
+ "service/win/service_ipc_unittest.cc",
+ "virtual_driver/win/port_monitor/port_monitor_unittest.cc",
+ ]
+ deps += [ "//cloud_print/virtual_driver/win/port_monitor:lib" ]
+ libs = [ "secur32.lib" ]
+ }
}
diff --git a/cloud_print/cloud_print.gyp b/cloud_print/cloud_print.gyp
index a677438..8da7195 100644
--- a/cloud_print/cloud_print.gyp
+++ b/cloud_print/cloud_print.gyp
@@ -7,6 +7,7 @@
},
'targets': [
{
+ # GN version: //cloud_print
'target_name': 'cloud_print',
'type': 'none',
'dependencies': [
@@ -29,6 +30,7 @@
],
},
{
+ # GN version: //cloud_print:cloud_print_unittests
'target_name': 'cloud_print_unittests',
'type': 'executable',
'sources': [
diff --git a/cloud_print/cloud_print_resources.gyp b/cloud_print/cloud_print_resources.gyp
index 4057d23..8ebd5cd 100644
--- a/cloud_print/cloud_print_resources.gyp
+++ b/cloud_print/cloud_print_resources.gyp
@@ -17,6 +17,9 @@
],
'targets': [
{
+ # GN: Thes targets for this are split out depending on when the specific
+ # .ver file is used. For example, see:
+ # //cloud_print/sevice/win:exe_version
'target_name': 'cloud_print_version_resources',
'type': 'none',
'variables': {
diff --git a/cloud_print/common/BUILD.gn b/cloud_print/common/BUILD.gn
new file mode 100644
index 0000000..ca0b546
--- /dev/null
+++ b/cloud_print/common/BUILD.gn
@@ -0,0 +1,26 @@
+# 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.
+
+source_set("common") {
+ sources = [
+ "win/cloud_print_utils.cc",
+ "win/cloud_print_utils.h",
+ ]
+
+ deps = [
+ "//base",
+ ]
+}
+
+source_set("install_utils") {
+ sources = [
+ "win/install_utils.cc",
+ "win/install_utils.h",
+ ]
+
+ deps = [
+ ":common",
+ "//base",
+ ]
+}
diff --git a/cloud_print/common/common.gyp b/cloud_print/common/common.gyp
index ea4efa3..13351fd 100644
--- a/cloud_print/common/common.gyp
+++ b/cloud_print/common/common.gyp
@@ -7,6 +7,7 @@
},
'targets': [
{
+ # GN version: //cloud_print/common:install_utils
'target_name': 'cloud_print_install_lib',
'type': 'static_library',
'dependencies': [
diff --git a/cloud_print/service/BUILD.gn b/cloud_print/service/BUILD.gn
index 7baf63b..172a71e 100644
--- a/cloud_print/service/BUILD.gn
+++ b/cloud_print/service/BUILD.gn
@@ -2,12 +2,34 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("//build/config/features.gni")
import("//tools/grit/grit_rule.gni")
-source_set("cloud_print_service_lib") {
+config("internal_config") {
+ defines = [
+ "SECURITY_WIN32",
+ "STRICT",
+ "_ATL_APARTMENT_THREADED",
+ "_ATL_CSTRING_EXPLICIT_CONSTRUCTORS",
+ "_ATL_NO_COM_SUPPORT",
+ "_ATL_NO_AUTOMATIC_NAMESPACE",
+ "_ATL_NO_EXCEPTIONS",
+ ]
+}
+
+if (is_win && is_clang) {
+ # service_controller.h uses DECLARE_REGISTRY_APPID_RESOURCEID, which
+ # in msvs2013 returns string literals via a non-const pointer. So
+ # disable this warning for now.
+ # TODO(thakis): Remove this once we're on 2014,
+ # https://connect.microsoft.com/VisualStudio/feedback/details/806376/atl-hindrances-to-adopting-new-strictstrings-conformance-option-in-vs2013
+ config("service_warning_config") {
+ cflags = [ "-Wno-writable-strings" ]
+ }
+}
+
+source_set("lib") {
sources = [
- "//cloud_print/common/win/cloud_print_utils.cc",
- "//cloud_print/common/win/cloud_print_utils.h",
"service_constants.cc",
"service_constants.h",
"service_state.cc",
@@ -28,24 +50,46 @@ source_set("cloud_print_service_lib") {
"win/setup_listener.h",
]
+ configs += [
+ ":internal_config",
+ "//build/config/compiler:wexit_time_destructors",
+ ]
+
deps = [
- ":service_resources",
+ ":resources",
"//base",
"//base:base_static",
"//base/third_party/dynamic_annotations",
- "//content/public/common",
+ "//chrome/common:constants",
+ "//cloud_print/common",
+ "//components/cloud_devices/common",
+ "//content/public/common:static_switches",
"//google_apis",
"//ipc",
"//net",
"//url",
]
+ if (enable_basic_printing || enable_print_preview) {
+ deps += [ "//printing" ]
+ }
+
+ if (is_win) {
+ deps += [
+ "//chrome/common:constants",
+ "//chrome/installer/launcher_support",
+ ]
+ }
+
if (is_clang) {
cflags = [ "-Wno-parentheses" ]
+ if (is_win) {
+ public_configs = [ ":service_warning_config" ]
+ }
}
}
-grit("service_resources") {
+grit("resources") {
source = "win/service_resources.grd"
outputs = [
"resources.h",
diff --git a/cloud_print/service/service.gyp b/cloud_print/service/service.gyp
index 1eb2b23..a6171a8 100644
--- a/cloud_print/service/service.gyp
+++ b/cloud_print/service/service.gyp
@@ -22,19 +22,14 @@
'_ATL_NO_AUTOMATIC_NAMESPACE',
'_ATL_NO_EXCEPTIONS',
],
- 'conditions': [
- ['OS=="win"', {
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
- 'msvs_disabled_warnings': [ 4267, ],
- }],
- ],
},
'targets': [
{
+ # GN version: //cloud_print/service:resources
'target_name': 'service_resources',
'type': 'none',
'variables': {
- 'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/cloud_print',
+ 'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/cloud_print/service',
},
'actions': [
{
@@ -48,6 +43,7 @@
'includes': [ '../../build/grit_target.gypi' ],
},
{
+ # GN version: //cloud_print/service
'target_name': 'cloud_print_service_lib',
'type': 'static_library',
'dependencies': [
diff --git a/cloud_print/service/win/BUILD.gn b/cloud_print/service/win/BUILD.gn
new file mode 100644
index 0000000..f4a6f84
--- /dev/null
+++ b/cloud_print/service/win/BUILD.gn
@@ -0,0 +1,108 @@
+# 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/win/manifest.gni")
+import("//chrome/version.gni")
+
+assert(is_win)
+
+executable("cloud_print_service") {
+ sources = [
+ "cloud_print_service.cc",
+ ]
+
+ configs += [
+ "//build/config/compiler:wexit_time_destructors",
+ "//cloud_print/service:internal_config",
+ ]
+
+ deps = [
+ ":exe_manifest",
+ ":exe_version",
+ "//cloud_print/service:lib",
+ ]
+
+ libs = [ "secur32.lib" ]
+}
+
+windows_manifest("exe_manifest") {
+ sources = [
+ common_controls_manifest,
+ default_compatibility_manifest,
+ require_administrator_manifest,
+ ]
+ type = "exe"
+}
+
+process_version("exe_version") {
+ template_file = chrome_version_rc_template
+ sources = [
+ "cloud_print_service_exe.ver",
+ ]
+ output = "$target_gen_dir/cloud_print_service_exe_version.rc"
+}
+
+executable("cloud_print_service_config") {
+ sources = [
+ "cloud_print_service_config.cc",
+ ]
+
+ configs -= [ "//build/config/win:console" ]
+ configs += [ "//build/config/win:windowed" ]
+
+ deps = [
+ ":config_version",
+ ":exe_manifest",
+ "//cloud_print/common:install_utils",
+ "//cloud_print/service:resources",
+ "//cloud_print/service:lib",
+ ]
+
+ libs = [ "secur32.lib" ]
+
+ # TODO: Remove once cloud_print_service_config.cc no longer depends on
+ # atlapp.h, http://crbug.com/5027
+ if (is_clang) {
+ cflags = [
+ # atlapp.h contains a global "using namespace WTL;".
+ "-Wno-header-hygiene",
+
+ # atlgdi.h does an intentional assignment in an if conditional.
+ "-Wno-parentheses",
+
+ # atlgdi.h fails with -Wreorder enabled.
+ "-Wno-reorder",
+
+ # atlgdi.h doesn"t use braces around subobject initializers.
+ "-Wno-missing-braces",
+ ]
+ }
+}
+
+process_version("config_version") {
+ template_file = chrome_version_rc_template
+ sources = [
+ "cloud_print_service_config_exe.ver",
+ ]
+ output = "$target_gen_dir/cloud_print_service_config_version.rc"
+}
+
+executable("cloud_print_service_setup") {
+ sources = [
+ "installer.cc",
+ "installer.h",
+ ]
+
+ configs -= [ "//build/config/win:console" ]
+ configs += [ "//build/config/win:windowed" ]
+
+ deps = [
+ ":exe_manifest",
+ "//cloud_print/common:install_utils",
+ "//cloud_print/service:resources",
+ "//cloud_print/service:lib",
+ ]
+
+ libs = [ "secur32.lib" ]
+}
diff --git a/cloud_print/service/win/cloud_print_service.cc b/cloud_print/service/win/cloud_print_service.cc
index 92e5fec..8c5a4a0 100644
--- a/cloud_print/service/win/cloud_print_service.cc
+++ b/cloud_print/service/win/cloud_print_service.cc
@@ -361,8 +361,8 @@ class CloudPrintServiceModule
}
if (new_contents != contents) {
- size_t written = base::WriteFile(file, new_contents.c_str(),
- new_contents.size());
+ size_t written = base::WriteFile(
+ file, new_contents.c_str(), static_cast<int>(new_contents.size()));
if (written != new_contents.size()) {
return ReportError(cloud_print::GetLastHResult(),
IDS_ERROR_FAILED_CREATE_CONFIG);
diff --git a/cloud_print/service/win/cloud_print_service_config.cc b/cloud_print/service/win/cloud_print_service_config.cc
index 278c0dc..bfb4af9 100644
--- a/cloud_print/service/win/cloud_print_service_config.cc
+++ b/cloud_print/service/win/cloud_print_service_config.cc
@@ -17,7 +17,7 @@
#include "base/threading/thread.h"
#include "chrome/common/chrome_constants.h"
#include "cloud_print/common/win/cloud_print_utils.h"
-#include "cloud_print/resources.h"
+#include "cloud_print/service/resources.h"
#include "cloud_print/service/service_state.h"
#include "cloud_print/service/win/chrome_launcher.h"
#include "cloud_print/service/win/service_controller.h"
@@ -297,7 +297,8 @@ base::string16 SetupDialog::GetDlgItemText(int id) const {
const ATL::CWindow& item = GetDlgItem(id);
size_t length = item.GetWindowTextLength();
base::string16 result(length + 1, L'\0');
- result.resize(item.GetWindowText(&result[0], result.size()));
+ result.resize(item.GetWindowText(&result[0],
+ static_cast<int>(result.size())));
return result;
}
@@ -396,7 +397,7 @@ void SetupDialog::Install(const base::string16& user,
return ShowError(IDS_ERROR_FAILED_CREATE_CONFIG);
size_t written = base::WriteFile(file, contents.c_str(),
- contents.size());
+ static_cast<int>(contents.size()));
if (written != contents.size()) {
DWORD last_error = GetLastError();
if (!last_error)
diff --git a/cloud_print/service/win/installer.cc b/cloud_print/service/win/installer.cc
index 312af6e..e09eca3 100644
--- a/cloud_print/service/win/installer.cc
+++ b/cloud_print/service/win/installer.cc
@@ -14,7 +14,7 @@
#include "base/win/shortcut.h"
#include "cloud_print/common/win/cloud_print_utils.h"
#include "cloud_print/common/win/install_utils.h"
-#include "cloud_print/resources.h"
+#include "cloud_print/service/resources.h"
#include "cloud_print/service/service_constants.h"
#include "cloud_print/service/service_switches.h"
#include "cloud_print/service/win/service_controller.h"
diff --git a/cloud_print/service/win/service.gyp b/cloud_print/service/win/service.gyp
index 0019b6f..5434c49 100644
--- a/cloud_print/service/win/service.gyp
+++ b/cloud_print/service/win/service.gyp
@@ -22,11 +22,10 @@
'_ATL_NO_AUTOMATIC_NAMESPACE',
'_ATL_NO_EXCEPTIONS',
],
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
- 'msvs_disabled_warnings': [ 4267, ],
},
'targets': [
{
+ # GN version: //cloud_print/service/win:cloud_print_service
'target_name': 'cloud_print_service',
'type': 'executable',
'sources': [
@@ -51,6 +50,7 @@
},
},
{
+ # GN version: //cloud_print/service/win:cloud_print_service_config
'target_name': 'cloud_print_service_config',
'type': 'executable',
'sources': [
@@ -99,6 +99,7 @@
},
},
{
+ # GN version: //cloud_print/service/win:cloud_print_service_setup
'target_name': 'cloud_print_service_setup',
'type': 'executable',
'sources': [
diff --git a/cloud_print/service/win/service_controller.h b/cloud_print/service/win/service_controller.h
index 6868fbd..fcec4fd 100644
--- a/cloud_print/service/win/service_controller.h
+++ b/cloud_print/service/win/service_controller.h
@@ -10,7 +10,7 @@
#include "base/command_line.h"
#include "base/strings/string16.h"
-#include "cloud_print/resources.h"
+#include "cloud_print/service/resources.h"
namespace base {
class FilePath;
diff --git a/cloud_print/virtual_driver/win/BUILD.gn b/cloud_print/virtual_driver/win/BUILD.gn
new file mode 100644
index 0000000..110b5a3
--- /dev/null
+++ b/cloud_print/virtual_driver/win/BUILD.gn
@@ -0,0 +1,19 @@
+# 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.
+
+assert(is_win)
+
+source_set("win") {
+ sources = [
+ "virtual_driver_consts.cc",
+ "virtual_driver_consts.h",
+ "virtual_driver_helpers.cc",
+ "virtual_driver_helpers.h",
+ ]
+
+ deps = [
+ "//base",
+ "//cloud_print/common",
+ ]
+}
diff --git a/cloud_print/virtual_driver/win/install/BUILD.gn b/cloud_print/virtual_driver/win/install/BUILD.gn
new file mode 100644
index 0000000..edcf769
--- /dev/null
+++ b/cloud_print/virtual_driver/win/install/BUILD.gn
@@ -0,0 +1,110 @@
+# 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("//chrome/version.gni")
+import("//tools/grit/grit_rule.gni")
+
+assert(is_win)
+
+executable("virtual_driver_setup") {
+ sources = [
+ "setup.cc",
+ ]
+
+ configs -= [ "//build/config/win:console" ]
+ configs += [ "//build/config/win:windowed" ]
+
+ deps = [
+ ":copy_gcp_driver",
+ ":resources",
+ ":setup_version",
+ "//base",
+ "//cloud_print/common:install_utils",
+ "//cloud_print/virtual_driver/win",
+ ]
+
+ libs = [ "setupapi.lib" ]
+ ldflags = [ "/DELAYLOAD:winspool.drv" ]
+}
+
+copy("copy_gcp_driver") {
+ sources = [
+ "../../gcp_driver.gpd",
+ ]
+ outputs = [
+ "$root_build_dir/gcp_driver.gpd",
+ ]
+}
+
+process_version("setup_version") {
+ template_file = chrome_version_rc_template
+ sources = [
+ "virtual_driver_setup_exe.ver",
+ ]
+ output = "$target_gen_dir/virtual_driver_setup.rc"
+}
+
+grit("resources") {
+ visibility = [ ":*" ]
+
+ source = "virtual_driver_setup_resources.grd"
+
+ output_dir = "$root_gen_dir/virtual_driver_setup_resources"
+
+ outputs = [
+ "grit/virtual_driver_setup_resources.h",
+ "virtual_driver_setup_resources_ar.rc",
+ "virtual_driver_setup_resources_bg.rc",
+ "virtual_driver_setup_resources_bn.rc",
+ "virtual_driver_setup_resources_ca.rc",
+ "virtual_driver_setup_resources_cs.rc",
+ "virtual_driver_setup_resources_da.rc",
+ "virtual_driver_setup_resources_de.rc",
+ "virtual_driver_setup_resources_el.rc",
+ "virtual_driver_setup_resources_en.rc",
+ "virtual_driver_setup_resources_en-GB.rc",
+ "virtual_driver_setup_resources_es.rc",
+ "virtual_driver_setup_resources_es-419.rc",
+ "virtual_driver_setup_resources_et.rc",
+ "virtual_driver_setup_resources_fa.rc",
+ "virtual_driver_setup_resources_fi.rc",
+ "virtual_driver_setup_resources_fil.rc",
+ "virtual_driver_setup_resources_fr.rc",
+ "virtual_driver_setup_resources_gu.rc",
+ "virtual_driver_setup_resources_he.rc",
+ "virtual_driver_setup_resources_hi.rc",
+ "virtual_driver_setup_resources_hr.rc",
+ "virtual_driver_setup_resources_hu.rc",
+ "virtual_driver_setup_resources_id.rc",
+ "virtual_driver_setup_resources_it.rc",
+ "virtual_driver_setup_resources_ja.rc",
+ "virtual_driver_setup_resources_kn.rc",
+ "virtual_driver_setup_resources_ko.rc",
+ "virtual_driver_setup_resources_lt.rc",
+ "virtual_driver_setup_resources_lv.rc",
+ "virtual_driver_setup_resources_ml.rc",
+ "virtual_driver_setup_resources_mr.rc",
+ "virtual_driver_setup_resources_ms.rc",
+ "virtual_driver_setup_resources_nl.rc",
+ "virtual_driver_setup_resources_nb.rc",
+ "virtual_driver_setup_resources_pl.rc",
+ "virtual_driver_setup_resources_pt-BR.rc",
+ "virtual_driver_setup_resources_pt-PT.rc",
+ "virtual_driver_setup_resources_ro.rc",
+ "virtual_driver_setup_resources_ru.rc",
+ "virtual_driver_setup_resources_sk.rc",
+ "virtual_driver_setup_resources_sl.rc",
+ "virtual_driver_setup_resources_sr.rc",
+ "virtual_driver_setup_resources_sv.rc",
+ "virtual_driver_setup_resources_sw.rc",
+ "virtual_driver_setup_resources_ta.rc",
+ "virtual_driver_setup_resources_te.rc",
+ "virtual_driver_setup_resources_th.rc",
+ "virtual_driver_setup_resources_tr.rc",
+ "virtual_driver_setup_resources_uk.rc",
+ "virtual_driver_setup_resources_vi.rc",
+ "virtual_driver_setup_resources_zh-CN.rc",
+ "virtual_driver_setup_resources_zh-TW.rc",
+ ]
+}
diff --git a/cloud_print/virtual_driver/win/install/virtual_driver_install.gyp b/cloud_print/virtual_driver/win/install/virtual_driver_install.gyp
index 6b19304..a788f1a 100644
--- a/cloud_print/virtual_driver/win/install/virtual_driver_install.gyp
+++ b/cloud_print/virtual_driver/win/install/virtual_driver_install.gyp
@@ -13,6 +13,7 @@
},
'targets' : [
{
+ # GN version: //cloud_print/virtual_driver/win/install:virtual_driver_setup
'target_name': 'virtual_driver_setup',
'type': 'executable',
'include_dirs': [
@@ -102,6 +103,7 @@
],
},
{
+ # GN version: //cloud_print/virtual_driver/win/install:resources
'target_name': 'virtual_driver_setup_resources',
'type': 'none',
'variables': {
diff --git a/cloud_print/virtual_driver/win/port_monitor/BUILD.gn b/cloud_print/virtual_driver/win/port_monitor/BUILD.gn
new file mode 100644
index 0000000..a9e5b35
--- /dev/null
+++ b/cloud_print/virtual_driver/win/port_monitor/BUILD.gn
@@ -0,0 +1,61 @@
+# 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("//chrome/version.gni")
+
+assert(is_win)
+
+# When cross-compiling a 64-bit driver for a 32-bit build, some things get name
+# mangled with this suffix.
+if (target_cpu == "x86" && current_cpu == "x64") {
+ arch_suffix = "64"
+} else {
+ arch_suffix = ""
+}
+
+print("port_monitor $current_toolchain")
+
+shared_library("port_monitor") {
+ output_name = "gcp_portmon$arch_suffix"
+
+ sources = [
+ "port_monitor.def",
+ "port_monitor_dll.cc",
+ ]
+
+ deps = [
+ ":lib",
+ ":resources",
+ "//base",
+ "//chrome:version_header",
+ "//chrome/common:constants",
+ ]
+
+ libs = [ "userenv.lib" ]
+}
+
+source_set("lib") {
+ sources = [
+ "port_monitor.cc",
+ "port_monitor.h",
+ ]
+
+ deps = [
+ "//base",
+ "//chrome/common:constants",
+ "//chrome/installer/launcher_support",
+ "//cloud_print/virtual_driver/win",
+ ]
+}
+
+process_version("resources") {
+ template_file = chrome_version_rc_template
+ sources = [
+ "../gcp_portmon${arch_suffix}_dll.ver",
+ ]
+
+ # Note: target_gen_dir will be different for each toolchain so the output
+ # name doesn't need mangling.
+ output = "$target_gen_dir/gcp_portmon_dll.rc"
+}
diff --git a/cloud_print/virtual_driver/win/virtual_driver.gypi b/cloud_print/virtual_driver/win/virtual_driver.gypi
index 41b2a97..1595883 100644
--- a/cloud_print/virtual_driver/win/virtual_driver.gypi
+++ b/cloud_print/virtual_driver/win/virtual_driver.gypi
@@ -16,6 +16,7 @@
},
'targets' : [
{
+ # GN version: //cloud_print/virtual_driver/win
'target_name': 'virtual_driver_lib<(virtual_driver_suffix)',
'type': 'static_library',
'sources': [
@@ -28,6 +29,7 @@
],
},
{
+ # GN version: //cloud_print/virtual_driver/win/port_monitor:lib
'target_name': 'gcp_portmon_lib<(virtual_driver_suffix)',
'type': 'static_library',
'sources': [
@@ -39,6 +41,7 @@
],
},
{
+ # GN version: //cloud_print/virtual_driver/win/port_monitor
'target_name': 'gcp_portmon<(virtual_driver_suffix)',
'type': 'loadable_module',
'sources': [
diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn
index ade86a2..c207e84 100644
--- a/content/public/common/BUILD.gn
+++ b/content/public/common/BUILD.gn
@@ -27,6 +27,29 @@ source_set("result_codes") {
]
}
+# Forces static linking for targets using the static_switches constants, even
+# in the component build. This config makes it impossible to use the static
+# switches target and use the rest of content at the same time, because the
+# component export flags won't be consistent.
+config("static_switches_defines") {
+ defines = [ "COMPILE_CONTENT_STATICALLY" ]
+}
+
+# This target allows you to use the content_switches constants and statically
+# link to it, without depending on the rest of content. This is only for use
+# without content, or you will get multiply defined symbols.
+source_set("static_switches") {
+ public = [
+ "content_switches.h",
+ ]
+ sources = [
+ "//content/common/content_export.h",
+ "content_switches.cc",
+ ]
+
+ public_configs = [ ":static_switches_defines" ]
+}
+
source_set("common_sources") {
visibility = [ "//content/*" ]