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

{
  'conditions': [
    ['OS!="ios" or "<(GENERATOR)"=="ninja"', {
      'targets': [
        {
          'target_name': 'iossim',
          'toolsets': ['host'],
          'type': 'executable',
          'variables': {
            'developer_dir': '<!(xcode-select -print-path)',
            # TODO(lliabraa): Once all builders are on Xcode 6 this variable can
            # be removed and the actions gated by this variable can be run by
            # default (crbug.com/385030).
            'xcode_version': '<!(xcodebuild -version | grep Xcode | awk \'{print $2}\')',
          },
          'conditions': [
            ['xcode_version>="6.0"', {
              'variables': {
                'iphone_sim_path': '<(developer_dir)/../SharedFrameworks',
              },
              'defines': [
                'IOSSIM_USE_XCODE_6',
              ],
              'xcode_settings': {
                # The CoreSimulator.h file generated by class-dump defines a
                # property of type |NSString*| and a setter for the property
                # that takes a parameter of type |id|. This type mismatch causes
                # a compiler warning, so turn off -Werror.
                'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO',
              },
              'actions': [
                {
                  'action_name': 'generate_dvt_foundation_header',
                  'inputs': [
                    '<(iphone_sim_path)/DVTFoundation.framework/Versions/Current/DVTFoundation',
                    '<(PRODUCT_DIR)/class-dump',
                  ],
                  'outputs': [
                    '<(INTERMEDIATE_DIR)/iossim/DVTFoundation.h'
                  ],
                  'action': [
                    # Actions don't provide a way to redirect stdout, so a custom
                    # script is invoked that will execute the first argument and
                    # write the output to the file specified as the second argument.
                    # -I sorts classes, categories, and protocols by inheritance.
                    # -C <regex> only displays classes matching regular expression.
                    './redirect-stdout.sh',
                    '<(PRODUCT_DIR)/class-dump -CDVTStackBacktrace|DVTInvalidation|DVTMixIn <(iphone_sim_path)/DVTFoundation.framework',
                    '<(INTERMEDIATE_DIR)/iossim/DVTFoundation.h',
                  ],
                  'message': 'Generating DVTFoundation.h',
                },
                {
                  'action_name': 'generate_dvt_core_simulator',
                  'inputs': [
                    '<(developer_dir)/Library/PrivateFrameworks/CoreSimulator.framework/Versions/Current/CoreSimulator',
                    '<(PRODUCT_DIR)/class-dump',
                  ],
                  'outputs': [
                    '<(INTERMEDIATE_DIR)/iossim/CoreSimulator.h'
                  ],
                  'action': [
                    # Actions don't provide a way to redirect stdout, so a custom
                    # script is invoked that will execute the first argument and
                    # write the output to the file specified as the second argument.
                    # -I sorts classes, categories, and protocols by inheritance.
                    # -C <regex> only displays classes matching regular expression.
                    './redirect-stdout.sh',
                    '<(PRODUCT_DIR)/class-dump -CSim <(developer_dir)/Library/PrivateFrameworks/CoreSimulator.framework',
                    '<(INTERMEDIATE_DIR)/iossim/CoreSimulator.h',
                  ],
                  'message': 'Generating CoreSimulator.h',
                },
              ],  # actions
            }, {  # else: xcode_version<"6.0"
              'variables': {
                'iphone_sim_path': '<(developer_dir)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks',
              },
            }],  # xcode_version
          ],  # conditions
          'dependencies': [
            'third_party/class-dump/class-dump.gyp:class-dump#host',
          ],
          'include_dirs': [
            '<(INTERMEDIATE_DIR)/iossim',
          ],
          'sources': [
            'iossim.mm',
            '<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h',
          ],
          'libraries': [
            '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
          ],
          'actions': [
            {
              'action_name': 'generate_dvt_iphone_sim_header',
              'inputs': [
                '<(iphone_sim_path)/DVTiPhoneSimulatorRemoteClient.framework/Versions/Current/DVTiPhoneSimulatorRemoteClient',
                '<(PRODUCT_DIR)/class-dump',
              ],
              'outputs': [
                '<(INTERMEDIATE_DIR)/iossim/DVTiPhoneSimulatorRemoteClient.h'
              ],
              'action': [
                # Actions don't provide a way to redirect stdout, so a custom
                # script is invoked that will execute the first argument and
                # write the output to the file specified as the second argument.
                # -I sorts classes, categories, and protocols by inheritance.
                # -C <regex> only displays classes matching regular expression.
                './redirect-stdout.sh',
                '<(PRODUCT_DIR)/class-dump -I -CiPhoneSimulator <(iphone_sim_path)/DVTiPhoneSimulatorRemoteClient.framework',
                '<(INTERMEDIATE_DIR)/iossim/DVTiPhoneSimulatorRemoteClient.h',
              ],
              'message': 'Generating DVTiPhoneSimulatorRemoteClient.h',
            },
          ],  # actions
          'xcode_settings': {
            'ARCHS': ['x86_64'],
            'WARNING_CFLAGS': [
              '-Wno-objc-property-no-attribute',
            ],
          },
        },
      ],
    }, {  # else, OS=="ios" and "<(GENERATOR)"!="ninja"
      'variables': {
        'ninja_output_dir': 'ninja-iossim',
        'ninja_product_dir':
          '$(SYMROOT)/<(ninja_output_dir)/<(CONFIGURATION_NAME)',
      },
      'targets': [
        {
          'target_name': 'iossim',
          'type': 'none',
          'toolsets': ['host'],
          'variables': {
            # Gyp to rerun
            're_run_targets': [
               'testing/iossim/iossim.gyp',
            ],
          },
          'includes': ['../../build/ios/mac_build.gypi'],
          'actions': [
            {
              'action_name': 'compile iossim',
              'inputs': [],
              'outputs': [],
              'action': [
                '<@(ninja_cmd)',
                'iossim',
              ],
              'message': 'Generating the iossim executable',
            },
          ],
        },
      ],
    }],
  ],
}
