text: # Copyright 2014 The Crashpad Authors. All rights reserved.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  {
    'includes': [
      '../build/crashpad.gypi',
    ],
    'targets': [
      {
        'target_name': 'crashpad_tool_support',
        'type': 'static_library',
        'dependencies': [
          '../third_party/mini_chromium/mini_chromium.gyp:base',
        ],
        'include_dirs': [
          '..',
        ],
        'sources': [
          'tool_support.cc',
          'tool_support.h',
        ],
      },
      {
        'target_name': 'crashpad_database_util',
        'type': 'executable',
        'dependencies': [
          'crashpad_tool_support',
          '../client/client.gyp:crashpad_client',
          '../compat/compat.gyp:crashpad_compat',
          '../third_party/mini_chromium/mini_chromium.gyp:base',
          '../util/util.gyp:crashpad_util',
        ],
        'include_dirs': [
          '..',
        ],
        'sources': [
          'crashpad_database_util.cc',
        ],
      },
      {
        'target_name': 'crashpad_http_upload',
        'type': 'executable',
        'dependencies': [
          'crashpad_tool_support',
          '../compat/compat.gyp:crashpad_compat',
          '../third_party/mini_chromium/mini_chromium.gyp:base',
          '../util/util.gyp:crashpad_util',
        ],
        'include_dirs': [
          '..',
        ],
        'sources': [
          'crashpad_http_upload.cc',
        ],
      },
      {
        'target_name': 'generate_dump',
        'type': 'executable',
        'dependencies': [
          'crashpad_tool_support',
          '../compat/compat.gyp:crashpad_compat',
          '../minidump/minidump.gyp:crashpad_minidump',
          '../snapshot/snapshot.gyp:crashpad_snapshot',
          '../third_party/mini_chromium/mini_chromium.gyp:base',
          '../util/util.gyp:crashpad_util',
        ],
        'include_dirs': [
          '..',
        ],
        'sources': [
          'generate_dump.cc',
        ],
        'conditions': [
          ['OS=="mac"', {
            'xcode_settings': {
              'OTHER_LDFLAGS': [
                '-sectcreate',
                '__TEXT',
                '__info_plist',
                '<(sectaskaccess_info_plist)'
              ],
            },
          }],
        ],
      },
    ],
    'conditions': [
      ['OS=="mac"', {
        'variables': {
          # Programs that use task_for_pid() can indicate to taskgated(8) in their
          # Info.plist that they are allowed to call that function. In order for
          # this to work, the programs in question must be signed by an authority
          # trusted by the system. Signing is beyond the scope of the build, but
          # the key to make this work is placed in Info.plist to enable the
          # desired behavior once the tools that require this access are signed.
          #
          # The tools built here are flat-file executables, and are not bundled.
          # To have an Info.plist, they must have a special __TEXT,__info_plist
          # section. This section is created at link time.
          #
          # The Info.plist for this purpose is mac/sectaskaccess_info.plist and is
          # referenced by OTHER_LDFLAGS. ninja runs the link step from the output
          # directory such as out/Release, and requires a relative path from that
          # directory. Xcode runs the link step from the directory of the
          # .xcodeproj, which is the directory of the .gyp file.
          'conditions': [
            ['GENERATOR=="ninja"', {
              'sectaskaccess_info_plist': '<!(pwd)/mac/sectaskaccess_info.plist',
            }, {  # else: GENERATOR!="ninja"
              'sectaskaccess_info_plist': 'mac/sectaskaccess_info.plist',
            }],
          ],
        },
  
        'targets': [
          {
            'target_name': 'catch_exception_tool',
            'type': 'executable',
            'dependencies': [
              'crashpad_tool_support',
              '../compat/compat.gyp:crashpad_compat',
              '../third_party/mini_chromium/mini_chromium.gyp:base',
              '../util/util.gyp:crashpad_util',
            ],
            'include_dirs': [
              '..',
            ],
            'sources': [
              'mac/catch_exception_tool.cc',
            ],
          },
          {
            'target_name': 'exception_port_tool',
            'type': 'executable',
            'dependencies': [
              'crashpad_tool_support',
              '../compat/compat.gyp:crashpad_compat',
              '../third_party/mini_chromium/mini_chromium.gyp:base',
              '../util/util.gyp:crashpad_util',
            ],
            'include_dirs': [
              '..',
            ],
            'sources': [
              'mac/exception_port_tool.cc',
            ],
            'xcode_settings': {
              'OTHER_LDFLAGS': [
                '-sectcreate',
                '__TEXT',
                '__info_plist',
                '<(sectaskaccess_info_plist)'
              ],
            },
          },
          {
            'target_name': 'on_demand_service_tool',
            'type': 'executable',
            'dependencies': [
              'crashpad_tool_support',
              '../compat/compat.gyp:crashpad_compat',
              '../third_party/mini_chromium/mini_chromium.gyp:base',
              '../util/util.gyp:crashpad_util',
            ],
            'include_dirs': [
              '..',
            ],
            'link_settings': {
              'libraries': [
                '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
                '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
              ],
            },
            'sources': [
              'mac/on_demand_service_tool.mm',
            ],
          },
          {
            'target_name': 'run_with_crashpad',
            'type': 'executable',
            'dependencies': [
              'crashpad_tool_support',
              '../client/client.gyp:crashpad_client',
              '../compat/compat.gyp:crashpad_compat',
              '../third_party/mini_chromium/mini_chromium.gyp:base',
              '../util/util.gyp:crashpad_util',
            ],
            'include_dirs': [
              '..',
            ],
            'sources': [
              'run_with_crashpad.cc',
            ],
          },
        ],
      }],
    ],
  }
  