# Copyright 2013 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.

{
  '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',
    'app_restrictions_path':
        '<(policy_out_dir)/app_restrictions.xml',
    'risk_tag_header_path':
        '<(policy_out_dir)/risk_tag.h',
    # 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',
  },
  'conditions': [
    ['component=="static_library"', {
      'targets': [
        {
          # GN version: //components/policy:policy_component
          'target_name': 'policy_component',
          'type': 'none',
          'dependencies': [
            'policy_component_common',
            'policy_component_browser',
          ],
        },
        {
          # GN version: //components/policy:policy_component_common
          'target_name': 'policy_component_common',
          'type': 'static_library',
          'includes': [
            'policy/policy_common.gypi',
          ],
        },
        {
          # GN version: //components/policy:policy_component_browser
          'target_name': 'policy_component_browser',
          'type': 'static_library',
          'dependencies': [
            'policy_component_common',
          ],
          'includes': [
            'policy/policy_browser.gypi',
          ],
          'conditions': [
            ['OS=="android"', {
              'dependencies': ['policy_jni_headers']},
            ],
          ],
        },
      ],
    }, {  # component=="shared_library"
      'targets': [
        {
          # GN version: //components/policy:policy_component
          'target_name': 'policy_component',
          'type': 'shared_library',
          'includes': [
            'policy/policy_common.gypi',
            'policy/policy_browser.gypi',
          ],
        },
        {
          # GN version: //components/policy:policy_component_common
          'target_name': 'policy_component_common',
          'type': 'none',
          'dependencies': [
            'policy_component',
          ],
          'conditions': [
            ['OS=="android"', {
              'dependencies': ['policy_jni_headers']},
            ],
          ],
        },
        {
          # GN version: //components/policy:policy_component_browser
          'target_name': 'policy_component_browser',
          'type': 'none',
          'dependencies': [
            'policy_component',
          ],
        },
      ],
    }],
    ['configuration_policy==1', {
      'targets': [
        {
          # GN version: //components/policy:cloud_policy_code_generate
          'target_name': 'cloud_policy_code_generate',
          'type': 'none',
          'actions': [
            {
              'inputs': [
                'policy/resources/policy_templates.json',
                '<(DEPTH)/chrome/VERSION',
                '<(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)',
                '<(app_restrictions_path)',
                '<(risk_tag_header_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)',
                '--app-restrictions-definition=<(app_restrictions_path)',
                '--risk-tag-header=<(risk_tag_header_path)',
                '<(DEPTH)/chrome/VERSION',
                '<(OS)',
                '<(chromeos)',
                'policy/resources/policy_templates.json',
              ],
              'message': 'Generating policy source',
              'conditions': [
                ['OS!="android"', {
                  'outputs!': [
                    '<(app_restrictions_path)',
                  ],
                }],
              ],
            },
          ],
          'direct_dependent_settings': {
            'include_dirs': [
              '<(policy_out_dir)',
              '<(protoc_out_dir)',
            ],
          },
        },
        {
          # GN version: //components/policy:cloud_policy_proto_generated_compile
          'target_name': 'cloud_policy_proto_generated_compile',
          'type': '<(component)',
          'sources': [
            '<(cloud_policy_proto_path)',
          ],
          'variables': {
            'proto_in_dir': '<(policy_out_dir)/policy',
            'proto_out_dir': 'policy/proto',
            'cc_generator_options': 'dllexport_decl=POLICY_PROTO_EXPORT:',
            'cc_include': 'components/policy/policy_proto_export.h',
          },
          'dependencies': [
            'cloud_policy_code_generate',
          ],
          'includes': [
            '../build/protoc.gypi',
          ],
          'defines': [
            'POLICY_PROTO_COMPILATION',
          ],
          # 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.
          # GN version: //components/policy:chrome_settings_proto_generated_compile
          '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',
          ],
        },
        {
          # GN version: //components/policy
          '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)',
            '<(risk_tag_header_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',
          ],
        },
        {
          # GN version: //components/policy/proto
          'target_name': 'cloud_policy_proto',
          'type': '<(component)',
          'sources': [
            'policy/proto/chrome_extension_policy.proto',
            'policy/proto/device_management_backend.proto',
            'policy/proto/device_management_local.proto',
            'policy/proto/policy_signing_key.proto',
          ],
          'variables': {
            'proto_in_dir': 'policy/proto',
            'proto_out_dir': 'policy/proto',
            'cc_generator_options': 'dllexport_decl=POLICY_PROTO_EXPORT:',
            'cc_include': 'components/policy/policy_proto_export.h',
          },
          'includes': [
            '../build/protoc.gypi',
          ],
          'conditions': [
            ['OS=="android" or OS=="ios"', {
              'sources!': [
                'policy/proto/chrome_extension_policy.proto',
              ],
            }],
            ['chromeos==0', {
              'sources!': [
                'policy/proto/device_management_local.proto',
              ],
            }],
          ],
          'defines': [
            'POLICY_PROTO_COMPILATION',
          ],
        },
        {
          # GN version: //components/policy:test_support
          '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',
          ],
        },
        {
          # GN version: //components/policy:policy_component_test_support
          'target_name': 'policy_component_test_support',
          'type': 'static_library',
          # This must be undefined so that POLICY_EXPORT works correctly in
          # the static_library build.
          'defines!': [
            'POLICY_COMPONENT_IMPLEMENTATION',
          ],
          'dependencies': [
            'cloud_policy_proto',
            'policy_component',
            'policy_test_support',
            '../testing/gmock.gyp:gmock',
            '../testing/gtest.gyp:gtest',
          ],
          'include_dirs': [
            '..',
          ],
          'sources': [
            'policy/core/browser/configuration_policy_pref_store_test.cc',
            'policy/core/browser/configuration_policy_pref_store_test.h',
            'policy/core/common/cloud/mock_cloud_external_data_manager.cc',
            'policy/core/common/cloud/mock_cloud_external_data_manager.h',
            'policy/core/common/cloud/mock_cloud_policy_client.cc',
            'policy/core/common/cloud/mock_cloud_policy_client.h',
            'policy/core/common/cloud/mock_cloud_policy_store.cc',
            'policy/core/common/cloud/mock_cloud_policy_store.h',
            'policy/core/common/cloud/mock_device_management_service.cc',
            'policy/core/common/cloud/mock_device_management_service.h',
            'policy/core/common/cloud/mock_user_cloud_policy_store.cc',
            'policy/core/common/cloud/mock_user_cloud_policy_store.h',
            'policy/core/common/cloud/policy_builder.cc',
            'policy/core/common/cloud/policy_builder.h',
            'policy/core/common/configuration_policy_provider_test.cc',
            'policy/core/common/configuration_policy_provider_test.h',
            'policy/core/common/fake_async_policy_loader.cc',
            'policy/core/common/fake_async_policy_loader.h',
            'policy/core/common/mock_configuration_policy_provider.cc',
            'policy/core/common/mock_configuration_policy_provider.h',
            'policy/core/common/mock_policy_service.cc',
            'policy/core/common/mock_policy_service.h',
            'policy/core/common/policy_test_utils.cc',
            'policy/core/common/policy_test_utils.h',
            'policy/core/common/preferences_mock_mac.cc',
            'policy/core/common/preferences_mock_mac.h',
            'policy/core/common/remote_commands/test_remote_command_job.cc',
            'policy/core/common/remote_commands/test_remote_command_job.h',
            'policy/core/common/remote_commands/testing_remote_commands_server.cc',
            'policy/core/common/remote_commands/testing_remote_commands_server.h',
          ],
          'conditions': [
            ['OS=="android"', {
              'sources!': [
                'policy/core/common/fake_async_policy_loader.cc',
                'policy/core/common/fake_async_policy_loader.h',
              ],
            }],
            ['chromeos==1', {
              'sources!': [
                'policy/core/common/cloud/mock_user_cloud_policy_store.cc',
                'policy/core/common/cloud/mock_user_cloud_policy_store.h',
              ],
            }],
          ],
        },
      ],
    }],
    ['OS=="android"',
     {
      'targets' : [
        {
          'target_name' : 'policy_jni_headers',
          'type': 'none',
          'sources': [
            'policy/android/java/src/org/chromium/policy/CombinedPolicyProvider.java',
            'policy/android/java/src/org/chromium/policy/PolicyConverter.java',
           ],
          'variables': {
            'jni_gen_package': 'policy',
           },
          'includes': [ '../build/jni_generator.gypi' ],
         },
       ],
    }],
    ['OS=="android" and configuration_policy==1', {
      'targets': [
        {
          'target_name': 'app_restrictions_resources',
          'type': 'none',
          'variables': {
            'resources_zip': '<(PRODUCT_DIR)/res.java/<(_target_name).zip',
            'input_resources_dir':
            '<(SHARED_INTERMEDIATE_DIR)/chrome/app/policy/android',
            'create_zip_script': '../build/android/gyp/zip.py',
          },
          'copies': [
            {
              'destination': '<(input_resources_dir)/xml-v21/',
              'files': [
                '<(SHARED_INTERMEDIATE_DIR)/policy/app_restrictions.xml'
              ],
            },
          ],
          'actions': [
            {
              'action_name': 'create_resources_zip',
              'inputs': [
                '<(create_zip_script)',
                '<(input_resources_dir)/xml-v21/app_restrictions.xml',
                '<(input_resources_dir)/values-v21/restriction_values.xml',
              ],
              'outputs': [
                '<(resources_zip)'
              ],
              'action': [
                'python', '<(create_zip_script)',
                '--input-dir', '<(input_resources_dir)',
                '--output', '<(resources_zip)',
              ],
            }
          ],
          'all_dependent_settings': {
            'variables': {
              'additional_input_paths': ['<(resources_zip)'],
              'dependencies_res_zip_paths': ['<(resources_zip)'],
            },
          },
        },
        {
          # GN: //components/policy/android:policy_java
          'target_name': 'policy_java',
          'type': 'none',
          'dependencies': [
            '../base/base.gyp:base_java',
          ],
          'variables': {
            'java_in_dir': 'policy/android/java',
          },
          'includes': [ '../build/java.gypi' ],
        },
      ],
    }],
    ['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)',
            '<(risk_tag_header_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!="ios"', {
      '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,
            },
          ],
        },
      ],
    }],
  ],
}
