Home | History | Annotate | Download | only in iossim
      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 {
      6   'conditions': [
      7     ['OS!="ios" or "<(GENERATOR)"=="ninja"', {
      8       'targets': [
      9         {
     10           'target_name': 'iossim',
     11           'toolsets': ['host'],
     12           'type': 'executable',
     13           'variables': {
     14             'developer_dir': '<!(xcode-select -print-path)',
     15             # TODO(lliabraa): Once all builders are on Xcode 6 this variable can
     16             # be removed and the actions gated by this variable can be run by
     17             # default (crbug.com/385030).
     18             'xcode_version': '<!(xcodebuild -version | grep Xcode | awk \'{print $2}\')',
     19           },
     20           'conditions': [
     21             ['xcode_version>="6.0"', {
     22               'variables': {
     23                 'iphone_sim_path': '<(developer_dir)/../SharedFrameworks',
     24               },
     25               'defines': [
     26                 'IOSSIM_USE_XCODE_6',
     27               ],
     28               'xcode_settings': {
     29                 # The CoreSimulator.h file generated by class-dump defines a
     30                 # property of type |NSString*| and a setter for the property
     31                 # that takes a parameter of type |id|. This type mismatch causes
     32                 # a compiler warning, so turn off -Werror.
     33                 'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO',
     34               },
     35               'actions': [
     36                 {
     37                   'action_name': 'generate_dvt_foundation_header',
     38                   'inputs': [
     39                     '<(iphone_sim_path)/DVTFoundation.framework/Versions/Current/DVTFoundation',
     40                     '<(PRODUCT_DIR)/class-dump',
     41                   ],
     42                   'outputs': [
     43                     '<(INTERMEDIATE_DIR)/iossim/DVTFoundation.h'
     44                   ],
     45                   'action': [
     46                     # Actions don't provide a way to redirect stdout, so a custom
     47                     # script is invoked that will execute the first argument and
     48                     # write the output to the file specified as the second argument.
     49                     # -I sorts classes, categories, and protocols by inheritance.
     50                     # -C <regex> only displays classes matching regular expression.
     51                     './redirect-stdout.sh',
     52                     '<(PRODUCT_DIR)/class-dump -CDVTStackBacktrace|DVTInvalidation|DVTMixIn <(iphone_sim_path)/DVTFoundation.framework',
     53                     '<(INTERMEDIATE_DIR)/iossim/DVTFoundation.h',
     54                   ],
     55                   'message': 'Generating DVTFoundation.h',
     56                 },
     57                 {
     58                   'action_name': 'generate_dvt_core_simulator',
     59                   'inputs': [
     60                     '<(developer_dir)/Library/PrivateFrameworks/CoreSimulator.framework/Versions/Current/CoreSimulator',
     61                     '<(PRODUCT_DIR)/class-dump',
     62                   ],
     63                   'outputs': [
     64                     '<(INTERMEDIATE_DIR)/iossim/CoreSimulator.h'
     65                   ],
     66                   'action': [
     67                     # Actions don't provide a way to redirect stdout, so a custom
     68                     # script is invoked that will execute the first argument and
     69                     # write the output to the file specified as the second argument.
     70                     # -I sorts classes, categories, and protocols by inheritance.
     71                     # -C <regex> only displays classes matching regular expression.
     72                     './redirect-stdout.sh',
     73                     '<(PRODUCT_DIR)/class-dump -CSim <(developer_dir)/Library/PrivateFrameworks/CoreSimulator.framework',
     74                     '<(INTERMEDIATE_DIR)/iossim/CoreSimulator.h',
     75                   ],
     76                   'message': 'Generating CoreSimulator.h',
     77                 },
     78               ],  # actions
     79             }, {  # else: xcode_version<"6.0"
     80               'variables': {
     81                 'iphone_sim_path': '<(developer_dir)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks',
     82               },
     83             }],  # xcode_version
     84           ],  # conditions
     85           'dependencies': [
     86             'third_party/class-dump/class-dump.gyp:class-dump#host',
     87           ],
     88           'include_dirs': [
     89             '<(INTERMEDIATE_DIR)/iossim',
     90           ],
     91           'sources': [
     92             'iossim.mm',
     93             '<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h',
     94           ],
     95           'libraries': [
     96             '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
     97           ],
     98           'actions': [
     99             {
    100               'action_name': 'generate_dvt_iphone_sim_header',
    101               'inputs': [
    102                 '<(iphone_sim_path)/DVTiPhoneSimulatorRemoteClient.framework/Versions/Current/DVTiPhoneSimulatorRemoteClient',
    103                 '<(PRODUCT_DIR)/class-dump',
    104               ],
    105               'outputs': [
    106                 '<(INTERMEDIATE_DIR)/iossim/DVTiPhoneSimulatorRemoteClient.h'
    107               ],
    108               'action': [
    109                 # Actions don't provide a way to redirect stdout, so a custom
    110                 # script is invoked that will execute the first argument and
    111                 # write the output to the file specified as the second argument.
    112                 # -I sorts classes, categories, and protocols by inheritance.
    113                 # -C <regex> only displays classes matching regular expression.
    114                 './redirect-stdout.sh',
    115                 '<(PRODUCT_DIR)/class-dump -I -CiPhoneSimulator <(iphone_sim_path)/DVTiPhoneSimulatorRemoteClient.framework',
    116                 '<(INTERMEDIATE_DIR)/iossim/DVTiPhoneSimulatorRemoteClient.h',
    117               ],
    118               'message': 'Generating DVTiPhoneSimulatorRemoteClient.h',
    119             },
    120           ],  # actions
    121           'xcode_settings': {
    122             'ARCHS': ['x86_64'],
    123             'WARNING_CFLAGS': [
    124               '-Wno-objc-property-no-attribute',
    125             ],
    126           },
    127         },
    128       ],
    129     }, {  # else, OS=="ios" and "<(GENERATOR)"!="ninja"
    130       'variables': {
    131         'ninja_output_dir': 'ninja-iossim',
    132         'ninja_product_dir':
    133           '$(SYMROOT)/<(ninja_output_dir)/<(CONFIGURATION_NAME)',
    134       },
    135       'targets': [
    136         {
    137           'target_name': 'iossim',
    138           'type': 'none',
    139           'variables': {
    140             # Gyp to rerun
    141             're_run_targets': [
    142                'testing/iossim/iossim.gyp',
    143             ],
    144           },
    145           'includes': ['../../build/ios/mac_build.gypi'],
    146           'actions': [
    147             {
    148               'action_name': 'compile iossim',
    149               'inputs': [],
    150               'outputs': [],
    151               'action': [
    152                 '<@(ninja_cmd)',
    153                 'iossim',
    154               ],
    155               'message': 'Generating the iossim executable',
    156             },
    157           ],
    158         },
    159       ],
    160     }],
    161   ],
    162 }
    163