• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# Xcode throws an error if an iOS target depends on a Mac OS X target. So
6# any place a utility program needs to be build and run, an action is
7# used to run ninja as script to work around this.
8# Example:
9# {
10#   'target_name': 'foo',
11#   'type': 'none',
12#   'variables': {
13#     # The name of a directory used for ninja. This cannot be shared with
14#     # another mac build.
15#     'ninja_output_dir': 'ninja-foo',
16#     # The full path to the location in which the ninja executable should be
17#     # placed. This cannot be shared with another mac build.
18#    'ninja_product_dir':
19#      '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)',
20#     # The list of all the gyp files that contain the targets to run.
21#     're_run_targets': [
22#       'foo.gyp',
23#     ],
24#   },
25#   'includes': ['path_to/mac_build.gypi'],
26#   'actions': [
27#     {
28#       'action_name': 'compile foo',
29#       'inputs': [],
30#       'outputs': [],
31#       'action': [
32#         '<@(ninja_cmd)',
33#         # All the targets to build.
34#         'foo1',
35#         'foo2',
36#       ],
37#     },
38#   ],
39# }
40{
41  'variables': {
42    'variables': {
43     'parent_generator%': '<(GENERATOR)',
44    },
45    'parent_generator%': '<(parent_generator)',
46    # Common ninja command line flags.
47    'ninja_cmd': [
48      # Bounce through clean_env to clean up the environment so things
49      # set by the iOS build don't pollute the Mac build.
50      '<(DEPTH)/build/ios/clean_env.py',
51      # ninja must be found in the PATH.
52      'ADD_TO_PATH=<!(echo $PATH)',
53      'ninja',
54      '-C',
55      '<(ninja_product_dir)',
56    ],
57
58    # Common syntax to rerun gyp to generate the Mac projects.
59    're_run_gyp': [
60      'build/gyp_chromium',
61      '--depth=.',
62      # Don't use anything set for the iOS side of things.
63      '--ignore-environment',
64      # Generate for ninja
65      '--format=ninja',
66      # Generate files into xcodebuild/ninja
67      '-Goutput_dir=xcodebuild/<(ninja_output_dir)',
68      # nacl isn't in the iOS checkout, make sure it's turned off
69      '-Ddisable_nacl=1',
70      # Add a variable to handle specific cases for mac_build.
71      '-Dios_mac_build=1',
72      # Pass through the Mac SDK version.
73      '-Dmac_sdk=<(mac_sdk)',
74      '-Dparent_generator=<(parent_generator)'
75    ],
76
77    # Rerun gyp for each of the projects needed. This is what actually
78    # generates the projects on disk.
79    're_run_gyp_execution':
80      '<!(cd <(DEPTH) && <@(re_run_gyp) <@(re_run_targets))',
81  },
82  # Since these are used to generate things needed by other targets, make
83  # them hard dependencies so they are always built first.
84  'hard_dependency': 1,
85}
86