OLD | NEW |
| (Empty) |
1 # Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 import os.path | |
6 import re | |
7 | |
8 Import('env') | |
9 | |
10 webcore = env.Dir('$CHROME_SRC_DIR/third_party/WebKit/WebCore') | |
11 webcore_posix = webcore.abspath.replace('\\', '/') | |
12 | |
13 cygwin = env.Dir('$CYGWIN_DIR/bin') | |
14 cygwin_posix = cygwin.abspath.replace('\\', '/') | |
15 | |
16 pending = env.Dir('$CHROME_SRC_DIR/webkit/pending') | |
17 portroot = env.Dir('$CHROME_SRC_DIR/webkit/port') | |
18 webkit_build = env.Dir('$CHROME_SRC_DIR/webkit/build') | |
19 | |
20 | |
21 def PosixIncludes(env, prefix, files, suffix): | |
22 # This is basically a custom version of the _concat() function, | |
23 # which we need because the binding script needs posix style paths, | |
24 # even on windows, and _concat() doesn't make that easy to do... :-( | |
25 # | |
26 # Note that because we're not using the RDirs function that the | |
27 # normal _concat() call uses, this will only add the build | |
28 # directory paths, not the paths in the underlying source directory, | |
29 # to its list. | |
30 posix_files = [str(env.Dir(f).abspath).replace('\\', '/') for f in files] | |
31 combined = [prefix + f + suffix for f in posix_files] | |
32 return ' '.join(combined) | |
33 | |
34 | |
35 env = env.Clone( | |
36 WEBCORE = webcore, | |
37 PENDING = pending, | |
38 PORTROOT = portroot, | |
39 WEBKIT_BUILD = webkit_build, | |
40 | |
41 BINDINGS_SCRIPTS_DIR = '$WEBKIT_DIR/port/bindings/scripts', | |
42 BINDINGS_SCRIPT = '$BINDINGS_SCRIPTS_DIR/generate-bindings.pl', | |
43 | |
44 PERL_INCLUDE_PATH = ['$BINDINGS_SCRIPTS_DIR', | |
45 '$CHROME_SRC_DIR/third_party/WebKit/WebCore/bindings/sc
ripts'], | |
46 | |
47 FEATURE_DEFINES = [ | |
48 'ENABLE_CROSS_DOCUMENT_MESSAGING', | |
49 'ENABLE_XSLT', | |
50 'ENABLE_XPATH', | |
51 'ENABLE_SVG', | |
52 'ENABLE_SVG_ANIMATION', | |
53 'ENABLE_SVG_AS_IMAGE', | |
54 'ENABLE_SVG_FONTS', | |
55 'ENABLE_SVG_FOREIGN_OBJECT', | |
56 'ENABLE_SVG_USE', | |
57 ], | |
58 | |
59 SVG_FLAGS = [ | |
60 'ENABLE_SVG_ANIMATION=1', | |
61 'ENABLE_SVG_AS_IMAGE=1', | |
62 'ENABLE_SVG_FONTS=1', | |
63 'ENABLE_SVG_FOREIGN_OBJECT=1', | |
64 'ENABLE_SVG_USE=1', | |
65 ], | |
66 | |
67 BINDINGS_INCLUDE_PATH = [ | |
68 '$PENDING', | |
69 '$WEBCORE/css', | |
70 '$WEBCORE/dom', | |
71 '$WEBCORE/html', | |
72 '$WEBCORE/page', | |
73 '$WEBCORE/svg', | |
74 '$WEBCORE/xml', | |
75 ], | |
76 BINDINGS_INCLUDE_FLAG = '--include ', | |
77 BINDINGS_INCLUDE_SUFFIX = '', | |
78 _posix_includes = PosixIncludes, | |
79 _BINDINGS_INCLUDE_FLAGS = '${_posix_includes(__env__, ' + \ | |
80 'BINDINGS_INCLUDE_FLAG, ' + \ | |
81 'BINDINGS_INCLUDE_PATH, ' + \ | |
82 'BINDINGS_INCLUDE_SUFFIX)}', | |
83 ) | |
84 | |
85 env.PrependENVPath('PATH', cygwin_posix) | |
86 | |
87 | |
88 # When we haven't specified --verbose (aka brief_comstr), make the | |
89 # WebKit bindings building step output more brief to match the brief | |
90 # compile/link/etc. lines. | |
91 if env.GetOption('brief_comstr'): | |
92 env.SetDefault(BINDINGSCOMSTR='________Building bindings in $TARGET') | |
93 | |
94 bindings_perl_modules = env.Glob('$BINDINGS_SCRIPTS_DIR/*.pm') | |
95 | |
96 def BindingsEmitter(target, source, env): | |
97 source.append('$BINDINGS_SCRIPT') | |
98 try: | |
99 idl_contents = open(source[0].rfile().abspath, 'r').read() | |
100 except EnvironmentError: | |
101 return target, source | |
102 idl_contents = re.sub('//[^\\n]*\\n', '', idl_contents) | |
103 interfaces = re.findall('interface\\s*(?:\\[[^]]+\\])?\\s*' | |
104 '(\\w+)[^{]*[{]', idl_contents) | |
105 new_target = [] | |
106 for i in interfaces: | |
107 new_cpp = '$DERIVED_DIR/${BINDINGSPREFIX}' + i + '.cpp' | |
108 new_h = '$DERIVED_DIR/${BINDINGSPREFIX}' + i + '.h' | |
109 new_target.extend([new_cpp, new_h]) | |
110 env.Depends(new_cpp, bindings_perl_modules) | |
111 env.Depends(new_h, bindings_perl_modules) | |
112 return new_target, source | |
113 | |
114 env.Append( | |
115 BUILDERS = {'Bindings': Builder( | |
116 action = Action('$BINDINGSCOM', '$BINDINGSCOMSTR'), | |
117 src_suffix = '.idl', | |
118 emitter = BindingsEmitter, | |
119 )}, | |
120 ) | |
121 | |
122 env.Replace( | |
123 # TODO(bradnelson): fix ugly hack with one include! | |
124 BINDINGSCOM = '$PERL $_PERL_INCLUDE_FLAGS ' + \ | |
125 '${SOURCES[1].posix} ' + \ | |
126 '--defines "$FEATURE_DEFINES $BINDINGS_LANGUAGE" ' + \ | |
127 '--generator $BINDINGS_GENERATOR_ARG ' + \ | |
128 '$_BINDINGS_INCLUDE_FLAGS ' + \ | |
129 '--outputdir ${TARGET.dir} ' + \ | |
130 '${SOURCES[0].posix}', | |
131 ) | |
132 | |
133 if env.Bit('mac'): # Mac OS X | |
134 env['BINDINGSPREFIX'] = 'DOM' | |
135 env['BINDINGS_GENERATOR_ARG'] = 'ObjC' | |
136 env['BINDINGS_LANGUAGE'] = 'LANGUAGE_OBJECTIVE_C' | |
137 env.Append(BINDINGS_INCLUDE_PATH = [ 'bindings/js' ]) | |
138 elif False: | |
139 env['BINDINGSPREFIX'] = 'JS' | |
140 env['BINDINGS_GENERATOR_ARG'] = 'JS' | |
141 env['BINDINGS_LANGUAGE'] = 'LANGUAGE_JAVASCRIPT' | |
142 env.Append(BINDINGS_INCLUDE_PATH = [ 'bindings/js' ]) | |
143 elif True: | |
144 env['BINDINGSPREFIX'] = 'V8' | |
145 env['BINDINGS_GENERATOR_ARG'] = 'V8' | |
146 env['BINDINGS_LANGUAGE'] = 'LANGUAGE_JAVASCRIPT V8_BINDING' | |
147 env.Prepend(PERL_INCLUDE_PATH = [ '$PORTROOT/bindings/scripts' ]) | |
148 else: | |
149 print 'I am not going to generate bindings for you!' | |
150 | |
151 | |
152 idl_files = [ | |
153 'bindings/v8/UndetectableHTMLCollection.idl', | |
154 | |
155 'css/Counter.idl', | |
156 'css/CSSCharsetRule.idl', | |
157 'css/CSSFontFaceRule.idl', | |
158 'css/CSSImportRule.idl', | |
159 'css/CSSMediaRule.idl', | |
160 'css/CSSPageRule.idl', | |
161 'css/CSSPrimitiveValue.idl', | |
162 'css/CSSRule.idl', | |
163 'css/CSSRuleList.idl', | |
164 'css/CSSStyleDeclaration.idl', | |
165 'css/CSSStyleRule.idl', | |
166 'css/CSSStyleSheet.idl', | |
167 'css/CSSUnknownRule.idl', | |
168 'css/CSSValue.idl', | |
169 'css/CSSValueList.idl', | |
170 'css/CSSVariablesDeclaration.idl', | |
171 'css/CSSVariablesRule.idl', | |
172 'css/MediaList.idl', | |
173 'css/Rect.idl', | |
174 'css/RGBColor.idl', | |
175 'css/StyleSheet.idl', | |
176 'css/StyleSheetList.idl', | |
177 'css/WebKitCSSKeyframeRule.idl', | |
178 'css/WebKitCSSKeyframesRule.idl', | |
179 'css/WebKitCSSMatrix.idl', | |
180 'css/WebKitCSSTransformValue.idl', | |
181 | |
182 'dom/Attr.idl', | |
183 'dom/CDATASection.idl', | |
184 'dom/CharacterData.idl', | |
185 'dom/ClientRect.idl', | |
186 'dom/ClientRectList.idl', | |
187 'dom/Clipboard.idl', | |
188 'dom/Comment.idl', | |
189 'dom/Document.idl', | |
190 'dom/DocumentFragment.idl', | |
191 'dom/DocumentType.idl', | |
192 'dom/DOMCoreException.idl', | |
193 'dom/DOMImplementation.idl', | |
194 'dom/DOMStringList.idl', | |
195 'dom/Element.idl', | |
196 'dom/Entity.idl', | |
197 'dom/EntityReference.idl', | |
198 'dom/Event.idl', | |
199 'dom/EventException.idl', | |
200 'dom/EventListener.idl', | |
201 'dom/EventTarget.idl', | |
202 'dom/KeyboardEvent.idl', | |
203 'dom/MessageChannel.idl', | |
204 'dom/MessageEvent.idl', | |
205 'dom/MessagePort.idl', | |
206 'dom/MouseEvent.idl', | |
207 'dom/MutationEvent.idl', | |
208 'dom/NamedNodeMap.idl', | |
209 'dom/Node.idl', | |
210 'dom/NodeFilter.idl', | |
211 'dom/NodeIterator.idl', | |
212 'dom/NodeList.idl', | |
213 'dom/Notation.idl', | |
214 'dom/OverflowEvent.idl', | |
215 'dom/ProcessingInstruction.idl', | |
216 'dom/ProgressEvent.idl', | |
217 'dom/Range.idl', | |
218 'dom/RangeException.idl', | |
219 'dom/Text.idl', | |
220 'dom/TextEvent.idl', | |
221 'dom/TreeWalker.idl', | |
222 'dom/UIEvent.idl', | |
223 'dom/WebKitAnimationEvent.idl', | |
224 'dom/WebKitTransitionEvent.idl', | |
225 'dom/WheelEvent.idl', | |
226 | |
227 'html/CanvasGradient.idl', | |
228 'html/CanvasPattern.idl', | |
229 'html/CanvasPixelArray.idl', | |
230 'html/CanvasRenderingContext2D.idl', | |
231 'html/File.idl', | |
232 'html/FileList.idl', | |
233 'html/HTMLAnchorElement.idl', | |
234 'html/HTMLAppletElement.idl', | |
235 'html/HTMLAreaElement.idl', | |
236 'html/HTMLAudioElement.idl', | |
237 'html/HTMLBaseElement.idl', | |
238 'html/HTMLBaseFontElement.idl', | |
239 'html/HTMLBlockquoteElement.idl', | |
240 'html/HTMLBodyElement.idl', | |
241 'html/HTMLBRElement.idl', | |
242 'html/HTMLButtonElement.idl', | |
243 'html/HTMLCanvasElement.idl', | |
244 'html/HTMLCollection.idl', | |
245 'html/HTMLDirectoryElement.idl', | |
246 'html/HTMLDivElement.idl', | |
247 'html/HTMLDListElement.idl', | |
248 'html/HTMLDocument.idl', | |
249 'html/HTMLElement.idl', | |
250 'html/HTMLEmbedElement.idl', | |
251 'html/HTMLFieldSetElement.idl', | |
252 'html/HTMLFontElement.idl', | |
253 'html/HTMLFormElement.idl', | |
254 'html/HTMLFrameElement.idl', | |
255 'html/HTMLFrameSetElement.idl', | |
256 'html/HTMLHeadElement.idl', | |
257 'html/HTMLHeadingElement.idl', | |
258 'html/HTMLHRElement.idl', | |
259 'html/HTMLHtmlElement.idl', | |
260 'html/HTMLIFrameElement.idl', | |
261 'html/HTMLImageElement.idl', | |
262 'html/HTMLInputElement.idl', | |
263 'html/HTMLIsIndexElement.idl', | |
264 'html/HTMLLabelElement.idl', | |
265 'html/HTMLLegendElement.idl', | |
266 'html/HTMLLIElement.idl', | |
267 'html/HTMLLinkElement.idl', | |
268 'html/HTMLMapElement.idl', | |
269 'html/HTMLMarqueeElement.idl', | |
270 'html/HTMLMediaElement.idl', | |
271 'html/HTMLMenuElement.idl', | |
272 'html/HTMLMetaElement.idl', | |
273 'html/HTMLModElement.idl', | |
274 'html/HTMLObjectElement.idl', | |
275 'html/HTMLOListElement.idl', | |
276 'html/HTMLOptGroupElement.idl', | |
277 'html/HTMLOptionElement.idl', | |
278 'html/HTMLOptionsCollection.idl', | |
279 'html/HTMLParagraphElement.idl', | |
280 'html/HTMLParamElement.idl', | |
281 'html/HTMLPreElement.idl', | |
282 'html/HTMLQuoteElement.idl', | |
283 'html/HTMLScriptElement.idl', | |
284 'html/HTMLSelectElement.idl', | |
285 'html/HTMLSourceElement.idl', | |
286 'html/HTMLStyleElement.idl', | |
287 'html/HTMLTableCaptionElement.idl', | |
288 'html/HTMLTableCellElement.idl', | |
289 'html/HTMLTableColElement.idl', | |
290 'html/HTMLTableElement.idl', | |
291 'html/HTMLTableRowElement.idl', | |
292 'html/HTMLTableSectionElement.idl', | |
293 'html/HTMLTextAreaElement.idl', | |
294 'html/HTMLTitleElement.idl', | |
295 'html/HTMLUListElement.idl', | |
296 'html/HTMLVideoElement.idl', | |
297 'html/ImageData.idl', | |
298 'html/MediaError.idl', | |
299 'html/TextMetrics.idl', | |
300 'html/TimeRanges.idl', | |
301 'html/VoidCallback.idl', | |
302 | |
303 # 'loader/appcache/DOMApplicationCache.idl', | |
304 | |
305 'page/AbstractView.idl', | |
306 'page/BarInfo.idl', | |
307 'page/Console.idl', | |
308 'page/DOMSelection.idl', | |
309 'page/DOMWindow.idl', | |
310 'page/History.idl', | |
311 'page/Location.idl', | |
312 'page/Navigator.idl', | |
313 'page/Screen.idl', | |
314 'page/WebKitPoint.idl', | |
315 'page/WorkerNavigator.idl', | |
316 | |
317 'inspector/InspectorController.idl', | |
318 | |
319 'plugins/MimeTypeArray.idl', | |
320 'plugins/MimeType.idl', | |
321 'plugins/PluginArray.idl', | |
322 'plugins/Plugin.idl', | |
323 | |
324 'storage/Database.idl', | |
325 'storage/SQLError.idl', | |
326 'storage/SQLResultSet.idl', | |
327 'storage/SQLResultSetRowList.idl', | |
328 'storage/SQLTransaction.idl', | |
329 | |
330 'svg/ElementTimeControl.idl', | |
331 'svg/SVGAElement.idl', | |
332 'svg/SVGAltGlyphElement.idl', | |
333 'svg/SVGAngle.idl', | |
334 'svg/SVGAnimateColorElement.idl', | |
335 'svg/SVGAnimatedAngle.idl', | |
336 'svg/SVGAnimatedBoolean.idl', | |
337 'svg/SVGAnimatedEnumeration.idl', | |
338 'svg/SVGAnimatedInteger.idl', | |
339 'svg/SVGAnimatedLength.idl', | |
340 'svg/SVGAnimatedLengthList.idl', | |
341 'svg/SVGAnimatedNumber.idl', | |
342 'svg/SVGAnimatedNumberList.idl', | |
343 'svg/SVGAnimatedPathData.idl', | |
344 'svg/SVGAnimatedPoints.idl', | |
345 'svg/SVGAnimatedPreserveAspectRatio.idl', | |
346 'svg/SVGAnimatedRect.idl', | |
347 'svg/SVGAnimatedString.idl', | |
348 'svg/SVGAnimatedTransformList.idl', | |
349 'svg/SVGAnimateElement.idl', | |
350 'svg/SVGAnimateTransformElement.idl', | |
351 'svg/SVGAnimationElement.idl', | |
352 'svg/SVGCircleElement.idl', | |
353 'svg/SVGClipPathElement.idl', | |
354 'svg/SVGColor.idl', | |
355 'svg/SVGComponentTransferFunctionElement.idl', | |
356 'svg/SVGCursorElement.idl', | |
357 'svg/SVGDefinitionSrcElement.idl', | |
358 'svg/SVGDefsElement.idl', | |
359 'svg/SVGDescElement.idl', | |
360 'svg/SVGDocument.idl', | |
361 'svg/SVGElement.idl', | |
362 'svg/SVGElementInstance.idl', | |
363 'svg/SVGElementInstanceList.idl', | |
364 'svg/SVGEllipseElement.idl', | |
365 'svg/SVGException.idl', | |
366 'svg/SVGExternalResourcesRequired.idl', | |
367 'svg/SVGFEBlendElement.idl', | |
368 'svg/SVGFEColorMatrixElement.idl', | |
369 'svg/SVGFEComponentTransferElement.idl', | |
370 'svg/SVGFECompositeElement.idl', | |
371 'svg/SVGFEDiffuseLightingElement.idl', | |
372 'svg/SVGFEDisplacementMapElement.idl', | |
373 'svg/SVGFEDistantLightElement.idl', | |
374 'svg/SVGFEFloodElement.idl', | |
375 'svg/SVGFEFuncAElement.idl', | |
376 'svg/SVGFEFuncBElement.idl', | |
377 'svg/SVGFEFuncGElement.idl', | |
378 'svg/SVGFEFuncRElement.idl', | |
379 'svg/SVGFEGaussianBlurElement.idl', | |
380 'svg/SVGFEImageElement.idl', | |
381 'svg/SVGFEMergeElement.idl', | |
382 'svg/SVGFEMergeNodeElement.idl', | |
383 'svg/SVGFEOffsetElement.idl', | |
384 'svg/SVGFEPointLightElement.idl', | |
385 'svg/SVGFESpecularLightingElement.idl', | |
386 'svg/SVGFESpotLightElement.idl', | |
387 'svg/SVGFETileElement.idl', | |
388 'svg/SVGFETurbulenceElement.idl', | |
389 'svg/SVGFilterElement.idl', | |
390 'svg/SVGFilterPrimitiveStandardAttributes.idl', | |
391 'svg/SVGFitToViewBox.idl', | |
392 'svg/SVGFontElement.idl', | |
393 'svg/SVGFontFaceElement.idl', | |
394 'svg/SVGFontFaceFormatElement.idl', | |
395 'svg/SVGFontFaceNameElement.idl', | |
396 'svg/SVGFontFaceSrcElement.idl', | |
397 'svg/SVGFontFaceUriElement.idl', | |
398 'svg/SVGForeignObjectElement.idl', | |
399 'svg/SVGGElement.idl', | |
400 'svg/SVGGlyphElement.idl', | |
401 'svg/SVGGradientElement.idl', | |
402 'svg/SVGHKernElement.idl', | |
403 'svg/SVGImageElement.idl', | |
404 'svg/SVGLangSpace.idl', | |
405 'svg/SVGLength.idl', | |
406 'svg/SVGLengthList.idl', | |
407 'svg/SVGLinearGradientElement.idl', | |
408 'svg/SVGLineElement.idl', | |
409 'svg/SVGLocatable.idl', | |
410 'svg/SVGMarkerElement.idl', | |
411 'svg/SVGMaskElement.idl', | |
412 'svg/SVGMatrix.idl', | |
413 'svg/SVGMetadataElement.idl', | |
414 'svg/SVGMissingGlyphElement.idl', | |
415 'svg/SVGNumber.idl', | |
416 'svg/SVGNumberList.idl', | |
417 'svg/SVGPaint.idl', | |
418 'svg/SVGPathElement.idl', | |
419 'svg/SVGPathSeg.idl', | |
420 'svg/SVGPathSegArcAbs.idl', | |
421 'svg/SVGPathSegArcRel.idl', | |
422 'svg/SVGPathSegClosePath.idl', | |
423 'svg/SVGPathSegCurvetoCubicAbs.idl', | |
424 'svg/SVGPathSegCurvetoCubicRel.idl', | |
425 'svg/SVGPathSegCurvetoCubicSmoothAbs.idl', | |
426 'svg/SVGPathSegCurvetoCubicSmoothRel.idl', | |
427 'svg/SVGPathSegCurvetoQuadraticAbs.idl', | |
428 'svg/SVGPathSegCurvetoQuadraticRel.idl', | |
429 'svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl', | |
430 'svg/SVGPathSegCurvetoQuadraticSmoothRel.idl', | |
431 'svg/SVGPathSegLinetoAbs.idl', | |
432 'svg/SVGPathSegLinetoHorizontalAbs.idl', | |
433 'svg/SVGPathSegLinetoHorizontalRel.idl', | |
434 'svg/SVGPathSegLinetoRel.idl', | |
435 'svg/SVGPathSegLinetoVerticalAbs.idl', | |
436 'svg/SVGPathSegLinetoVerticalRel.idl', | |
437 'svg/SVGPathSegList.idl', | |
438 'svg/SVGPathSegMovetoAbs.idl', | |
439 'svg/SVGPathSegMovetoRel.idl', | |
440 'svg/SVGPatternElement.idl', | |
441 'svg/SVGPoint.idl', | |
442 'svg/SVGPointList.idl', | |
443 'svg/SVGPolygonElement.idl', | |
444 'svg/SVGPolylineElement.idl', | |
445 'svg/SVGPreserveAspectRatio.idl', | |
446 'svg/SVGRadialGradientElement.idl', | |
447 'svg/SVGRect.idl', | |
448 'svg/SVGRectElement.idl', | |
449 'svg/SVGRenderingIntent.idl', | |
450 'svg/SVGScriptElement.idl', | |
451 'svg/SVGSetElement.idl', | |
452 'svg/SVGStopElement.idl', | |
453 'svg/SVGStringList.idl', | |
454 'svg/SVGStylable.idl', | |
455 'svg/SVGStyleElement.idl', | |
456 'svg/SVGSVGElement.idl', | |
457 'svg/SVGSwitchElement.idl', | |
458 'svg/SVGSymbolElement.idl', | |
459 'svg/SVGTests.idl', | |
460 'svg/SVGTextContentElement.idl', | |
461 'svg/SVGTextElement.idl', | |
462 'svg/SVGTextPathElement.idl', | |
463 'svg/SVGTextPositioningElement.idl', | |
464 'svg/SVGTitleElement.idl', | |
465 'svg/SVGTransform.idl', | |
466 'svg/SVGTransformable.idl', | |
467 'svg/SVGTransformList.idl', | |
468 'svg/SVGTRefElement.idl', | |
469 'svg/SVGTSpanElement.idl', | |
470 'svg/SVGUnitTypes.idl', | |
471 'svg/SVGURIReference.idl', | |
472 'svg/SVGUseElement.idl', | |
473 'svg/SVGViewElement.idl', | |
474 'svg/SVGViewSpec.idl', | |
475 'svg/SVGZoomAndPan.idl', | |
476 'svg/SVGZoomEvent.idl', | |
477 | |
478 'workers/Worker.idl', | |
479 'workers/WorkerContext.idl', | |
480 'workers/WorkerLocation.idl', | |
481 | |
482 'xml/DOMParser.idl', | |
483 'xml/DOMParser.idl', | |
484 'xml/XMLHttpRequest.idl', | |
485 'xml/XMLHttpRequestException.idl', | |
486 'xml/XMLHttpRequestProgressEvent.idl', | |
487 'xml/XMLHttpRequestUpload.idl', | |
488 'xml/XMLSerializer.idl', | |
489 'xml/XPathEvaluator.idl', | |
490 'xml/XPathException.idl', | |
491 'xml/XPathExpression.idl', | |
492 'xml/XPathNSResolver.idl', | |
493 'xml/XPathResult.idl', | |
494 'xml/XSLTProcessor.idl', | |
495 ] | |
496 | |
497 for name in idl_files: | |
498 env.Bindings('$WEBKIT_DIR/port/' + name) | |
499 | |
500 | |
501 # copy over some files | |
502 # TODO(eroman): can probably get rid of this. | |
503 i = env.Install('$SHARED_DIR', []) | |
504 env.Alias('webkit', i) | |
505 | |
506 # HTML tag and attribute names | |
507 # If we add ENABLE_ flags via HTML_FLAGS, we need to pass in | |
508 # --extraDefines $HTML_FLAGS. | |
509 env.Command(['$DERIVED_DIR/HTMLNames.cpp', | |
510 '$DERIVED_DIR/HTMLNames.h', | |
511 '$DERIVED_DIR/HTMLElementFactory.cpp', | |
512 '$DERIVED_DIR/HTMLElementFactory.h'], | |
513 ['$PORT_DIR/dom/make_names.pl', | |
514 '$PORT_DIR/html/HTMLTagNames.in', | |
515 '$PORT_DIR/html/HTMLAttributeNames.in'], | |
516 '$PERL $_PERL_INCLUDE_FLAGS ${SOURCES[0].posix} ' | |
517 '--tags ${SOURCES[1].posix} ' | |
518 '--attrs ${SOURCES[2].posix} ' | |
519 '--factory ' | |
520 '--wrapperFactory ' | |
521 '--outputDir $DERIVED_DIR') | |
522 | |
523 env.Command(['$DERIVED_DIR/XMLNames.cpp', | |
524 '$DERIVED_DIR/XMLNames.h'], | |
525 ['$PORT_DIR/dom/make_names.pl', | |
526 '$PORT_DIR/xml/xmlattrs.in'], | |
527 '$PERL $_PERL_INCLUDE_FLAGS ${SOURCES[0].posix} ' | |
528 '--attrs ${SOURCES[1].posix} ' | |
529 '--outputDir $DERIVED_DIR') | |
530 | |
531 env.Command(['$DERIVED_DIR/SVGElementFactory.cpp', | |
532 '$DERIVED_DIR/SVGElementFactory.h', | |
533 '$DERIVED_DIR/SVGNames.cpp', | |
534 '$DERIVED_DIR/SVGNames.h'], | |
535 ['$PORT_DIR/dom/make_names.pl', | |
536 '$PORT_DIR/svg/svgtags.in', | |
537 '$PORT_DIR/svg/svgattrs.in'], | |
538 '$PERL $_PERL_INCLUDE_FLAGS ${SOURCES[0].posix} ' | |
539 '--tags ${SOURCES[1].posix} ' | |
540 '--attrs ${SOURCES[2].posix} ' | |
541 '--extraDefines "$SVG_FLAGS" ' | |
542 '--factory ' | |
543 '--wrapperFactory ' | |
544 '--outputDir $DERIVED_DIR') | |
545 | |
546 env.Command(['$DERIVED_DIR/XLinkNames.cpp', | |
547 '$DERIVED_DIR/XLinkNames.h'], | |
548 ['$PORT_DIR/dom/make_names.pl', | |
549 '$PORT_DIR/svg/xlinkattrs.in'], | |
550 '$PERL $_PERL_INCLUDE_FLAGS ${SOURCES[0].posix} ' | |
551 '--attrs ${SOURCES[1].posix} ' | |
552 '--outputDir $DERIVED_DIR') | |
553 | |
554 # Add SVG Symbols to the WebCore exported symbols file | |
555 # TODO(bradnelson): fix this | |
556 #WebCore.exp : WebCore.base.exp WebCore.SVG.exp | |
557 # cat $^ > $@ | |
558 | |
559 def cat_files(target, source, env): | |
560 fout = open(str(target[0]), "w") | |
561 for src in source: | |
562 fin = open(str(src)) | |
563 fout.writelines(fin.readlines()) | |
564 fin.close() | |
565 fout.close() | |
566 | |
567 env.Command(['$DERIVED_DIR/UserAgentStyleSheets.h', | |
568 '$DERIVED_DIR/UserAgentStyleSheetsData.cpp'], | |
569 ['$PORT_DIR/css/make-css-file-arrays.pl', | |
570 '$PORT_DIR/css/view-source.css', | |
571 '$PORT_DIR/css/svg.css', | |
572 '$PORT_DIR/css/html4.css', | |
573 '$PORT_DIR/css/quirks.css', | |
574 '$PORT_DIR/css/themeChromiumWin.css', | |
575 '$PORT_DIR/css/themeWinQuirks.css'], | |
576 '$PERL ${SOURCES[0].posix} ${TARGETS.posix} ${SOURCES[1:].posix}') | |
577 | |
578 def create_h_wrapper(target, source, env): | |
579 """ | |
580 Create a *.h file by surrounding the contents of a | |
581 yacc-generated *.hpp with a #ifndef-#define-#endif guard. | |
582 """ | |
583 t = str(target[1]) | |
584 fp = open(t, 'w') | |
585 define = os.path.splitext(os.path.split(t)[1])[0] | |
586 fp.write('#ifndef %s_h\n' % define) | |
587 fp.write('#define %s_h\n' % define) | |
588 fp.write(open(t + 'pp', 'r').read()) | |
589 fp.write('#endif // %s_h\n' % define) | |
590 | |
591 # TODO(sgk): make this a real pseudo-Builder | |
592 def BuildYacc(env, dir, name, file): | |
593 yacc_env = env.Clone() | |
594 yacc_env['YACC'] = env.Detect('bison') or 'yacc' | |
595 yacc_env.Command(['$DERIVED_DIR/%s.cpp' % file, | |
596 '$DERIVED_DIR/%s.h' % file], | |
597 ['$PORT_DIR/%s/%s.y' % (dir, file)], | |
598 ['$YACC -d -p %s ${SOURCES[0].posix} ' % name + | |
599 '-o ${TARGET.posix}', | |
600 Action(create_h_wrapper), | |
601 Delete('${TARGETS[1]}pp')]) | |
602 | |
603 BuildYacc(env, 'xml', 'xpathyy', 'XPathGrammar') | |
604 BuildYacc(env, 'css', 'cssyy', 'CSSGrammar') | |
605 | |
606 # TODO(bradnelson): need to add in error checking | |
607 | |
608 env.Command('$PORT_DIR/SVGCSSValueKeywords.in', | |
609 '$PORT_DIR/css/SVGCSSValueKeywords.in', | |
610 '$PERL -ne "print lc" $SOURCES > $TARGET') | |
611 | |
612 env.Command('$PORT_DIR/CSSValueKeywords.in', | |
613 ['$PORT_DIR/css/CSSValueKeywords.in', | |
614 '$PORT_DIR/css/SVGCSSValueKeywords.in'], | |
615 '$PERL -ne "print lc" $SOURCES > $TARGET') | |
616 | |
617 env.Command('$PORT_DIR/CSSPropertyNames.in', | |
618 ['$PORT_DIR/css/CSSPropertyNames.in', | |
619 '$PORT_DIR/css/SVGCSSPropertyNames.in'], | |
620 '$PERL -ne "print lc" $SOURCES > $TARGET') | |
621 | |
622 env.Command(['$DERIVED_DIR/CSSValueKeywords.c', | |
623 '$DERIVED_DIR/CSSValueKeywords.h'], | |
624 ['$PORT_DIR/css/makevalues.pl', | |
625 '$PORT_DIR/CSSValueKeywords.in'], | |
626 ['cd ${SOURCES[1].dir} && $PERL ${str(SOURCES[0].abspath).replace("\
\\\", "/")}', | |
627 Move('${TARGETS[0]}', '${SOURCES[1].dir}/${TARGETS[0].file}'), | |
628 Move('${TARGETS[1]}', '${SOURCES[1].dir}/${TARGETS[1].file}'), | |
629 ]) | |
630 | |
631 env.Command(['$DERIVED_DIR/CSSPropertyNames.cpp', | |
632 '$DERIVED_DIR/CSSPropertyNames.h'], | |
633 ['$PORT_DIR/css/makeprop.pl', | |
634 '$PORT_DIR/CSSPropertyNames.in'], | |
635 ['cd ${SOURCES[1].dir} && $PERL ${str(SOURCES[0].abspath).replace("\
\\\", "/")}', | |
636 Move('${TARGETS[0]}', '${SOURCES[1].dir}/${TARGETS[0].file}'), | |
637 Move('${TARGETS[1]}', '${SOURCES[1].dir}/${TARGETS[1].file}'), | |
638 ]) | |
639 | |
640 | |
641 # DOCTYPE strings | |
642 env.Command('$DERIVED_DIR/DocTypeStrings.cpp', | |
643 '$PORT_DIR/html/DocTypeStrings.gperf', | |
644 'gperf -CEot -L ANSI-C -k "*" -N findDoctypeEntry -F ' + \ | |
645 ',PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards ' + \ | |
646 '$SOURCE > $TARGET') | |
647 | |
648 # color names | |
649 env.Command('$DERIVED_DIR/ColorData.c', | |
650 '$PORT_DIR/platform/ColorData.gperf', | |
651 'gperf -CDEot -L ANSI-C -k "*" -N findColor -D -s 2 ' + \ | |
652 '$SOURCE > $TARGET') | |
653 | |
654 # HTML entity names | |
655 env.Command('$DERIVED_DIR/HTMLEntityNames.c', | |
656 '$PORT_DIR/html/HTMLEntityNames.gperf', | |
657 'gperf -a -L ANSI-C -C -G -c -o -t -k "*" -N findEntity ' + \ | |
658 '-D -s 2 $SOURCE > $TARGET') | |
659 | |
660 # CSS tokenizer | |
661 env.Command('$DERIVED_DIR/tokenizer.cpp', | |
662 ['$PORT_DIR/css/tokenizer.flex', | |
663 '$PORT_DIR/css/maketokenizer'], | |
664 'flex --nowarn -t $SOURCE | perl ${SOURCES[1]} > $TARGET') | |
OLD | NEW |