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           }],
     63         ],
     64       },
     65     },
     66     {
     67       'target_name': 'wtf',
     68       'type': '<(component)',
     69       'include_dirs': [
     70         '..',
     71       ],
     72       'dependencies': [
     73           'wtf_config',
     74           '../config.gyp:config',
     75           '<(DEPTH)/third_party/icu/icu.gyp:icui18n',
     76           '<(DEPTH)/third_party/icu/icu.gyp:icuuc',
     77       ],
     78       'sources': [
     79         '<@(wtf_files)',
     80       ],
     81       'defines': [
     82         'WTF_IMPLEMENTATION=1',
     83       ],
     84       'direct_dependent_settings': {
     85         'include_dirs': [
     86           '..',
     87         ],
     88         # Some warnings occur in WTF headers, so they must also be disabled
     89         # in targets that use WTF.
     90         'msvs_disabled_warnings': [
     91           # Don't complain about calling specific versions of templatized
     92           # functions (e.g. in RefPtrHashMap.h).
     93           4344,
     94           # Don't complain about using "this" in an initializer list
     95           # (e.g. in StringImpl.h).
     96           4355,
     97           # Disable c4267 warnings until we fix size_t to int truncations.
     98           4267,
     99         ],
    100       },
    101       'export_dependent_settings': [
    102         'wtf_config',
    103         '<(DEPTH)/third_party/icu/icu.gyp:icui18n',
    104         '<(DEPTH)/third_party/icu/icu.gyp:icuuc',
    105       ],
    106       # Disable c4267 warnings until we fix size_t to int truncations.
    107       'msvs_disabled_warnings': [4127, 4355, 4510, 4512, 4610, 4706, 4068, 4267],
    108       'conditions': [
    109         ['OS=="android"', {
    110           'link_settings': {
    111             'libraries': [
    112               '-llog',
    113             ]
    114           }
    115         }],
    116         ['OS=="win"', {
    117           'sources/': [
    118             ['exclude', 'ThreadingPthreads\\.cpp$'],
    119           ],
    120           'include_dirs!': [
    121             '<(SHARED_INTERMEDIATE_DIR)/blink',
    122           ],
    123           'conditions': [
    124             ['component=="shared_library"', {
    125               # Chromium windows multi-dll build enables C++ exception and this
    126               # causes wtf to generate 4291 warning due to operator new/delete
    127               # implementations. Disable the warning for chromium windows
    128               # multi-dll build.
    129               'msvs_disabled_warnings': [4291],
    130               'direct_dependent_settings': {
    131                 'msvs_disabled_warnings': [4291],
    132               },
    133             }],
    134           ],
    135         }, { # OS!="win"
    136           'sources/': [
    137             ['exclude', 'Win\\.cpp$'],
    138           ],
    139         }],
    140         ['OS=="mac"', {
    141           'link_settings': {
    142             'libraries': [
    143               '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
    144               '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
    145             ]
    146           }
    147         }, { # OS!="mac"
    148           'sources/': [
    149             ['exclude', 'CF\\.cpp$'],
    150             ['exclude', 'Mac\\.mm$'],
    151             # mac is the only OS that uses WebKit's copy of TCMalloc.
    152             ['exclude', 'TC.*\\.(cpp|h)$'],
    153           ],
    154         }],
    155       ],
    156     },
    157   ]
    158 }
    159