20635d01cc77b89e8d03f110d56a81fa51bac980
[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 OS != "android" 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           # Controls wtf/FastMalloc
69           # FIXME: consider moving into config.h
70           'USE_SYSTEM_MALLOC=1',
71         ],
72         'conditions': [
73           ['OS=="win"', {
74             'defines': [
75               '__STD_C',
76               '_CRT_SECURE_NO_DEPRECATE',
77               '_SCL_SECURE_NO_DEPRECATE',
78               'CRASH=__debugbreak',
79             ],
80             'include_dirs': [
81               '../../JavaScriptCore/os-win32',
82             ],
83           }],
84           ['OS=="mac"', {
85             'defines': [
86               # Use USE_NEW_THEME on Mac.
87               'WTF_USE_NEW_THEME=1',
88             ],
89           }],
90           ['os_posix == 1 and OS != "mac"', {
91             'defines': [
92               'WTF_USE_PTHREADS=1',
93             ],
94           }],
95         ],
96       }
97     },
98     {
99       'target_name': 'newwtf',
100       'type': 'static_library',
101       'include_dirs': [
102         '../',
103         '../../JavaScriptCore', # FIXME: This is too broad, but matches the rules when wtf lived in JavaScriptCore.
104         '../wtf',
105         '../wtf/unicode',
106       ],
107       'dependencies': [
108           'wtf_config',
109           '<(chromium_src_dir)/third_party/icu/icu.gyp:icui18n',
110           '<(chromium_src_dir)/third_party/icu/icu.gyp:icuuc',
111       ],
112       'sources': [
113         '<@(wtf_privateheader_files)',
114         '<@(wtf_files)',
115       ],
116       'sources/': [
117         # FIXME: This is clearly not sustainable.
118         ['exclude', '../wtf/efl'],
119         ['exclude', '../wtf/gobject'],
120         ['exclude', '../wtf/gtk'],
121         ['exclude', '../wtf/mac'],
122         ['exclude', '../wtf/qt'],
123         ['exclude', '../wtf/url'],
124         ['exclude', '../wtf/wince'],
125         ['exclude', '../wtf/wx'],
126         ['exclude', '../wtf/unicode/wince'],
127         ['exclude', '../wtf/unicode/glib'],
128         ['exclude', '../wtf/unicode/qt4'],
129         # GLib/GTK, even though its name doesn't really indicate.
130         ['exclude', '/(gtk|glib|gobject)/.*\\.(cpp|h)$'],
131         ['exclude', '(Default|Gtk|Mac|None|Qt|Win|Wx|Efl|Symbian)\\.(cpp|mm)$'],
132         ['exclude', 'wtf/CurrentTime\\.cpp$'],
133         ['exclude', 'wtf/OSRandomSource\\.cpp$'],
134         ['exclude', 'wtf/MainThread.cpp$'],
135         ['exclude', 'wtf/TC.*\\.(cpp|h)$'],
136       ],
137       'direct_dependent_settings': {
138         'include_dirs': [
139           '../',
140           '../../JavaScriptCore',
141         ],
142         # Some warnings occur in JSC headers, so they must also be disabled
143         # in targets that use JSC.
144         'msvs_disabled_warnings': [
145           # Don't complain about calling specific versions of templatized
146           # functions (e.g. in RefPtrHashMap.h).
147           4344,
148           # Don't complain about using "this" in an initializer list
149           # (e.g. in StringImpl.h).
150           4355,
151         ],
152       },
153       'export_dependent_settings': [
154         'wtf_config',
155         '<(chromium_src_dir)/third_party/icu/icu.gyp:icui18n',
156         '<(chromium_src_dir)/third_party/icu/icu.gyp:icuuc',
157       ],
158       'msvs_disabled_warnings': [4127, 4355, 4510, 4512, 4610, 4706],
159       'conditions': [
160         ['OS=="win"', {
161           'sources/': [
162             ['exclude', 'ThreadIdentifierDataPthreads\\.(h|cpp)$'],
163             ['exclude', 'ThreadingPthreads\\.cpp$'],
164             ['include', 'Thread(ing|Specific)Win\\.cpp$'],
165             ['exclude', 'OSAllocatorPosix\\.cpp$'],
166             ['include', 'OSAllocatorWin\\.cpp$'],
167             ['include', 'win/OwnPtrWin\\.cpp$'],
168           ],
169           'include_dirs!': [
170             '<(SHARED_INTERMEDIATE_DIR)/webkit',
171           ],
172           'conditions': [
173             ['inside_chromium_build==1 and component=="shared_library"', {
174               # Chromium windows multi-dll build enables c++ exception and this
175               # causes wtf generates 4291 warning due to operator new/delete
176               # implementations. Disable the warning for chromium windows
177               # multi-dll build.
178               'msvs_disabled_warnings': [4291],
179               'direct_dependent_settings': {
180                 'msvs_disabled_warnings': [4291],
181               },
182             }],
183           ],
184         }],
185       ],
186     },
187   ]
188 }