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