Home | History | Annotate | Download | only in wtf
      1 # Copyright (C) 2012 Google Inc. All rights reserved.
      2 #
      3 # Redistribution and use in source and binary forms, with or without
      4 # modification, are permitted provided that the following conditions are
      5 # met:
      6 #
      7 #     * Redistributions of source code must retain the above copyright
      8 # notice, this list of conditions and the following disclaimer.
      9 #     * Redistributions in binary form must reproduce the above
     10 # copyright notice, this list of conditions and the following disclaimer
     11 # in the documentation and/or other materials provided with the
     12 # distribution.
     13 #     * Neither the name of Google Inc. nor the names of its
     14 # contributors may be used to endorse or promote products derived from
     15 # this software without specific prior written permission.
     16 #
     17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     28 {
     29   'includes': [
     30     '../build/win/precompile.gypi',
     31     '../build/features.gypi',
     32     'wtf.gypi',
     33   ],
     34   'conditions': [
     35     ['gcc_version>=46', {
     36       'target_defaults': {
     37         # Disable warnings about c++0x compatibility, as some names (such as nullptr) conflict
     38         # with upcoming c++0x types.
     39         'cflags_cc': ['-Wno-c++0x-compat'],
     40       },
     41     }],
     42   ],
     43   'targets': [
     44     {
     45       # This target sets up defines and includes that are required by WTF and
     46       # its dependents.
     47       'target_name': 'wtf_config',
     48       'type': 'none',
     49       'direct_dependent_settings': {
     50         'defines': [
     51           # Import features_defines from features.gypi
     52           '<@(feature_defines)',
     53         ],
     54         'conditions': [
     55           ['OS=="win"', {
     56             'defines': [
     57               '__STD_C',
     58               '_CRT_SECURE_NO_DEPRECATE',
     59               '_SCL_SECURE_NO_DEPRECATE',
     60               'CRASH=__debugbreak',
     61             ],
     62             'include_dirs': [
     63               'os-win32',
     64             ],
     65           }],
     66         ],
     67       },
     68     },
     69     {
     70       'target_name': 'wtf',
     71       'type': '<(component)',
     72       'include_dirs': [
     73         '..',
     74       ],
     75       'dependencies': [
     76           'wtf_config',
     77           '../config.gyp:config',
     78           '<(DEPTH)/third_party/icu/icu.gyp:icui18n',
     79           '<(DEPTH)/third_party/icu/icu.gyp:icuuc',
     80       ],
     81       'sources': [
     82         '<@(wtf_files)',
     83       ],
     84       'defines': [
     85         'WTF_IMPLEMENTATION=1',
     86       ],
     87       'direct_dependent_settings': {
     88         'include_dirs': [
     89           '..',
     90         ],
     91         # Some warnings occur in WTF headers, so they must also be disabled
     92         # in targets that use WTF.
     93         'msvs_disabled_warnings': [
     94           # Don't complain about calling specific versions of templatized
     95           # functions (e.g. in RefPtrHashMap.h).
     96           4344,
     97           # Don't complain about using "this" in an initializer list
     98           # (e.g. in StringImpl.h).
     99           4355,
    100           # Disable c4267 warnings until we fix size_t to int truncations.
    101           4267,
    102         ],
    103       },
    104       'export_dependent_settings': [
    105         'wtf_config',
    106         '<(DEPTH)/third_party/icu/icu.gyp:icui18n',
    107         '<(DEPTH)/third_party/icu/icu.gyp:icuuc',
    108       ],
    109       # Disable c4267 warnings until we fix size_t to int truncations.
    110       'msvs_disabled_warnings': [4127, 4355, 4510, 4512, 4610, 4706, 4068, 4267],
    111       'conditions': [
    112         ['OS=="android"', {
    113           'link_settings': {
    114             'libraries': [
    115               '-llog',
    116             ]
    117           }
    118         }],
    119         ['OS=="win"', {
    120           'sources/': [
    121             ['exclude', 'ThreadIdentifierDataPthreads\\.(h|cpp)$'],
    122             ['exclude', 'ThreadingPthreads\\.cpp$'],
    123           ],
    124           'include_dirs!': [
    125             '<(SHARED_INTERMEDIATE_DIR)/blink',
    126           ],
    127           'conditions': [
    128             ['component=="shared_library"', {
    129               # Chromium windows multi-dll build enables c++ exception and this
    130               # causes wtf generates 4291 warning due to operator new/delete
    131               # implementations. Disable the warning for chromium windows
    132               # multi-dll build.
    133               'msvs_disabled_warnings': [4291],
    134               'direct_dependent_settings': {
    135                 'msvs_disabled_warnings': [4291],
    136               },
    137             }],
    138           ],
    139         }, { # OS!="win"
    140           'sources/': [
    141             ['exclude', 'Win\\.cpp$'],
    142           ],
    143         }],
    144         ['OS=="mac"', {
    145           'link_settings': {
    146             'libraries': [
    147               '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
    148               '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
    149             ]
    150           }
    151         }, { # OS!="mac"
    152           'sources/': [
    153             ['exclude', 'CF\\.cpp$'],
    154             ['exclude', 'Mac\\.mm$'],
    155             # mac is the only OS that uses WebKit's copy of TCMalloc.
    156             ['exclude', 'TC.*\\.(cpp|h)$'],
    157           ],
    158         }],
    159       ],
    160     },
    161   ]
    162 }
    163