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

{
  'targets': [
    {
      # This is the part of the shim process compiled into Chrome. It runs only
      # in the shim process, after the shim finds and loads the Chrome
      # Framework bundle.
      'target_name': 'app_shim',
      'type': 'static_library',
      'dependencies': [
        # Since app_shim and browser depend on each other, we omit the
        # dependency on browser here.
        '../chrome/chrome_resources.gyp:chrome_strings',
        'app_mode_app_support',
      ],
      'sources': [
        'chrome_main_app_mode_mac.mm',
      ],
      'include_dirs': [
        '<(INTERMEDIATE_DIR)',
        '../..',
      ],
    },  # target app_shim
    {
      # This produces the template for app mode loader bundles. It's a template
      # in the sense that parts of it need to be "filled in" by Chrome before it
      # can be executed.
      'target_name': 'app_mode_app',
      'type': 'executable',
      'mac_bundle' : 1,
      'variables': {
        'enable_wexit_time_destructors': 1,
        'mac_real_dsym': 1,
      },
      'product_name': 'app_mode_loader',
      'dependencies': [
        'app_mode_app_support',
        'infoplist_strings_tool',
      ],
      'sources': [
        'app_mode_loader_mac.mm',
        'app_mode-Info.plist',
      ],
      'include_dirs': [
        '../..',
      ],
      'link_settings': {
        'libraries': [
          '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
        ],
      },
      'mac_bundle_resources!': [
        'app_shim/app_mode-Info.plist',
      ],
      'mac_bundle_resources/': [
        ['exclude', '.*'],
      ],
      'xcode_settings': {
        'INFOPLIST_FILE': 'app_shim/app_mode-Info.plist',
        'APP_MODE_APP_BUNDLE_ID': '<(mac_bundle_id).app.@APP_MODE_SHORTCUT_ID@',
      },
      'postbuilds' : [
        {
          # Modify the Info.plist as needed.  The script explains why this
          # is needed.  This is also done in the chrome and chrome_dll
          # targets.  In this case, --breakpad=0, --keystone=0, and --scm=0
          # are used because Breakpad, Keystone, and SCM keys are
          # never placed into the app mode loader.
          'postbuild_name': 'Tweak Info.plist',
          'action': ['<(tweak_info_plist_path)',
                     '--breakpad=0',
                     '--keystone=0',
                     '--scm=0'],
        },
      ],
    },  # target app_mode_app
  ],  # targets
}
