Home | History | Annotate | Download | only in chrome
      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   'variables': {
      6     'chromium_code': 1,
      7 
      8     # Define the common dependencies that contain all the actual
      9     # Chromium functionality.  This list gets pulled in below by
     10     # the link of the actual chrome (or chromium) executable on
     11     # Linux or Mac, and into chrome.dll on Windows.
     12     # NOTE: Most new includes should go in the OS!="ios" condition below.
     13     'chromium_browser_dependencies': [
     14       'common',
     15       'browser',
     16       '../sync/sync.gyp:sync',
     17     ],
     18     'chromium_child_dependencies': [
     19       'common',
     20       '../sync/sync.gyp:sync',
     21     ],
     22     'allocator_target': '../base/allocator/allocator.gyp:allocator',
     23     'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/chrome',
     24     'protoc_out_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out',
     25     'conditions': [
     26       ['OS!="ios"', {
     27         'chromium_browser_dependencies': [
     28           '../ppapi/ppapi_internal.gyp:ppapi_host',
     29         ],
     30         'chromium_child_dependencies': [
     31           'debugger',
     32           'plugin',
     33           'renderer',
     34           'utility',
     35           '../content/content.gyp:content_gpu',
     36           '../content/content.gyp:content_ppapi_plugin',
     37           '../content/content.gyp:content_worker',
     38           '../third_party/WebKit/public/blink_devtools.gyp:blink_devtools_frontend_resources',
     39         ],
     40       }],
     41       ['enable_printing!=0', {
     42         'chromium_browser_dependencies': [
     43           '../printing/printing.gyp:printing',
     44         ],
     45       }],
     46       ['OS=="win"', {
     47         'platform_locale_settings_grd':
     48             'app/resources/locale_settings_win.grd',
     49       },],
     50       ['enable_printing==1', {
     51         'chromium_browser_dependencies': [
     52           'service',
     53         ],
     54       }],
     55       ['OS=="linux"', {
     56         'conditions': [
     57           ['chromeos==1', {
     58             'conditions': [
     59               ['branding=="Chrome"', {
     60                 'platform_locale_settings_grd':
     61                     'app/resources/locale_settings_google_chromeos.grd',
     62               }, {  # branding!=Chrome
     63                 'platform_locale_settings_grd':
     64                     'app/resources/locale_settings_chromiumos.grd',
     65               }],
     66             ]
     67           }, {  # chromeos==0
     68             'platform_locale_settings_grd':
     69                 'app/resources/locale_settings_linux.grd',
     70           }],
     71         ],
     72       },],
     73       ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "linux"', {
     74         'platform_locale_settings_grd':
     75             'app/resources/locale_settings_linux.grd',
     76       },],
     77       ['OS=="mac"', {
     78         'tweak_info_plist_path': '../build/mac/tweak_info_plist.py',
     79         'platform_locale_settings_grd':
     80             'app/resources/locale_settings_mac.grd',
     81       }],  # OS=="mac"
     82     ],  # conditions
     83   },  # variables
     84   'includes': [
     85     # Place some targets in gypi files to reduce contention on this file.
     86     # By using an include, we keep everything in a single xcodeproj file.
     87     # Note on Win64 targets: targets that end with win64 be used
     88     # on 64-bit Windows only. Targets that end with nacl_win64 should be used
     89     # by Native Client only.
     90     # NOTE: Most new includes should go in the OS!="ios" condition below.
     91     '../build/chrome_settings.gypi',
     92     '../build/util/version.gypi',
     93     '../build/win_precompile.gypi',
     94     'chrome_browser.gypi',
     95     'chrome_browser_ui.gypi',
     96     'chrome_common.gypi',
     97     'chrome_installer_util.gypi',
     98     '../components/nacl/nacl_defines.gypi',
     99   ],
    100   'conditions': [
    101     ['OS!="ios"', {
    102       'includes': [
    103         '../apps/apps.gypi',
    104         'chrome_browser_extensions.gypi',
    105         'chrome_debugger.gypi',
    106         'chrome_dll.gypi',
    107         'chrome_exe.gypi',
    108         'chrome_installer.gypi',
    109         'chrome_plugin.gypi',
    110         'chrome_renderer.gypi',
    111         'chrome_tests.gypi',
    112         'chrome_tests_unit.gypi',
    113         'chrome_utility.gypi',
    114         'policy_templates.gypi',
    115       ],
    116       'targets': [
    117         {
    118           'target_name': 'default_extensions',
    119           'type': 'none',
    120           'conditions': [
    121             ['OS=="win"', {
    122               'copies': [
    123                 {
    124                   'destination': '<(PRODUCT_DIR)/extensions',
    125                   'files': [
    126                     'browser/extensions/default_extensions/external_extensions.json'
    127                   ]
    128                 }
    129               ],
    130             }]
    131           ],
    132         },
    133       ],
    134     }],  # OS!="ios"
    135     ['OS=="mac"', {
    136       'includes': [
    137         '../apps/app_shim/app_shim.gypi',
    138       ],
    139       'targets': [
    140         {
    141           'target_name': 'helper_app',
    142           'type': 'executable',
    143           'variables': { 'enable_wexit_time_destructors': 1, },
    144           'product_name': '<(mac_product_name) Helper',
    145           'mac_bundle': 1,
    146           'dependencies': [
    147             'chrome_dll',
    148             'infoplist_strings_tool',
    149           ],
    150           'sources': [
    151             # chrome_exe_main_mac.cc's main() is the entry point for
    152             # the "chrome" (browser app) target.  All it does is jump
    153             # to chrome_dll's ChromeMain.  This is appropriate for
    154             # helper processes too, because the logic to discriminate
    155             # between process types at run time is actually directed
    156             # by the --type command line argument processed by
    157             # ChromeMain.  Sharing chrome_exe_main_mac.cc with the
    158             # browser app will suffice for now.
    159             'app/chrome_exe_main_mac.cc',
    160             'app/helper-Info.plist',
    161           ],
    162           # TODO(mark): Come up with a fancier way to do this.  It should only
    163           # be necessary to list helper-Info.plist once, not the three times it
    164           # is listed here.
    165           'mac_bundle_resources!': [
    166             'app/helper-Info.plist',
    167           ],
    168           # TODO(mark): For now, don't put any resources into this app.  Its
    169           # resources directory will be a symbolic link to the browser app's
    170           # resources directory.
    171           'mac_bundle_resources/': [
    172             ['exclude', '.*'],
    173           ],
    174           'xcode_settings': {
    175             'CHROMIUM_BUNDLE_ID': '<(mac_bundle_id)',
    176             'CHROMIUM_SHORT_NAME': '<(branding)',
    177             'CHROMIUM_STRIP_SAVE_FILE': 'app/app.saves',
    178             'INFOPLIST_FILE': 'app/helper-Info.plist',
    179           },
    180           'postbuilds': [
    181             {
    182               # The helper doesn't have real localizations, it just has
    183               # empty .lproj directories, which is enough to convince Cocoa
    184               # that anything running out of the helper .app supports those
    185               # languages.
    186               'postbuild_name': 'Make Empty Localizations',
    187               'variables': {
    188                 'locale_dirs': [
    189                   '>!@(<(apply_locales_cmd) -d ZZLOCALE.lproj <(locales))',
    190                 ],
    191               },
    192               'action': [
    193                 'tools/build/mac/make_locale_dirs.sh',
    194                 '<@(locale_dirs)',
    195               ],
    196             },
    197             {
    198               # The framework (chrome_dll) defines its load-time path
    199               # (DYLIB_INSTALL_NAME_BASE) relative to the main executable
    200               # (chrome).  A different relative path needs to be used in
    201               # helper_app.
    202               'postbuild_name': 'Fix Framework Link',
    203               'action': [
    204                 'install_name_tool',
    205                 '-change',
    206                 '@executable_path/../Versions/<(version_full)/<(mac_product_name) Framework.framework/<(mac_product_name) Framework',
    207                 '@executable_path/../../../<(mac_product_name) Framework.framework/<(mac_product_name) Framework',
    208                 '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}'
    209               ],
    210             },
    211             {
    212               # Modify the Info.plist as needed.  The script explains why this
    213               # is needed.  This is also done in the chrome and chrome_dll
    214               # targets.  In this case, --breakpad=0, --keystone=0, and --scm=0
    215               # are used because Breakpad, Keystone, and SCM keys are
    216               # never placed into the helper.
    217               'postbuild_name': 'Tweak Info.plist',
    218               'action': ['<(tweak_info_plist_path)',
    219                          '--breakpad=0',
    220                          '--keystone=0',
    221                          '--scm=0'],
    222             },
    223             {
    224               # Make sure there isn't any Objective-C in the helper app's
    225               # executable.
    226               'postbuild_name': 'Verify No Objective-C',
    227               'action': [
    228                 '../build/mac/verify_no_objc.sh',
    229               ],
    230             },
    231           ],
    232           'conditions': [
    233             ['mac_breakpad==1', {
    234               'variables': {
    235                 # A real .dSYM is needed for dump_syms to operate on.
    236                 'mac_real_dsym': 1,
    237               },
    238               'xcode_settings': {
    239                 # With mac_real_dsym set, strip_from_xcode won't be used.
    240                 # Specify CHROMIUM_STRIP_SAVE_FILE directly to Xcode.
    241                 'STRIPFLAGS': '-s $(CHROMIUM_STRIP_SAVE_FILE)',
    242               },
    243             }],
    244             ['asan==1', {
    245               'xcode_settings': {
    246                 # Override the outer definition of CHROMIUM_STRIP_SAVE_FILE.
    247                 'CHROMIUM_STRIP_SAVE_FILE': 'app/app_asan.saves',
    248               },
    249             }],
    250             ['component=="shared_library"', {
    251               'xcode_settings': {
    252                 'LD_RUNPATH_SEARCH_PATHS': [
    253                   # Get back from Chromium.app/Contents/Versions/V/
    254                   #                                    Helper.app/Contents/MacOS
    255                   '@loader_path/../../../../../../..',
    256                 ],
    257               },
    258             }],
    259           ],
    260         },  # target helper_app
    261         {
    262           # A library containing the actual code for the app mode app, shared
    263           # by unit tests.
    264           'target_name': 'app_mode_app_support',
    265           'type': 'static_library',
    266           'variables': { 'enable_wexit_time_destructors': 1, },
    267           'product_name': 'app_mode_app_support',
    268           'dependencies': [
    269             '../base/base.gyp:base',
    270             'common_constants.gyp:common_constants',
    271           ],
    272           'sources': [
    273             'common/mac/app_mode_chrome_locator.h',
    274             'common/mac/app_mode_chrome_locator.mm',
    275             'common/mac/app_mode_common.h',
    276             'common/mac/app_mode_common.mm',
    277           ],
    278           'include_dirs': [
    279             '..',
    280           ],
    281         },  # target app_mode_app_support
    282         {
    283           # This produces the template for app mode loader bundles. It's a
    284           # template in the sense that parts of it need to be "filled in" by
    285           # Chrome before it can be executed.
    286           'target_name': 'app_mode_app',
    287           'type': 'executable',
    288           'mac_bundle' : 1,
    289           'variables': {
    290             'enable_wexit_time_destructors': 1,
    291             'mac_real_dsym': 1,
    292           },
    293           'product_name': 'app_mode_loader',
    294           'dependencies': [
    295             'app_mode_app_support',
    296             'infoplist_strings_tool',
    297           ],
    298           'sources': [
    299             'app/app_mode_loader_mac.mm',
    300             'app/app_mode-Info.plist',
    301           ],
    302           'include_dirs': [
    303             '..',
    304           ],
    305           'link_settings': {
    306             'libraries': [
    307               '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
    308               '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
    309             ],
    310           },
    311           'mac_bundle_resources!': [
    312             'app/app_mode-Info.plist',
    313           ],
    314           'mac_bundle_resources/': [
    315             ['exclude', '.*'],
    316           ],
    317           'xcode_settings': {
    318             'INFOPLIST_FILE': 'app/app_mode-Info.plist',
    319             'APP_MODE_APP_BUNDLE_ID': '<(mac_bundle_id).app.@APP_MODE_SHORTCUT_ID@',
    320           },
    321           'postbuilds' : [
    322             {
    323               # Modify the Info.plist as needed.  The script explains why this
    324               # is needed.  This is also done in the chrome and chrome_dll
    325               # targets.  In this case, --breakpad=0, --keystone=0, and --scm=0
    326               # are used because Breakpad, Keystone, and SCM keys are
    327               # never placed into the app mode loader.
    328               'postbuild_name': 'Tweak Info.plist',
    329               'action': ['<(tweak_info_plist_path)',
    330                          '--breakpad=0',
    331                          '--keystone=0',
    332                          '--scm=0'],
    333             },
    334           ],
    335         },  # target app_mode_app
    336         {
    337           # Convenience target to build a disk image.
    338           'target_name': 'build_app_dmg',
    339           # Don't place this in the 'all' list; most won't want it.
    340           # In GYP, booleans are 0/1, not True/False.
    341           'suppress_wildcard': 1,
    342           'type': 'none',
    343           'dependencies': [
    344             'chrome',
    345           ],
    346           'variables': {
    347             'build_app_dmg_script_path': 'tools/build/mac/build_app_dmg',
    348             'pkg_dmg_script_path': 'installer/mac/pkg-dmg',
    349 
    350             'conditions': [
    351               # This duplicates the output path from build_app_dmg.
    352               ['branding=="Chrome"', {
    353                 'dmg_name': 'GoogleChrome.dmg',
    354               }, { # else: branding!="Chrome"
    355                 'dmg_name': 'Chromium.dmg',
    356               }],
    357             ],
    358           },
    359           'actions': [
    360             {
    361               'inputs': [
    362                 '<(build_app_dmg_script_path)',
    363                 '<(pkg_dmg_script_path)',
    364                 '<(PRODUCT_DIR)/<(mac_product_name).app',
    365               ],
    366               'outputs': [
    367                 '<(PRODUCT_DIR)/<(dmg_name)',
    368               ],
    369               'action_name': 'build_app_dmg',
    370               'action': ['<(build_app_dmg_script_path)', '<@(branding)'],
    371             },
    372           ],  # 'actions'
    373         },
    374         {
    375           # Dummy target to allow chrome to require plugin_carbon_interpose to
    376           # build without actually linking to the resulting library.
    377           'target_name': 'interpose_dependency_shim',
    378           'type': 'executable',
    379           'variables': { 'enable_wexit_time_destructors': 1, },
    380           'dependencies': [
    381             'plugin_carbon_interpose',
    382           ],
    383           # In release, we end up with a strip step that is unhappy if there is
    384           # no binary. Rather than check in a new file for this temporary hack,
    385           # just generate a source file on the fly.
    386           'actions': [
    387             {
    388               'action_name': 'generate_stub_main',
    389               'process_outputs_as_sources': 1,
    390               'inputs': [],
    391               'outputs': [ '<(INTERMEDIATE_DIR)/dummy_main.c' ],
    392               'action': [
    393                 'bash', '-c',
    394                 'echo "int main() { return 0; }" > <(INTERMEDIATE_DIR)/dummy_main.c'
    395               ],
    396             },
    397           ],
    398         },
    399         {
    400           # dylib for interposing Carbon calls in the plugin process.
    401           'target_name': 'plugin_carbon_interpose',
    402           'type': 'shared_library',
    403           'variables': { 'enable_wexit_time_destructors': 1, },
    404           # This target must not depend on static libraries, else the code in
    405           # those libraries would appear twice in plugin processes: Once from
    406           # Chromium Framework, and once from this dylib.
    407           'dependencies': [
    408             'chrome_dll',
    409           ],
    410           'conditions': [
    411             ['component=="shared_library"', {
    412               'dependencies': [
    413                 '../content/content.gyp:content_plugin',
    414               ],
    415               'xcode_settings': {
    416                 'LD_RUNPATH_SEARCH_PATHS': [
    417                   # Get back from Chromium.app/Contents/Versions/V
    418                   '@loader_path/../../../..',
    419                 ],
    420               },
    421             }],
    422           ],
    423           'sources': [
    424             '../content/plugin/plugin_carbon_interpose_mac.cc',
    425           ],
    426           'include_dirs': [
    427             '..',
    428           ],
    429           'link_settings': {
    430             'libraries': [
    431               '$(SDKROOT)/System/Library/Frameworks/Carbon.framework',
    432             ],
    433           },
    434           'xcode_settings': {
    435             'DYLIB_COMPATIBILITY_VERSION': '<(version_mac_dylib)',
    436             'DYLIB_CURRENT_VERSION': '<(version_mac_dylib)',
    437             'DYLIB_INSTALL_NAME_BASE': '@executable_path/../../..',
    438           },
    439           'postbuilds': [
    440             {
    441               # The framework (chrome_dll) defines its load-time path
    442               # (DYLIB_INSTALL_NAME_BASE) relative to the main executable
    443               # (chrome).  A different relative path needs to be used in
    444               # plugin_carbon_interpose, which runs in the helper_app.
    445               'postbuild_name': 'Fix Framework Link',
    446               'action': [
    447                 'install_name_tool',
    448                 '-change',
    449                 '@executable_path/../Versions/<(version_full)/<(mac_product_name) Framework.framework/<(mac_product_name) Framework',
    450                 '@executable_path/../../../<(mac_product_name) Framework.framework/<(mac_product_name) Framework',
    451                 '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}'
    452               ],
    453             },
    454           ],
    455         },
    456         {
    457           'target_name': 'infoplist_strings_tool',
    458           'type': 'executable',
    459           'variables': { 'enable_wexit_time_destructors': 1, },
    460           'dependencies': [
    461             'chrome_resources.gyp:chrome_strings',
    462             '../base/base.gyp:base',
    463             '../ui/base/ui_base.gyp:ui_base',
    464             '../ui/gfx/gfx.gyp:gfx',
    465             '../ui/gfx/gfx.gyp:gfx_geometry',
    466           ],
    467           'include_dirs': [
    468             '<(grit_out_dir)',
    469           ],
    470           'sources': [
    471             'tools/mac_helpers/infoplist_strings_util.mm',
    472           ],
    473         },
    474       ],  # targets
    475     }],  # OS=="mac"
    476     ['OS=="linux"',
    477       { 'targets': [
    478         {
    479           'target_name': 'linux_symbols',
    480           'type': 'none',
    481           'conditions': [
    482             ['linux_dump_symbols==1', {
    483               'actions': [
    484                 {
    485                   'action_name': 'dump_symbols',
    486                   'inputs': [
    487                     '<(DEPTH)/build/linux/dump_app_syms',
    488                     '<(PRODUCT_DIR)/dump_syms',
    489                     '<(PRODUCT_DIR)/chrome',
    490                   ],
    491                   'outputs': [
    492                     '<(PRODUCT_DIR)/chrome.breakpad.<(target_arch)',
    493                   ],
    494                   'action': ['<(DEPTH)/build/linux/dump_app_syms',
    495                              '<(PRODUCT_DIR)/dump_syms',
    496                              '<(linux_strip_binary)',
    497                              '<(PRODUCT_DIR)/chrome',
    498                              '<@(_outputs)'],
    499                   'message': 'Dumping breakpad symbols to <(_outputs)',
    500                   'process_outputs_as_sources': 1,
    501                 },
    502               ],
    503               'dependencies': [
    504                 'chrome',
    505                 '../breakpad/breakpad.gyp:dump_syms',
    506               ],
    507             }],
    508             ['linux_strip_reliability_tests==1', {
    509               'actions': [
    510                 {
    511                   'action_name': 'strip_reliability_tests',
    512                   'outputs': [
    513                     '<(PRODUCT_DIR)/strip_reliability_tests.stamp',
    514                   ],
    515                   'action': ['strip',
    516                              '-g',
    517                              '<@(_inputs)'],
    518                   'message': 'Stripping reliability tests',
    519                 },
    520               ],
    521             }],
    522           ],
    523         },
    524       ],
    525     }],  # OS=="linux"
    526     ['OS=="win"',
    527       { 'targets': [
    528         {
    529           # For historical reasons, chrome/chrome.sln has been the entry point
    530           # for new Chrome developers. To assist development, include several
    531           # core unittests that are otherwise only accessible side-by-side with
    532           # chrome via all/all.sln.
    533           'target_name': 'test_targets',
    534           'type': 'none',
    535           'dependencies': [
    536             '../base/base.gyp:base_unittests',
    537             '../content/content_shell_and_tests.gyp:content_browsertests',
    538             '../content/content_shell_and_tests.gyp:content_shell',
    539             '../content/content_shell_and_tests.gyp:content_unittests',
    540             '../net/net.gyp:net_unittests',
    541             '../ui/ui_unittests.gyp:ui_unittests',
    542           ],
    543         },
    544         {
    545           'target_name': 'chrome_version_resources',
    546           'type': 'none',
    547           'conditions': [
    548             ['branding == "Chrome"', {
    549               'variables': {
    550                  'branding_path': 'app/theme/google_chrome/BRANDING',
    551               },
    552             }, { # else branding!="Chrome"
    553               'variables': {
    554                  'branding_path': 'app/theme/chromium/BRANDING',
    555               },
    556             }],
    557           ],
    558           'variables': {
    559             'output_dir': 'chrome_version',
    560             'template_input_path': 'app/chrome_version.rc.version',
    561           },
    562           'direct_dependent_settings': {
    563             'include_dirs': [
    564               '<(SHARED_INTERMEDIATE_DIR)/<(output_dir)',
    565             ],
    566           },
    567           'sources': [
    568             'app/chrome_exe.ver',
    569             'app/chrome_dll.ver',
    570             'app/nacl64_exe.ver',
    571             'app/other.ver',
    572           ],
    573           'includes': [
    574             'version_resource_rules.gypi',
    575           ],
    576         },
    577         {
    578           'target_name': 'chrome_version_header',
    579           'type': 'none',
    580           'hard_dependency': 1,
    581           'actions': [
    582             {
    583               'action_name': 'version_header',
    584               'variables': {
    585                 'lastchange_path':
    586                   '<(DEPTH)/build/util/LASTCHANGE',
    587               },
    588               'conditions': [
    589                 ['branding == "Chrome"', {
    590                   'variables': {
    591                      'branding_path': 'app/theme/google_chrome/BRANDING',
    592                   },
    593                 }, { # else branding!="Chrome"
    594                   'variables': {
    595                      'branding_path': 'app/theme/chromium/BRANDING',
    596                   },
    597                 }],
    598               ],
    599               'inputs': [
    600                 '<(version_path)',
    601                 '<(branding_path)',
    602                 '<(lastchange_path)',
    603                 'version.h.in',
    604               ],
    605               'outputs': [
    606                 '<(SHARED_INTERMEDIATE_DIR)/version.h',
    607               ],
    608               'action': [
    609                 'python',
    610                 '<(version_py_path)',
    611                 '-f', '<(version_path)',
    612                 '-f', '<(branding_path)',
    613                 '-f', '<(lastchange_path)',
    614                 'version.h.in',
    615                 '<@(_outputs)',
    616               ],
    617               'message': 'Generating version header file: <@(_outputs)',
    618             },
    619           ],
    620         },
    621         {
    622           'target_name': 'crash_service',
    623           'type': 'executable',
    624           'dependencies': [
    625             'installer_util',
    626             '../base/base.gyp:base',
    627             '../chrome/common_constants.gyp:common_constants',
    628             '../components/components.gyp:breakpad_crash_service',
    629           ],
    630           'include_dirs': [
    631             '..',
    632           ],
    633           'sources': [
    634             'tools/crash_service/main.cc',
    635           ],
    636           'msvs_settings': {
    637             'VCLinkerTool': {
    638               'SubSystem': '2',         # Set /SUBSYSTEM:WINDOWS
    639             },
    640           },
    641         },
    642         {
    643           'target_name': 'sb_sigutil',
    644           'type': 'executable',
    645           'dependencies': [
    646             '../base/base.gyp:base',
    647             'safe_browsing_proto',
    648           ],
    649           'sources': [
    650             'browser/safe_browsing/binary_feature_extractor.h',
    651             'browser/safe_browsing/binary_feature_extractor_win.cc',
    652             'browser/safe_browsing/pe_image_reader_win.cc',
    653             'browser/safe_browsing/pe_image_reader_win.h',
    654             'tools/safe_browsing/sb_sigutil.cc',
    655           ],
    656         },
    657       ],  # 'targets'
    658       'includes': [
    659         'chrome_process_finder.gypi',
    660         'metro_utils.gypi',
    661       ],
    662     }],  # OS=="win"
    663     ['OS=="win" and target_arch=="ia32"',
    664       { 'targets': [
    665         {
    666           'target_name': 'chrome_user32_delay_imports',
    667           'type': 'none',
    668           'variables': {
    669             'lib_dir': '<(INTERMEDIATE_DIR)',
    670           },
    671           'sources': [
    672               'chrome.user32.delay.imports'
    673           ],
    674           'includes': [
    675               '../build/win/importlibs/create_import_lib.gypi',
    676           ],
    677           'direct_dependent_settings': {
    678             'msvs_settings': {
    679               'VCLinkerTool': {
    680                 'AdditionalLibraryDirectories': ['<(lib_dir)', ],
    681                 'AdditionalDependencies': ['chrome.user32.delay.lib', ],
    682               },
    683             },
    684           },
    685         },
    686         {
    687           'target_name': 'crash_service_win64',
    688           'type': 'executable',
    689           'product_name': 'crash_service64',
    690           'dependencies': [
    691             'installer_util_nacl_win64',
    692             '../base/base.gyp:base_static_win64',
    693             '../chrome/common_constants.gyp:common_constants_win64',
    694             '../components/components.gyp:breakpad_crash_service_win64',
    695           ],
    696           'include_dirs': [
    697             '..',
    698           ],
    699           'sources': [
    700             'tools/crash_service/main.cc',
    701             '../content/public/common/content_switches.cc',
    702           ],
    703           'defines': [
    704             'COMPILE_CONTENT_STATICALLY',
    705           ],
    706           'msvs_settings': {
    707             'VCLinkerTool': {
    708               'SubSystem': '2',         # Set /SUBSYSTEM:WINDOWS
    709             },
    710           },
    711           'configurations': {
    712             'Common_Base': {
    713               'msvs_target_platform': 'x64',
    714             },
    715           },
    716         },
    717       ]},  # 'targets'
    718     ],  # OS=="win" and target_arch=="ia32"
    719     ['chromeos==1', {
    720       'includes': [ 'chrome_browser_chromeos.gypi' ],
    721     }],  # chromeos==1
    722     ['OS=="android"',
    723       {
    724       'targets': [
    725         {
    726           'target_name': 'chrome_java',
    727           'type': 'none',
    728           'dependencies': [
    729             'activity_type_ids_java',
    730             'app_banner_metrics_ids_java',
    731             'chrome_resources.gyp:chrome_strings',
    732             'chrome_strings_grd',
    733             'profile_sync_service_model_type_selection_java',
    734             'resource_id_java',
    735             'toolbar_model_security_levels_java',
    736             'tab_load_status_java',
    737             '../base/base.gyp:base',
    738             '../components/components.gyp:autofill_java',
    739             '../components/components.gyp:dom_distiller_core_java',
    740             '../components/components.gyp:gcm_driver_java',
    741             '../components/components.gyp:navigation_interception_java',
    742             '../components/components.gyp:sessions',
    743             '../components/components.gyp:web_contents_delegate_android_java',
    744             '../content/content.gyp:content_java',
    745             '../printing/printing.gyp:printing_java',
    746             '../sync/sync.gyp:sync_java',
    747             '../third_party/android_tools/android_tools.gyp:android_support_v7_appcompat_javalib',
    748             '../third_party/guava/guava.gyp:guava_javalib',
    749             '../ui/android/ui_android.gyp:ui_java',
    750           ],
    751           'variables': {
    752             'java_in_dir': '../chrome/android/java',
    753             'has_java_resources': 1,
    754             'R_package': 'org.chromium.chrome',
    755             'R_package_relpath': 'org/chromium/chrome',
    756             # Include xml string files generated from generated_resources.grd
    757             'res_extra_dirs': ['<(SHARED_INTERMEDIATE_DIR)/chrome/java/res'],
    758             'res_extra_files': ['<!@pymod_do_main(grit_info <@(grit_defines) --outputs "<(SHARED_INTERMEDIATE_DIR)/chrome" app/generated_resources.grd)'],
    759           },
    760           'includes': [
    761             '../build/java.gypi',
    762           ],
    763         },
    764         {
    765           'target_name': 'chrome_strings_grd',
    766           'type': 'none',
    767           'variables': {
    768             'grd_file': '../chrome/android/java/strings/android_chrome_strings.grd',
    769           },
    770           'includes': [
    771             '../build/java_strings_grd.gypi',
    772           ],
    773         },
    774       ], # 'targets'
    775       'includes': [
    776         'chrome_android.gypi',
    777       ]}, # 'includes'
    778     ],  # OS=="android"
    779     ['configuration_policy==1 and OS!="android" and OS!="ios"', {
    780       'includes': [ 'policy.gypi', ],
    781     }],
    782     ['enable_printing==1', {
    783       'targets': [
    784         {
    785           'target_name': 'service',
    786           'type': 'static_library',
    787           'variables': { 'enable_wexit_time_destructors': 1, },
    788           'dependencies': [
    789             'chrome_resources.gyp:chrome_strings',
    790             'common',
    791             'common_net',
    792             '../base/base.gyp:base',
    793             '../components/components.gyp:cloud_devices_common',
    794             '../google_apis/google_apis.gyp:google_apis',
    795             '../jingle/jingle.gyp:notifier',
    796             '../net/net.gyp:net',
    797             '../printing/printing.gyp:printing',
    798             '../skia/skia.gyp:skia',
    799             '../third_party/libjingle/libjingle.gyp:libjingle',
    800           ],
    801           'sources': [
    802             'service/cloud_print/cdd_conversion_win.cc',
    803             'service/cloud_print/cdd_conversion_win.h',
    804             'service/cloud_print/cloud_print_auth.cc',
    805             'service/cloud_print/cloud_print_auth.h',
    806             'service/cloud_print/cloud_print_connector.cc',
    807             'service/cloud_print/cloud_print_connector.h',
    808             'service/cloud_print/cloud_print_proxy.cc',
    809             'service/cloud_print/cloud_print_proxy.h',
    810             'service/cloud_print/cloud_print_proxy_backend.cc',
    811             'service/cloud_print/cloud_print_proxy_backend.h',
    812             'service/cloud_print/cloud_print_service_helpers.cc',
    813             'service/cloud_print/cloud_print_service_helpers.h',
    814             'service/cloud_print/cloud_print_token_store.cc',
    815             'service/cloud_print/cloud_print_token_store.h',
    816             'service/cloud_print/cloud_print_url_fetcher.cc',
    817             'service/cloud_print/cloud_print_url_fetcher.h',
    818             'service/cloud_print/cloud_print_wipeout.cc',
    819             'service/cloud_print/cloud_print_wipeout.h',
    820             'service/cloud_print/connector_settings.cc',
    821             'service/cloud_print/connector_settings.h',
    822             'service/cloud_print/job_status_updater.cc',
    823             'service/cloud_print/job_status_updater.h',
    824             'service/cloud_print/print_system.cc',
    825             'service/cloud_print/print_system.h',
    826             'service/cloud_print/print_system_win.cc',
    827             'service/cloud_print/printer_job_handler.cc',
    828             'service/cloud_print/printer_job_handler.h',
    829             'service/cloud_print/printer_job_queue_handler.cc',
    830             'service/cloud_print/printer_job_queue_handler.h',
    831             'service/net/service_url_request_context.cc',
    832             'service/net/service_url_request_context.h',
    833             'service/service_ipc_server.cc',
    834             'service/service_ipc_server.h',
    835             'service/service_main.cc',
    836             'service/service_process.cc',
    837             'service/service_process.h',
    838             'service/service_process_prefs.cc',
    839             'service/service_process_prefs.h',
    840             'service/service_utility_process_host.cc',
    841             'service/service_utility_process_host.h',
    842           ],
    843           'include_dirs': [
    844             '..',
    845           ],
    846           'conditions': [
    847             ['use_cups==1', {
    848               'dependencies': [
    849                 '../printing/printing.gyp:cups',
    850               ],
    851               'sources': [
    852                 'service/cloud_print/print_system_cups.cc',
    853               ],
    854             }],
    855             ['OS!="win" and use_cups!=1', {
    856               'sources': [
    857                 'service/cloud_print/print_system_dummy.cc',
    858               ],
    859             }],
    860           ],
    861         },
    862       ],
    863     }],
    864   ],  # 'conditions'
    865 }
    866