Consolidate the way WTF_USE_PTHREADS is enabled
[WebKit-https.git] / Source / WTF / WTF.gyp / WTF.gyp
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     '../../WebKit/chromium/WinPrecompile.gypi',
31     '../../WebKit/chromium/features.gypi',
32     '../WTF.gypi',
33   ],
34   'variables': {
35     # Location of the chromium src directory.
36     'conditions': [
37       ['inside_chromium_build==0', {
38         # Webkit is being built outside of the full chromium project.
39         'chromium_src_dir': '../../WebKit/chromium',
40       },{
41         # WebKit is checked out in src/chromium/third_party/WebKit
42         'chromium_src_dir': '../../../../..',
43       }],
44     ],
45   },
46   'conditions': [
47     ['os_posix == 1 and OS != "mac" and gcc_version>=46', {
48       'target_defaults': {
49         # Disable warnings about c++0x compatibility, as some names (such as nullptr) conflict
50         # with upcoming c++0x types.
51         'cflags_cc': ['-Wno-c++0x-compat'],
52       },
53     }],
54   ],
55   'targets': [
56     {
57       # This target sets up defines and includes that are required by WTF and
58       # its dependents.
59       'target_name': 'wtf_config',
60       'type': 'none',
61       'direct_dependent_settings': {
62         'defines': [
63           # Import features_defines from features.gypi
64           '<@(feature_defines)',
65
66           # Turns on #if PLATFORM(CHROMIUM)
67           'BUILDING_CHROMIUM__=1',
68         ],
69         'conditions': [
70           ['OS=="win"', {
71             'defines': [
72               '__STD_C',
73               '_CRT_SECURE_NO_DEPRECATE',
74               '_SCL_SECURE_NO_DEPRECATE',
75               'CRASH=__debugbreak',
76             ],
77             'include_dirs': [
78               '../../JavaScriptCore/os-win32',
79             ],
80           }],
81           ['OS=="mac"', {
82             'defines': [
83               'WTF_USE_NEW_THEME=1',
84             ],
85           }],
86         ],
87       },
88     },
89     {
90       'target_name': 'wtf',
91       'type': 'static_library',
92       'include_dirs': [
93         '../',
94         '../wtf',
95         '../wtf/unicode',
96       ],
97       'dependencies': [
98           'wtf_config',
99           '<(chromium_src_dir)/third_party/icu/icu.gyp:icui18n',
100           '<(chromium_src_dir)/third_party/icu/icu.gyp:icuuc',
101       ],
102       'sources': [
103         '<@(wtf_privateheader_files)',
104         '<@(wtf_files)',
105       ],
106       'sources/': [
107         # FIXME: This is clearly not sustainable.
108         ['exclude', '../wtf/efl'],
109         ['exclude', '../wtf/gobject'],
110         ['exclude', '../wtf/gtk'],
111         ['exclude', '../wtf/mac'],
112         ['exclude', '../wtf/qt'],
113         ['exclude', '../wtf/url'],
114         ['exclude', '../wtf/wince'],
115         ['exclude', '../wtf/wx'],
116         ['exclude', '../wtf/unicode/glib'],
117         ['exclude', '../wtf/unicode/qt4'],
118         ['exclude', '../wtf/unicode/wchar'],
119         # GLib/GTK, even though its name doesn't really indicate.
120         ['exclude', '/(gtk|glib|gobject)/.*\\.(cpp|h)$'],
121         ['exclude', '(Default|Gtk|Mac|None|Qt|Win|Wx|Efl)\\.(cpp|mm)$'],
122         ['exclude', 'wtf/OSRandomSource\\.cpp$'],
123         ['exclude', 'wtf/MainThread.cpp$'],
124         ['exclude', 'wtf/MetaAllocator\\.(cpp|h)$'],
125       ],
126       'direct_dependent_settings': {
127         'include_dirs': [
128           '../',
129           # FIXME: This is too broad, but is needed for runtime/JSExportMacros.h and yarr.
130           '../../JavaScriptCore',
131         ],
132         # Some warnings occur in JSC headers, so they must also be disabled
133         # in targets that use JSC.
134         'msvs_disabled_warnings': [
135           # Don't complain about calling specific versions of templatized
136           # functions (e.g. in RefPtrHashMap.h).
137           4344,
138           # Don't complain about using "this" in an initializer list
139           # (e.g. in StringImpl.h).
140           4355,
141           # Disable c4267 warnings until we fix size_t to int truncations.
142           4267,
143         ],
144       },
145       'export_dependent_settings': [
146         'wtf_config',
147         '<(chromium_src_dir)/third_party/icu/icu.gyp:icui18n',
148         '<(chromium_src_dir)/third_party/icu/icu.gyp:icuuc',
149       ],
150       # Disable c4267 warnings until we fix size_t to int truncations.
151       'msvs_disabled_warnings': [4127, 4355, 4510, 4512, 4610, 4706, 4068, 4267],
152       'conditions': [
153         ['OS=="win"', {
154           'sources/': [
155             ['exclude', 'ThreadIdentifierDataPthreads\\.(h|cpp)$'],
156             ['exclude', 'ThreadingPthreads\\.cpp$'],
157             ['include', 'Thread(ing|Specific)Win\\.cpp$'],
158             ['exclude', 'OSAllocatorPosix\\.cpp$'],
159             ['include', 'OSAllocatorWin\\.cpp$'],
160             ['include', 'win/OwnPtrWin\\.cpp$'],
161           ],
162           'include_dirs!': [
163             '<(SHARED_INTERMEDIATE_DIR)/webkit',
164           ],
165           'conditions': [
166             ['inside_chromium_build==1 and component=="shared_library"', {
167               # Chromium windows multi-dll build enables c++ exception and this
168               # causes wtf generates 4291 warning due to operator new/delete
169               # implementations. Disable the warning for chromium windows
170               # multi-dll build.
171               'msvs_disabled_warnings': [4291],
172               'direct_dependent_settings': {
173                 'msvs_disabled_warnings': [4291],
174               },
175             }],
176           ],
177         }],
178         ['OS!="mac"', {
179           'sources/': [
180             # mac is the only OS that uses WebKit's copy of TCMalloc.
181             ['exclude', 'wtf/TC.*\\.(cpp|h)$'],
182           ],
183         }],
184       ],
185     },
186   ]
187 }