From 991573eea1ab5aeefb920ef46a055271713d694a Mon Sep 17 00:00:00 2001 From: "joaodasilva@chromium.org" Date: Mon, 16 Dec 2013 13:49:20 +0000 Subject: Move chrome/app/policy into components/policy. This move enables using the files derived from policy_templates.json in iOS builds. List of changes: - cloud_policy_codegen.gyp and policy_templates.gypi have been merged into components/policy.gypi - policy_templates.json moved into components/policy/resources/ - policy_templates.grd and *.xtb files moved into components/policy/resources/ - syntax_check_policy_templates_json.py and chrome/tools/build/generate_policy_source.py moved into components/policy/tools BUG=271392 R=jochen@chromium.org, pastarmovj@chromium.org Review URL: https://codereview.chromium.org/108513011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240875 0039d316-1c4b-4281-b951-d872f2087c98 --- components/policy.gypi | 343 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 313 insertions(+), 30 deletions(-) (limited to 'components/policy.gypi') diff --git a/components/policy.gypi b/components/policy.gypi index 4e05b54..5d31487 100644 --- a/components/policy.gypi +++ b/components/policy.gypi @@ -3,6 +3,33 @@ # found in the LICENSE file. { + 'includes': [ + # Included to get 'mac_bundle_id' and other variables. + '../build/chrome_settings.gypi', + ], + 'variables': { + 'chromium_code': 1, + 'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/chrome', + 'policy_out_dir': '<(SHARED_INTERMEDIATE_DIR)/policy', + 'protoc_out_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out', + 'generate_policy_source_script_path': + 'policy/tools/generate_policy_source.py', + 'policy_constant_header_path': + '<(policy_out_dir)/policy/policy_constants.h', + 'policy_constant_source_path': + '<(policy_out_dir)/policy/policy_constants.cc', + 'protobuf_decoder_path': + '<(policy_out_dir)/policy/cloud_policy_generated.cc', + # This is the "full" protobuf, which defines one protobuf message per + # policy. It is also the format currently used by the server. + 'chrome_settings_proto_path': + '<(policy_out_dir)/policy/chrome_settings.proto', + # This protobuf is equivalent to chrome_settings.proto but shares messages + # for policies of the same type, so that less classes have to be generated + # and compiled. + 'cloud_policy_proto_path': + '<(policy_out_dir)/policy/cloud_policy.proto', + }, 'targets': [ { 'target_name': 'policy_component', @@ -21,14 +48,13 @@ 'dependencies': [ '../base/base.gyp:base_prefs', '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', - # TODO(joaodasilva): remove this dependency on the user policy protobuf. - '../chrome/app/policy/cloud_policy_codegen.gyp:policy', '../google_apis/google_apis.gyp:google_apis', '../ui/ui.gyp:ui', '../url/url.gyp:url_lib', 'component_strings.gyp:component_strings', 'cloud_policy_proto', 'json_schema', + 'policy', ], 'sources': [ 'policy/core/browser/cloud/message_util.cc', @@ -205,37 +231,159 @@ }], ], }, - { - 'target_name': 'cloud_policy_proto', - 'type': 'static_library', - 'sources': [ - 'policy/proto/chrome_extension_policy.proto', - 'policy/proto/device_management_backend.proto', - 'policy/proto/device_management_local.proto', - ], - 'variables': { - 'proto_in_dir': 'policy/proto', - 'proto_out_dir': 'policy/proto', - }, - 'includes': [ '../build/protoc.gypi' ], - 'conditions': [ - ['OS=="android"', { - 'sources!': [ - 'policy/proto/chrome_extension_policy.proto', - ], - }], - ['chromeos==0', { - 'sources!': [ - 'policy/proto/device_management_local.proto', - ], - }], - ], - }, ], 'conditions': [ ['configuration_policy==1', { 'targets': [ { + 'target_name': 'cloud_policy_code_generate', + 'type': 'none', + 'actions': [ + { + 'inputs': [ + 'policy/resources/policy_templates.json', + '<(generate_policy_source_script_path)', + ], + 'outputs': [ + '<(policy_constant_header_path)', + '<(policy_constant_source_path)', + '<(protobuf_decoder_path)', + '<(chrome_settings_proto_path)', + '<(cloud_policy_proto_path)', + ], + 'action_name': 'generate_policy_source', + 'action': [ + 'python', + '<@(generate_policy_source_script_path)', + '--policy-constants-header=<(policy_constant_header_path)', + '--policy-constants-source=<(policy_constant_source_path)', + '--chrome-settings-protobuf=<(chrome_settings_proto_path)', + '--cloud-policy-protobuf=<(cloud_policy_proto_path)', + '--cloud-policy-decoder=<(protobuf_decoder_path)', + '<(OS)', + '<(chromeos)', + 'policy/resources/policy_templates.json', + ], + 'message': 'Generating policy source', + }, + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '<(policy_out_dir)', + '<(protoc_out_dir)', + ], + }, + }, + { + 'target_name': 'cloud_policy_proto_generated_compile', + 'type': 'static_library', + 'sources': [ + '<(cloud_policy_proto_path)', + ], + 'variables': { + 'proto_in_dir': '<(policy_out_dir)/policy', + 'proto_out_dir': 'policy/proto', + }, + 'dependencies': [ + 'cloud_policy_code_generate', + ], + 'includes': [ + '../build/protoc.gypi', + ], + # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. + 'msvs_disabled_warnings': [4267, ], + }, + { + # This target builds the "full" protobuf, used for tests only. + 'target_name': 'chrome_settings_proto_generated_compile', + 'type': 'static_library', + 'sources': [ + '<(chrome_settings_proto_path)', + ], + 'variables': { + 'proto_in_dir': '<(policy_out_dir)/policy', + 'proto_out_dir': 'policy/proto', + }, + 'dependencies': [ + 'cloud_policy_code_generate', + 'cloud_policy_proto_generated_compile', + ], + 'includes': [ + '../build/protoc.gypi', + ], + }, + { + 'target_name': 'policy', + 'type': 'static_library', + 'hard_dependency': 1, + 'direct_dependent_settings': { + 'include_dirs': [ + '<(policy_out_dir)', + '<(protoc_out_dir)', + ], + }, + 'sources': [ + '<(policy_constant_header_path)', + '<(policy_constant_source_path)', + '<(protobuf_decoder_path)', + ], + 'include_dirs': [ + '<(DEPTH)', + ], + 'dependencies': [ + 'cloud_policy_code_generate', + 'cloud_policy_proto_generated_compile', + '<(DEPTH)/base/base.gyp:base', + '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite', + ], + 'defines': [ + 'POLICY_COMPONENT_IMPLEMENTATION', + ], + }, + { + 'target_name': 'cloud_policy_proto', + 'type': 'static_library', + 'sources': [ + 'policy/proto/chrome_extension_policy.proto', + 'policy/proto/device_management_backend.proto', + 'policy/proto/device_management_local.proto', + ], + 'variables': { + 'proto_in_dir': 'policy/proto', + 'proto_out_dir': 'policy/proto', + }, + 'includes': [ + '../build/protoc.gypi', + ], + 'conditions': [ + ['OS=="android"', { + 'sources!': [ + 'policy/proto/chrome_extension_policy.proto', + ], + }], + ['chromeos==0', { + 'sources!': [ + 'policy/proto/device_management_local.proto', + ], + }], + ], + }, + { + 'target_name': 'policy_test_support', + 'type': 'none', + 'hard_dependency': 1, + 'direct_dependent_settings': { + 'include_dirs': [ + '<(policy_out_dir)', + '<(protoc_out_dir)', + ], + }, + 'dependencies': [ + 'chrome_settings_proto_generated_compile', + 'policy', + ], + }, + { 'target_name': 'policy_component_test_support', 'type': 'static_library', # This must be undefined so that POLICY_EXPORT works correctly in @@ -244,10 +392,9 @@ 'POLICY_COMPONENT_IMPLEMENTATION', ], 'dependencies': [ - # TODO(joaodasilva): remove this dependency. - '../chrome/app/policy/cloud_policy_codegen.gyp:policy_test_support', 'cloud_policy_proto', 'policy_component', + 'policy_test_support', '../testing/gmock.gyp:gmock', '../testing/gtest.gyp:gtest', ], @@ -289,5 +436,141 @@ }, ], }], + ['OS=="win" and target_arch=="ia32" and configuration_policy==1', { + 'targets': [ + { + 'target_name': 'policy_win64', + 'type': 'static_library', + 'hard_dependency': 1, + 'sources': [ + '<(policy_constant_header_path)', + '<(policy_constant_source_path)', + ], + 'include_dirs': [ + '<(DEPTH)', + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '<(policy_out_dir)' + ], + }, + 'dependencies': [ + 'cloud_policy_code_generate', + ], + 'configurations': { + 'Common_Base': { + 'msvs_target_platform': 'x64', + }, + }, + }, + ], + }], + ['OS=="win" or OS=="mac" or OS=="linux"', { + 'targets': [ + { + # policy_templates has different inputs and outputs, so it can't use + # the rules of chrome_strings + 'target_name': 'policy_templates', + 'type': 'none', + 'variables': { + 'grit_grd_file': 'policy/resources/policy_templates.grd', + 'grit_info_cmd': [ + 'python', + '<(DEPTH)/tools/grit/grit_info.py', + '<@(grit_defines)', + ], + }, + 'includes': [ + '../build/grit_target.gypi', + ], + 'actions': [ + { + 'action_name': 'policy_templates', + 'includes': [ + '../build/grit_action.gypi', + ], + }, + ], + }, + ], + }], + ['OS=="mac"', { + 'targets': [ + { + # This is the bundle of the manifest file of Chrome. + # It contains the manifest file and its string tables. + 'target_name': 'chrome_manifest_bundle', + 'type': 'loadable_module', + 'mac_bundle': 1, + 'product_extension': 'manifest', + 'product_name': '<(mac_bundle_id)', + 'variables': { + # This avoids stripping debugging symbols from the target, which + # would fail because there is no binary code here. + 'mac_strip': 0, + }, + 'dependencies': [ + # Provides app-Manifest.plist and its string tables: + 'policy_templates', + ], + 'actions': [ + { + 'action_name': 'Copy MCX manifest file to manifest bundle', + 'inputs': [ + '<(grit_out_dir)/app/policy/mac/app-Manifest.plist', + ], + 'outputs': [ + '<(INTERMEDIATE_DIR)/app_manifest/<(mac_bundle_id).manifest', + ], + 'action': [ + # Use plutil -convert xml1 to put the plist into Apple's + # canonical format. As a side effect, this ensures that the + # plist is well-formed. + 'plutil', + '-convert', + 'xml1', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + 'message': + 'Copying the MCX policy manifest file to the manifest bundle', + 'process_outputs_as_mac_bundle_resources': 1, + }, + { + 'action_name': + 'Copy Localizable.strings files to manifest bundle', + 'variables': { + 'input_path': '<(grit_out_dir)/app/policy/mac/strings', + # Directory to collect the Localizable.strings files before + # they are copied to the bundle. + 'output_path': '<(INTERMEDIATE_DIR)/app_manifest', + # The reason we are not enumerating all the locales is that + # the translations would eat up 3.5MB disk space in the + # application bundle: + 'available_locales': 'en', + }, + 'inputs': [ + # TODO: remove this helper when we have loops in GYP + '>!@(<(apply_locales_cmd) -d \'<(input_path)/ZZLOCALE.lproj/Localizable.strings\' <(available_locales))', + ], + 'outputs': [ + # TODO: remove this helper when we have loops in GYP + '>!@(<(apply_locales_cmd) -d \'<(output_path)/ZZLOCALE.lproj/Localizable.strings\' <(available_locales))', + ], + 'action': [ + 'cp', '-R', + '<(input_path)/', + '<(output_path)', + ], + 'message': + 'Copy the Localizable.strings files to the manifest bundle', + 'process_outputs_as_mac_bundle_resources': 1, + 'msvs_cygwin_shell': 1, + }, + ], + }, + ], + }], ], } -- cgit v1.1