# Copyright (c) 2012 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.

# Xcode throws an error if an iOS target depends on a Mac OS X target. So
# any place a utility program needs to be build and run, an action is
# used to run ninja as script to work around this.
# Example:
# {
#   'target_name': 'foo',
#   'type': 'none',
#   'variables': {
#     # The name of a directory used for ninja. This cannot be shared with
#     # another mac build.
#     'ninja_output_dir': 'ninja-foo',
#     # The full path to the location in which the ninja executable should be
#     # placed. This cannot be shared with another mac build.
#    'ninja_product_dir':
#      '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)',
#     # The list of all the gyp files that contain the targets to run.
#     're_run_targets': [
#       'foo.gyp',
#     ],
#   },
#   'includes': ['path_to/mac_build.gypi'],
#   'actions': [
#     {
#       'action_name': 'compile foo',
#       'inputs': [],
#       'outputs': [],
#       'action': [
#         '<@(ninja_cmd)',
#         # All the targets to build.
#         'foo1',
#         'foo2',
#       ],
#     },
#   ],
# }
{
  'variables': {
    'variables': {
     'parent_generator%': '<(GENERATOR)',
    },
    'parent_generator%': '<(parent_generator)',
    # Common ninja command line flags.
    'ninja_cmd': [
      # Bounce through clean_env to clean up the environment so things
      # set by the iOS build don't pollute the Mac build.
      '<(DEPTH)/build/ios/clean_env.py',
      # ninja must be found in the PATH.
      'ADD_TO_PATH=<!(echo $PATH)',
      'ninja',
      '-C',
      '<(ninja_product_dir)',
    ],

    # Common syntax to rerun gyp to generate the Mac projects.
    're_run_gyp': [
      'build/gyp_chromium',
      '--depth=.',
      # Don't use anything set for the iOS side of things.
      '--ignore-environment',
      # Generate for ninja
      '--format=ninja',
      # Generate files into xcodebuild/ninja
      '-Goutput_dir=xcodebuild/<(ninja_output_dir)',
      # nacl isn't in the iOS checkout, make sure it's turned off
      '-Ddisable_nacl=1',
      # Add a variable to handle specific cases for mac_build.
      '-Dios_mac_build=1',
      # Pass through the Mac SDK version.
      '-Dmac_sdk=<(mac_sdk)',
      '-Dparent_generator=<(parent_generator)'
    ],

    # Rerun gyp for each of the projects needed. This is what actually
    # generates the projects on disk.
    're_run_gyp_execution':
      '<!(cd <(DEPTH) && <@(re_run_gyp) <@(re_run_targets))',
  },
  # Since these are used to generate things needed by other targets, make
  # them hard dependencies so they are always built first.
  'hard_dependency': 1,
}