Home | History | Annotate | Download | only in testing
      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   'includes': [
      7     'gtest.gypi',
      8   ],
      9   'targets': [
     10     {
     11       'target_name': 'gtest',
     12       'toolsets': ['host', 'target'],
     13       'type': 'static_library',
     14       'sources': [
     15         '<@(gtest_sources)',
     16       ],
     17       'include_dirs': [
     18         'gtest',
     19         'gtest/include',
     20       ],
     21       'dependencies': [
     22         'gtest_prod',
     23       ],
     24       'defines': [
     25         # In order to allow regex matches in gtest to be shared between Windows
     26         # and other systems, we tell gtest to always use it's internal engine.
     27         'GTEST_HAS_POSIX_RE=0',
     28         # Chrome doesn't support / require C++11, yet.
     29         'GTEST_LANG_CXX11=0',
     30       ],
     31       'all_dependent_settings': {
     32         'defines': [
     33           'GTEST_HAS_POSIX_RE=0',
     34           'GTEST_LANG_CXX11=0',
     35         ],
     36       },
     37       'conditions': [
     38         ['OS == "mac" or OS == "ios"', {
     39           'sources': [
     40             'gtest_mac.h',
     41             'gtest_mac.mm',
     42           ],
     43           'link_settings': {
     44             'libraries': [
     45               '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
     46             ],
     47           },
     48         }],
     49         ['OS == "mac"', {
     50           'sources': [
     51             'platform_test_mac.mm',
     52           ],
     53         }],
     54         ['OS == "ios"', {
     55           'dependencies' : [
     56             '<(DEPTH)/testing/iossim/iossim.gyp:iossim#host',
     57           ],
     58           'direct_dependent_settings': {
     59             'target_conditions': [
     60               # Turn all tests into bundles on iOS because that's the only
     61               # type of executable supported for iOS.
     62               ['_type=="executable"', {
     63                 'variables': {
     64                   # Use a variable so the path gets fixed up so it is always
     65                   # correct when INFOPLIST_FILE finally gets set.
     66                   'ios_unittest_info_plist_path':
     67                     '<(DEPTH)/testing/gtest_ios/unittest-Info.plist',
     68                 },
     69                 'mac_bundle': 1,
     70                 'xcode_settings': {
     71                   'BUNDLE_ID_TEST_NAME':
     72                     '>!(echo ">(_target_name)" | sed -e "s/_//g")',
     73                   'INFOPLIST_FILE': '>(ios_unittest_info_plist_path)',
     74                 },
     75                 'mac_bundle_resources': [
     76                   '<(ios_unittest_info_plist_path)',
     77                   '<(DEPTH)/testing/gtest_ios/Default-568h@2x.png',
     78                 ],
     79                 'mac_bundle_resources!': [
     80                   '<(ios_unittest_info_plist_path)',
     81                 ],
     82               }],
     83             ],
     84           },
     85           'sources': [
     86             'coverage_util_ios.cc',
     87             'coverage_util_ios.h',
     88             'platform_test_ios.mm',
     89           ],
     90         }],
     91         ['OS=="ios" and asan==1', {
     92           'direct_dependent_settings': {
     93             'target_conditions': [
     94               # Package the ASan runtime dylib into the test app bundles.
     95               ['_type=="executable"', {
     96                 'postbuilds': [
     97                   {
     98                     'variables': {
     99                       # Define copy_asan_dylib_path in a variable ending in
    100                       # _path so that gyp understands it's a path and
    101                       # performs proper relativization during dict merging.
    102                       'copy_asan_dylib_path':
    103                         '<(DEPTH)/build/mac/copy_asan_runtime_dylib.sh',
    104                     },
    105                     'postbuild_name': 'Copy ASan runtime dylib',
    106                     'action': [
    107                       '>(copy_asan_dylib_path)',
    108                     ],
    109                   },
    110                 ],
    111               }],
    112             ],
    113           },
    114         }],
    115         ['os_posix == 1', {
    116           'defines': [
    117             # gtest isn't able to figure out when RTTI is disabled for gcc
    118             # versions older than 4.3.2, and assumes it's enabled.  Our Mac
    119             # and Linux builds disable RTTI, and cannot guarantee that the
    120             # compiler will be 4.3.2. or newer.  The Mac, for example, uses
    121             # 4.2.1 as that is the latest available on that platform.  gtest
    122             # must be instructed that RTTI is disabled here, and for any
    123             # direct dependents that might include gtest headers.
    124             'GTEST_HAS_RTTI=0',
    125           ],
    126           'direct_dependent_settings': {
    127             'defines': [
    128               'GTEST_HAS_RTTI=0',
    129             ],
    130           },
    131         }],
    132         ['OS=="android" and android_app_abi=="x86"', {
    133           'defines': [
    134             'GTEST_HAS_CLONE=0',
    135           ],
    136           'direct_dependent_settings': {
    137             'defines': [
    138               'GTEST_HAS_CLONE=0',
    139             ],
    140           },
    141         }],
    142         ['OS=="android"', {
    143           # We want gtest features that use tr1::tuple, but we currently
    144           # don't support the variadic templates used by libstdc++'s
    145           # implementation. gtest supports this scenario by providing its
    146           # own implementation but we must opt in to it.
    147           'defines': [
    148             'GTEST_USE_OWN_TR1_TUPLE=1',
    149             # GTEST_USE_OWN_TR1_TUPLE only works if GTEST_HAS_TR1_TUPLE is set.
    150             # gtest r625 made it so that GTEST_HAS_TR1_TUPLE is set to 0
    151             # automatically on android, so it has to be set explicitly here.
    152             'GTEST_HAS_TR1_TUPLE=1',
    153           ],
    154           'direct_dependent_settings': {
    155             'defines': [
    156               'GTEST_USE_OWN_TR1_TUPLE=1',
    157               'GTEST_HAS_TR1_TUPLE=1',
    158             ],
    159           },
    160         }],
    161       ],
    162       'direct_dependent_settings': {
    163         'defines': [
    164           'UNIT_TEST',
    165         ],
    166         'include_dirs': [
    167           'gtest/include',  # So that gtest headers can find themselves.
    168         ],
    169         'target_conditions': [
    170           ['_type=="executable"', {
    171             'test': 1,
    172             'conditions': [
    173               ['OS=="mac"', {
    174                 'run_as': {
    175                   'action????': ['${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}'],
    176                 },
    177               }],
    178               ['OS=="ios"', {
    179                 'variables': {
    180                   # Use a variable so the path gets fixed up so it is always
    181                   # correct when the action finally gets used.
    182                   'ios_run_unittest_script_path':
    183                     '<(DEPTH)/testing/gtest_ios/run-unittest.sh',
    184                 },
    185                 'run_as': {
    186                   'action????': ['>(ios_run_unittest_script_path)'],
    187                 },
    188               }],
    189               ['OS=="win"', {
    190                 'run_as': {
    191                   'action????': ['$(TargetPath)', '--gtest_print_time'],
    192                 },
    193               }],
    194             ],
    195           }],
    196         ],
    197         'msvs_disabled_warnings': [4800],
    198       },
    199     },
    200     {
    201       'target_name': 'gtest_main',
    202       'type': 'static_library',
    203       'dependencies': [
    204         'gtest',
    205       ],
    206       'sources': [
    207         'gtest/src/gtest_main.cc',
    208       ],
    209     },
    210     {
    211       'target_name': 'gtest_prod',
    212       'toolsets': ['host', 'target'],
    213       'type': 'none',
    214       'sources': [
    215         'gtest/include/gtest/gtest_prod.h',
    216       ],
    217     },
    218   ],
    219 }
    220