| 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 |