Chromium Code Reviews| Index: components/policy/BUILD.gn |
| diff --git a/components/policy/BUILD.gn b/components/policy/BUILD.gn |
| index fc76b3518926abfd969e3b523c04ebc7e135fb5b..bf7ceca0df574078cdf66dadacc47c33013ecf53 100644 |
| --- a/components/policy/BUILD.gn |
| +++ b/components/policy/BUILD.gn |
| @@ -9,6 +9,8 @@ import("//components/policy/resources/policy_templates.gni") |
| import("//third_party/protobuf/proto_library.gni") |
| import("//tools/grit/grit_rule.gni") |
| +assert(!is_ios, "Policy should not be referenced on iOS") |
| + |
| # To test policy generation for platforms different than your OS, override and |
| # enable these flags (but don't check that in!). |
| gen_policy_templates_common = true |
| @@ -44,351 +46,348 @@ config("component_implementation") { |
| defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] |
| } |
| -if (enable_configuration_policy) { |
| - # 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 = "$target_gen_dir/proto/cloud_policy.proto" |
| - |
| - # 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 = "$target_gen_dir/proto/chrome_settings.proto" |
| - |
| - constants_header_path = "$target_gen_dir/policy_constants.h" |
| - constants_source_path = "$target_gen_dir/policy_constants.cc" |
| - protobuf_decoder_path = "$target_gen_dir/cloud_policy_generated.cc" |
| - app_restrictions_path = "$target_gen_dir/app_restrictions.xml" |
| - risk_tag_header_path = "$target_gen_dir/risk_tag.h" |
| - |
| - action("cloud_policy_code_generate") { |
| - script = "tools/generate_policy_source.py" |
| - chrome_version_abspath = "//chrome/VERSION" |
| - chrome_version_path = rebase_path(chrome_version_abspath, root_build_dir) |
| - |
| - if (is_chromeos) { |
| - chromeos_flag = "1" |
| - } else { |
| - chromeos_flag = "0" |
| - } |
| +# 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 = "$target_gen_dir/proto/cloud_policy.proto" |
| + |
| +# 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 = "$target_gen_dir/proto/chrome_settings.proto" |
| + |
| +constants_header_path = "$target_gen_dir/policy_constants.h" |
| +constants_source_path = "$target_gen_dir/policy_constants.cc" |
| +protobuf_decoder_path = "$target_gen_dir/cloud_policy_generated.cc" |
| +app_restrictions_path = "$target_gen_dir/app_restrictions.xml" |
| +risk_tag_header_path = "$target_gen_dir/risk_tag.h" |
| + |
| +action("cloud_policy_code_generate") { |
| + script = "tools/generate_policy_source.py" |
| + chrome_version_abspath = "//chrome/VERSION" |
| + chrome_version_path = rebase_path(chrome_version_abspath, root_build_dir) |
| + |
| + if (is_chromeos) { |
| + chromeos_flag = "1" |
| + } else { |
| + chromeos_flag = "0" |
| + } |
| - inputs = [ |
| - chrome_version_abspath, |
| - "resources/policy_templates.json", |
| - ] |
| - outputs = [ |
| - constants_header_path, |
| - constants_source_path, |
| - protobuf_decoder_path, |
| - chrome_settings_proto_path, |
| - cloud_policy_proto_path, |
| - app_restrictions_path, |
| - risk_tag_header_path, |
| - ] |
| + inputs = [ |
| + chrome_version_abspath, |
| + "resources/policy_templates.json", |
| + ] |
| + outputs = [ |
| + constants_header_path, |
| + constants_source_path, |
| + protobuf_decoder_path, |
| + chrome_settings_proto_path, |
| + cloud_policy_proto_path, |
| + app_restrictions_path, |
| + risk_tag_header_path, |
| + ] |
| + |
| + if (target_os != "android") { |
| + outputs -= [ app_restrictions_path ] |
| + } |
| - if (target_os != "android") { |
| - outputs -= [ app_restrictions_path ] |
| - } |
| + args = [ |
| + "--policy-constants-header=" + |
| + rebase_path(constants_header_path, root_build_dir), |
| + "--policy-constants-source=" + |
| + rebase_path(constants_source_path, root_build_dir), |
| + "--chrome-settings-protobuf=" + |
| + rebase_path(chrome_settings_proto_path, root_build_dir), |
| + "--cloud-policy-protobuf=" + |
| + rebase_path(cloud_policy_proto_path, root_build_dir), |
| + "--cloud-policy-decoder=" + |
| + rebase_path(protobuf_decoder_path, root_build_dir), |
| + "--app-restrictions-definition=" + |
| + rebase_path(app_restrictions_path, root_build_dir), |
| + "--risk-tag-header=" + rebase_path(risk_tag_header_path, root_build_dir), |
| + chrome_version_path, |
| + target_os, |
| + chromeos_flag, |
| + rebase_path("resources/policy_templates.json", root_build_dir), |
| + ] |
| +} |
| - args = [ |
| - "--policy-constants-header=" + |
| - rebase_path(constants_header_path, root_build_dir), |
| - "--policy-constants-source=" + |
| - rebase_path(constants_source_path, root_build_dir), |
| - "--chrome-settings-protobuf=" + |
| - rebase_path(chrome_settings_proto_path, root_build_dir), |
| - "--cloud-policy-protobuf=" + |
| - rebase_path(cloud_policy_proto_path, root_build_dir), |
| - "--cloud-policy-decoder=" + |
| - rebase_path(protobuf_decoder_path, root_build_dir), |
| - "--app-restrictions-definition=" + |
| - rebase_path(app_restrictions_path, root_build_dir), |
| - "--risk-tag-header=" + rebase_path(risk_tag_header_path, root_build_dir), |
| - chrome_version_path, |
| - target_os, |
| - chromeos_flag, |
| - rebase_path("resources/policy_templates.json", root_build_dir), |
| +policy_templates_grd_file = "resources/policy_templates.grd" |
| + |
| +grit("grit_policy_templates") { |
| + source = policy_templates_grd_file |
| + use_qualified_include = true |
| + output_dir = "$root_gen_dir/chrome" |
| + outputs = [] |
| + defines = [] |
| + |
| + if (gen_policy_templates_common) { |
| + outputs += policy_templates_doc_outputs |
| + defines += [ "gen_policy_templates_common" ] |
| + } |
| + if (gen_policy_templates_android) { |
| + outputs += policy_templates_android_outputs |
| + defines += [ "gen_policy_templates_android" ] |
| + } |
| + if (gen_policy_templates_linux) { |
| + outputs += policy_templates_linux_outputs |
| + defines += [ "gen_policy_templates_linux" ] |
| + } |
| + if (gen_policy_templates_mac) { |
| + outputs += policy_templates_mac_outputs |
| + defines += [ |
| + "mac_bundle_id=$chrome_mac_bundle_id", |
| + "gen_policy_templates_mac", |
| ] |
| } |
| + if (gen_policy_templates_win) { |
| + outputs += policy_templates_windows_outputs |
| + defines += [ "gen_policy_templates_win" ] |
| + } |
| +} |
| - policy_templates_grd_file = "resources/policy_templates.grd" |
| - |
| - grit("grit_policy_templates") { |
| - source = policy_templates_grd_file |
| - use_qualified_include = true |
| - output_dir = "$root_gen_dir/chrome" |
| - outputs = [] |
| - defines = [] |
| +if (gen_policy_templates_win && is_chrome_branded) { |
| + # Creates google.admx and google.adml files that define a common 'Google' |
| + # category used for Chrome, Chrome OS and possibly external tools, see |
| + # crbug.com/665400. |
| + action("create_google_admx") { |
| + script = "tools/create_google_admx.py" |
| + inputs = [ |
| + policy_templates_grd_file, |
| + grit_info_script, |
| + ] + policy_templates_windows_outputs |
| + outputs = policy_templates_windows_google_outputs |
| + deps = [ |
| + ":grit_policy_templates", |
| + ] |
| - if (gen_policy_templates_common) { |
| - outputs += policy_templates_doc_outputs |
| - defines += [ "gen_policy_templates_common" ] |
| - } |
| - if (gen_policy_templates_android) { |
| - outputs += policy_templates_android_outputs |
| - defines += [ "gen_policy_templates_android" ] |
| - } |
| - if (gen_policy_templates_linux) { |
| - outputs += policy_templates_linux_outputs |
| - defines += [ "gen_policy_templates_linux" ] |
| - } |
| - if (gen_policy_templates_mac) { |
| - outputs += policy_templates_mac_outputs |
| - defines += [ |
| - "mac_bundle_id=$chrome_mac_bundle_id", |
| - "gen_policy_templates_mac", |
| - ] |
| - } |
| - if (gen_policy_templates_win) { |
| - outputs += policy_templates_windows_outputs |
| - defines += [ "gen_policy_templates_win" ] |
| - } |
| + # Don't pass in outputs directly, it would exceed a limit on Windows! |
| + args = [ |
| + "--basedir", |
| + rebase_path(policy_templates_base_dir, root_build_dir), |
| + "--grd_strip_path_prefix", |
| + "app/policy/", |
| + "--grd_input", |
| + rebase_path(policy_templates_grd_file, root_build_dir), |
| + "--grit_info", |
| + rebase_path(grit_info_script, root_build_dir), |
| + "-D", |
| + "gen_policy_templates_win", |
| + ] + grit_defines |
| } |
| +} |
| +group("policy_templates") { |
| + public_deps = [ |
| + ":grit_policy_templates", |
| + ] |
| if (gen_policy_templates_win && is_chrome_branded) { |
| - # Creates google.admx and google.adml files that define a common 'Google' |
| - # category used for Chrome, Chrome OS and possibly external tools, see |
| - # crbug.com/665400. |
| - action("create_google_admx") { |
| - script = "tools/create_google_admx.py" |
| - inputs = [ |
| - policy_templates_grd_file, |
| - grit_info_script, |
| - ] + policy_templates_windows_outputs |
| - outputs = policy_templates_windows_google_outputs |
| - deps = [ |
| - ":grit_policy_templates", |
| - ] |
| - |
| - # Don't pass in outputs directly, it would exceed a limit on Windows! |
| - args = [ |
| - "--basedir", |
| - rebase_path(policy_templates_base_dir, root_build_dir), |
| - "--grd_strip_path_prefix", |
| - "app/policy/", |
| - "--grd_input", |
| - rebase_path(policy_templates_grd_file, root_build_dir), |
| - "--grit_info", |
| - rebase_path(grit_info_script, root_build_dir), |
| - "-D", |
| - "gen_policy_templates_win", |
| - ] + grit_defines |
| - } |
| + public_deps += [ ":create_google_admx" ] |
| } |
| +} |
| - group("policy_templates") { |
| - public_deps = [ |
| - ":grit_policy_templates", |
| +# Run the proto compiler over the generated file and make it a component. |
| +component("cloud_policy_proto_generated_compile") { |
| + public_deps = [ |
| + ":cloud_policy_proto_generated_compile_proto", |
| + ] |
| +} |
| +proto_library("cloud_policy_proto_generated_compile_proto") { |
| + visibility = [ ":cloud_policy_proto_generated_compile" ] |
| + sources = [ |
| + cloud_policy_proto_path, |
| + ] |
| + |
| + proto_out_dir = "components/policy/proto" |
| + cc_generator_options = "dllexport_decl=POLICY_PROTO_EXPORT:" |
| + cc_include = "components/policy/proto/policy_proto_export.h" |
| + component_build_force_source_set = true |
| + defines = [ "POLICY_PROTO_COMPILATION" ] |
| + |
| + deps = [ |
| + ":cloud_policy_code_generate", |
| + ] |
| +} |
| + |
| +# This target builds the "full" protobuf, used for tests only. |
| +proto_library("chrome_settings_proto") { |
| + testonly = true |
| + sources = [ |
| + chrome_settings_proto_path, |
| + ] |
| + proto_out_dir = "components/policy/proto" |
| + |
| + deps = [ |
| + ":cloud_policy_code_generate", |
| + ":cloud_policy_proto_generated_compile", |
| + ] |
| +} |
| + |
| +static_library("generated") { |
| + sources = [ |
| + constants_header_path, |
| + constants_source_path, |
| + protobuf_decoder_path, |
| + risk_tag_header_path, |
| + ] |
| + |
| + defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] |
| + public_deps = [ |
| + ":cloud_policy_code_generate", |
| + ":cloud_policy_proto_generated_compile", |
| + "//base", |
| + "//third_party/protobuf:protobuf_lite", |
| + ] |
| +} |
| + |
| +if (gen_policy_templates_android && is_android) { |
| + import("//build/config/android/rules.gni") |
| + |
| + _generated_resources_dir = "$root_gen_dir/chrome/app/policy/android" |
| + |
| + copy("app_restrictions_resources_copy") { |
| + sources = [ |
| + app_restrictions_path, |
| + ] |
| + outputs = [ |
| + "$_generated_resources_dir/xml-v21/app_restrictions.xml", |
| + ] |
| + deps = [ |
| + ":cloud_policy_code_generate", |
| + ":policy_templates", |
| ] |
| - if (gen_policy_templates_win && is_chrome_branded) { |
| - public_deps += [ ":create_google_admx" ] |
| - } |
| } |
| - # Run the proto compiler over the generated file and make it a component. |
| - component("cloud_policy_proto_generated_compile") { |
| - public_deps = [ |
| - ":cloud_policy_proto_generated_compile_proto", |
| + android_resources("app_restrictions_resources") { |
| + resource_dirs = [] |
| + generated_resource_dirs = [ |
| + "$policy_templates_base_dir/android", |
| + _generated_resources_dir, |
| + ] |
| + generated_resource_files = |
| + policy_templates_android_outputs + |
| + [ "$_generated_resources_dir/xml-v21/app_restrictions.xml" ] |
| + deps = [ |
| + ":app_restrictions_resources_copy", |
| + ":grit_policy_templates", |
| ] |
| } |
| - proto_library("cloud_policy_proto_generated_compile_proto") { |
| - visibility = [ ":cloud_policy_proto_generated_compile" ] |
| +} else if (gen_policy_templates_mac && is_mac) { |
| + action("convert_mcx_plist") { |
| + script = "//build/config/mac/xcrun.py" |
| sources = [ |
| - cloud_policy_proto_path, |
| + "$policy_templates_base_dir/mac/app-Manifest.plist", |
| + ] |
| + inputs = [ |
| + script, |
| + ] |
| + outputs = [ |
| + "$target_gen_dir/$chrome_mac_bundle_id.manifest", |
| ] |
| - proto_out_dir = "components/policy/proto" |
| - cc_generator_options = "dllexport_decl=POLICY_PROTO_EXPORT:" |
| - cc_include = "components/policy/proto/policy_proto_export.h" |
| - component_build_force_source_set = true |
| - defines = [ "POLICY_PROTO_COMPILATION" ] |
| + if (use_system_xcode) { |
| + args = [] |
| + } else { |
| + args = [ |
| + "--developer_dir", |
| + hermetic_xcode_path, |
| + ] |
| + } |
| + args += [ |
| + "plutil", |
| + "-convert", |
| + "xml1", |
| + ] + rebase_path(sources, root_out_dir) + [ "-o" ] + |
| + rebase_path(outputs, root_out_dir) |
| deps = [ |
| - ":cloud_policy_code_generate", |
| + ":policy_templates", |
| ] |
| } |
| - # This target builds the "full" protobuf, used for tests only. |
| - proto_library("chrome_settings_proto") { |
| - testonly = true |
| - sources = [ |
| - chrome_settings_proto_path, |
| + bundle_data("manifest_bundle_data") { |
| + sources = get_target_outputs(":convert_mcx_plist") |
| + outputs = [ |
| + "{{bundle_resources_dir}}/{{source_file_part}}", |
| ] |
| - proto_out_dir = "components/policy/proto" |
| - |
| - deps = [ |
| - ":cloud_policy_code_generate", |
| - ":cloud_policy_proto_generated_compile", |
| + public_deps = [ |
| + ":convert_mcx_plist", |
| ] |
| } |
| - static_library("generated") { |
| + # The reason we are not enumerating all the locales is that |
| + # the translations would eat up 3.5MB disk space in the |
| + # application bundle. |
| + bundle_data("manifest_strings_bundle_data") { |
| sources = [ |
| - constants_header_path, |
| - constants_source_path, |
| - protobuf_decoder_path, |
| - risk_tag_header_path, |
| + "$policy_templates_base_dir/mac/strings/en.lproj/Localizable.strings", |
| + ] |
| + outputs = [ |
| + "{{bundle_resources_dir}}/en.lproj/{{source_file_part}}", |
| ] |
| - |
| - defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] |
| public_deps = [ |
| - ":cloud_policy_code_generate", |
| - ":cloud_policy_proto_generated_compile", |
| - "//base", |
| - "//third_party/protobuf:protobuf_lite", |
| + ":policy_templates", |
| ] |
| } |
| - if (gen_policy_templates_android && is_android) { |
| - import("//build/config/android/rules.gni") |
| - |
| - _generated_resources_dir = "$root_gen_dir/chrome/app/policy/android" |
| - |
| - copy("app_restrictions_resources_copy") { |
| - sources = [ |
| - app_restrictions_path, |
| - ] |
| - outputs = [ |
| - "$_generated_resources_dir/xml-v21/app_restrictions.xml", |
| - ] |
| - deps = [ |
| - ":cloud_policy_code_generate", |
| - ":policy_templates", |
| - ] |
| - } |
| - |
| - android_resources("app_restrictions_resources") { |
| - resource_dirs = [] |
| - generated_resource_dirs = [ |
| - "$policy_templates_base_dir/android", |
| - _generated_resources_dir, |
| - ] |
| - generated_resource_files = |
| - policy_templates_android_outputs + |
| - [ "$_generated_resources_dir/xml-v21/app_restrictions.xml" ] |
| - deps = [ |
| - ":app_restrictions_resources_copy", |
| - ":grit_policy_templates", |
| - ] |
| - } |
| - } else if (gen_policy_templates_mac && is_mac) { |
| - action("convert_mcx_plist") { |
| - script = "//build/config/mac/xcrun.py" |
| - sources = [ |
| - "$policy_templates_base_dir/mac/app-Manifest.plist", |
| - ] |
| - inputs = [ |
| - script, |
| - ] |
| - outputs = [ |
| - "$target_gen_dir/$chrome_mac_bundle_id.manifest", |
| - ] |
| - |
| - if (use_system_xcode) { |
| - args = [] |
| - } else { |
| - args = [ |
| - "--developer_dir", |
| - hermetic_xcode_path, |
| - ] |
| - } |
| - args += [ |
| - "plutil", |
| - "-convert", |
| - "xml1", |
| - ] + rebase_path(sources, root_out_dir) + [ "-o" ] + |
| - rebase_path(outputs, root_out_dir) |
| - |
| - deps = [ |
| - ":policy_templates", |
| - ] |
| - } |
| + create_bundle("chrome_manifest_bundle") { |
| + bundle_root_dir = "$root_out_dir/$chrome_mac_bundle_id.manifest/Contents" |
| + bundle_resources_dir = "$bundle_root_dir/Resources" |
| - bundle_data("manifest_bundle_data") { |
| - sources = get_target_outputs(":convert_mcx_plist") |
| - outputs = [ |
| - "{{bundle_resources_dir}}/{{source_file_part}}", |
| - ] |
| - public_deps = [ |
| - ":convert_mcx_plist", |
| - ] |
| - } |
| - |
| - # The reason we are not enumerating all the locales is that |
| - # the translations would eat up 3.5MB disk space in the |
| - # application bundle. |
| - bundle_data("manifest_strings_bundle_data") { |
| - sources = [ |
| - "$policy_templates_base_dir/mac/strings/en.lproj/Localizable.strings", |
| - ] |
| - outputs = [ |
| - "{{bundle_resources_dir}}/en.lproj/{{source_file_part}}", |
| - ] |
| - public_deps = [ |
| - ":policy_templates", |
| - ] |
| - } |
| - |
| - create_bundle("chrome_manifest_bundle") { |
| - bundle_root_dir = "$root_out_dir/$chrome_mac_bundle_id.manifest/Contents" |
| - bundle_resources_dir = "$bundle_root_dir/Resources" |
| - |
| - deps = [ |
| - ":manifest_bundle_data", |
| - ":manifest_strings_bundle_data", |
| - ] |
| - } |
| + deps = [ |
| + ":manifest_bundle_data", |
| + ":manifest_strings_bundle_data", |
| + ] |
| } |
|
Andrew T Wilson (Slow)
2016/12/09 22:58:08
Not looking that closely at this file - I'm presum
brettw
2016/12/09 23:16:20
Yup, thanks.
|
| +} |
| - if (gen_policy_templates_common && gen_policy_templates_win) { |
| - version_file = "VERSION" |
| - version_path = "$policy_templates_base_dir/$version_file" |
| +if (gen_policy_templates_common && gen_policy_templates_win) { |
| + version_file = "VERSION" |
| + version_path = "$policy_templates_base_dir/$version_file" |
| - copy("add_version") { |
| - sources = [ |
| - "//chrome/VERSION", |
| - ] |
| - outputs = [ |
| - version_path, |
| - ] |
| - } |
| + copy("add_version") { |
| + sources = [ |
| + "//chrome/VERSION", |
| + ] |
| + outputs = [ |
| + version_path, |
| + ] |
| + } |
| - action("pack_policy_templates") { |
| - output_zip_file = "$root_out_dir/policy_templates.zip" |
| - script = "tools/make_policy_zip.py" |
| - inputs = |
| - [ |
| - version_path, |
| - policy_templates_grd_file, |
| - grit_info_script, |
| - ] + policy_templates_windows_outputs + policy_templates_doc_outputs |
| - outputs = [ |
| - output_zip_file, |
| - ] |
| - args = [ |
| - "--output", |
| - rebase_path(output_zip_file, root_build_dir), |
| - "--basedir", |
| - rebase_path(policy_templates_base_dir, root_build_dir), |
| - "--grd_input", |
| - rebase_path(policy_templates_grd_file, root_build_dir), |
| - "--grd_strip_path_prefix", |
| - "app/policy", |
| - "--extra_input", |
| - version_file, |
| - "--grit_info", |
| - rebase_path(grit_info_script, root_build_dir), |
| - "-D", |
| - "gen_policy_templates_common", |
| - "-D", |
| - "gen_policy_templates_win", |
| - ] + grit_defines |
| - if (is_chrome_branded) { |
| - args += [ "--include_google_admx" ] |
| - } |
| - deps = [ |
| - ":add_version", |
| - ":policy_templates", |
| - ] |
| + action("pack_policy_templates") { |
| + output_zip_file = "$root_out_dir/policy_templates.zip" |
| + script = "tools/make_policy_zip.py" |
| + inputs = [ |
| + version_path, |
| + policy_templates_grd_file, |
| + grit_info_script, |
| + ] + policy_templates_windows_outputs + policy_templates_doc_outputs |
| + outputs = [ |
| + output_zip_file, |
| + ] |
| + args = [ |
| + "--output", |
| + rebase_path(output_zip_file, root_build_dir), |
| + "--basedir", |
| + rebase_path(policy_templates_base_dir, root_build_dir), |
| + "--grd_input", |
| + rebase_path(policy_templates_grd_file, root_build_dir), |
| + "--grd_strip_path_prefix", |
| + "app/policy", |
| + "--extra_input", |
| + version_file, |
| + "--grit_info", |
| + rebase_path(grit_info_script, root_build_dir), |
| + "-D", |
| + "gen_policy_templates_common", |
| + "-D", |
| + "gen_policy_templates_win", |
| + ] + grit_defines |
| + if (is_chrome_branded) { |
| + args += [ "--include_google_admx" ] |
| } |
| + deps = [ |
| + ":add_version", |
| + ":policy_templates", |
| + ] |
| } |
| } |