2011-02-04 Sheriff Bot <webkit.review.bot@gmail.com>
[WebKit.git] / Source / JavaScriptCore / JavaScriptCore.gyp / JavaScriptCore.gyp
1 #
2 # Copyright (C) 2009 Google Inc. All rights reserved.
3
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are
6 # met:
7
8 #     * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 #     * Redistributions in binary form must reproduce the above
11 # copyright notice, this list of conditions and the following disclaimer
12 # in the documentation and/or other materials provided with the
13 # distribution.
14 #     * Neither the name of Google Inc. nor the names of its
15 # contributors may be used to endorse or promote products derived from
16 # this software without specific prior written permission.
17
18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #
30
31 {
32   'includes': [
33     # FIXME: Sense whether upstream or downstream build, and
34     # include the right features.gypi
35     '../../../Source/WebKit/chromium/features.gypi',
36     '../JavaScriptCore.gypi',
37   ],
38   'variables': {
39     # Location of the chromium src directory.
40     'conditions': [
41       ['inside_chromium_build==0', {
42         # Webkit is being built outside of the full chromium project.
43         'chromium_src_dir': '../../../Source/WebKit/chromium',
44       },{
45         # WebKit is checked out in src/chromium/third_party/WebKit
46         'chromium_src_dir': '../../../../..',
47       }],
48     ],
49   },
50   'targets': [
51     {
52       # This target sets up defines and includes that are required by WTF and
53       # its dependents.
54       'target_name': 'wtf_config',
55       'type': 'none',
56       'msvs_guid': '2E2D3301-2EC4-4C0F-B889-87073B30F673',
57       'direct_dependent_settings': {
58         'defines': [
59           # Import features_defines from features.gypi
60           '<@(feature_defines)',
61           
62           # Turns on #if PLATFORM(CHROMIUM)
63           'BUILDING_CHROMIUM__=1',
64           # Controls wtf/FastMalloc
65           # FIXME: consider moving into config.h
66           'USE_SYSTEM_MALLOC=1',
67         ],
68         'conditions': [
69           ['OS=="win"', {
70             'defines': [
71               '__STD_C',
72               '_CRT_SECURE_NO_DEPRECATE',
73               '_SCL_SECURE_NO_DEPRECATE',
74               'CRASH=__debugbreak',
75             ],
76             'include_dirs': [
77               '../os-win32',
78             ],
79           }],
80           ['OS=="mac"', {
81             'defines': [
82               # Use USE_NEW_THEME on Mac.
83               'WTF_USE_NEW_THEME=1',
84             ],
85           }],
86           ['OS=="linux" or OS=="freebsd"', {
87             'defines': [
88               'WTF_USE_PTHREADS=1',
89             ],
90           }],
91         ],
92       }
93     },
94     {
95       'target_name': 'wtf',
96       'type': '<(library)',
97       'msvs_guid': 'AA8A5A85-592B-4357-BC60-E0E91E026AF6',
98       'dependencies': [
99         'wtf_config',
100         '<(chromium_src_dir)/third_party/icu/icu.gyp:icui18n',
101         '<(chromium_src_dir)/third_party/icu/icu.gyp:icuuc',
102       ],
103       'include_dirs': [
104         '../',
105         '../wtf',
106         '../wtf/unicode',
107       ],
108       'sources': [
109         '<@(javascriptcore_files)',
110       ],
111       'sources/': [
112         # First exclude everything ...
113         ['exclude', '../'],
114         # ... Then include what we want.
115         ['include', '../wtf/'],
116         # GLib/GTK, even though its name doesn't really indicate.
117         ['exclude', '/(gtk|glib|gobject)/.*\\.(cpp|h)$'],
118         ['exclude', '(Default|Gtk|Mac|None|Qt|Win|Wx)\\.(cpp|mm)$'],
119         ['exclude', 'wtf/CurrentTime\\.cpp$'],
120         ['exclude', 'wtf/MainThread.cpp$'],
121         ['exclude', 'wtf/TC.*\\.(cpp|h)$'],
122       ],
123       'direct_dependent_settings': {
124         'include_dirs': [
125           '../',
126           '../wtf',
127         ],
128         # Some warnings occur in JSC headers, so they must also be disabled
129         # in targets that use JSC.
130         'msvs_disabled_warnings': [
131           # Don't complain about calling specific versions of templatized
132           # functions (e.g. in RefPtrHashMap.h).
133           4344,
134           # Don't complain about using "this" in an initializer list
135           # (e.g. in StringImpl.h).
136           4355,
137         ],
138       },
139       'export_dependent_settings': [
140         'wtf_config',
141         '<(chromium_src_dir)/third_party/icu/icu.gyp:icui18n',
142         '<(chromium_src_dir)/third_party/icu/icu.gyp:icuuc',
143       ],
144       'msvs_disabled_warnings': [4127, 4355, 4510, 4512, 4610, 4706],
145       'conditions': [
146         ['OS=="win"', {
147           'sources/': [
148             ['exclude', 'ThreadIdentifierDataPthreads\\.(h|cpp)$'],
149             ['exclude', 'ThreadingPthreads\\.cpp$'],
150             ['include', 'Thread(ing|Specific)Win\\.cpp$'],
151             ['exclude', 'OSAllocatorPosix\\.cpp$'],
152             ['include', 'OSAllocatorWin\\.cpp$']
153           ],
154           'include_dirs!': [
155             '<(SHARED_INTERMEDIATE_DIR)/webkit',
156           ],
157           'conditions': [
158             ['inside_chromium_build==1 and component=="shared_library"', {
159               # Chromium windows multi-dll build enables c++ exception and this
160               # causes wtf generates 4291 warning due to operator new/delete
161               # implementations. Disable the warning for chromium windows
162               # multi-dll build.
163               'msvs_disabled_warnings': [4291],
164               'direct_dependent_settings': {
165                 'msvs_disabled_warnings': [4291],
166               },
167             }],
168           ],
169         }],
170       ],
171     },
172     {
173       'target_name': 'pcre',
174       'type': '<(library)',
175       'dependencies': [
176         'wtf',
177       ],
178       'conditions': [
179         ['OS=="win"', {
180           'dependencies': ['<(chromium_src_dir)/build/win/system.gyp:cygwin'],
181         }],
182       ],
183       'msvs_guid': '49909552-0B0C-4C14-8CF6-DB8A2ADE0934',
184       'actions': [
185         {
186           'action_name': 'dftables',
187           'inputs': [
188             '../pcre/dftables',
189           ],
190           'outputs': [
191             '<(INTERMEDIATE_DIR)/chartables.c',
192           ],
193           'action': ['perl', '-w', '<@(_inputs)', '<@(_outputs)'],
194         },
195       ],
196       'include_dirs': [
197         '<(INTERMEDIATE_DIR)',
198       ],
199       'sources': [
200         '<@(javascriptcore_files)',
201       ],
202       'sources/': [
203         # First exclude everything ...
204         ['exclude', '../'],
205         # ... Then include what we want.
206         ['include', '../pcre/'],
207         # ucptable.cpp is #included by pcre_ucp_searchfunchs.cpp and is not
208         # intended to be compiled directly.
209         ['exclude', '../pcre/ucptable.cpp$'],
210       ],
211       'export_dependent_settings': [
212         'wtf',
213       ],
214     },
215   ], # targets
216 }