2010-08-12 Adam Barth <abarth@webkit.org>
[WebKit-https.git] / WebCore / DerivedSources.make
1 # Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
2 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> 
3 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au>
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 #
9 # 1.  Redistributions of source code must retain the above copyright
10 #     notice, this list of conditions and the following disclaimer. 
11 # 2.  Redistributions in binary form must reproduce the above copyright
12 #     notice, this list of conditions and the following disclaimer in the
13 #     documentation and/or other materials provided with the distribution. 
14 # 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15 #     its contributors may be used to endorse or promote products derived
16 #     from this software without specific prior written permission. 
17 #
18 # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 VPATH = \
30     $(WebCore) \
31     $(WebCore)/bindings/generic \
32     $(WebCore)/bindings/js \
33     $(WebCore)/bindings/objc \
34     $(WebCore)/css \
35     $(WebCore)/dom \
36     $(WebCore)/html \
37     $(WebCore)/html/canvas \
38     $(WebCore)/inspector \
39     $(WebCore)/loader/appcache \
40     $(WebCore)/notifications \
41     $(WebCore)/page \
42     $(WebCore)/plugins \
43     $(WebCore)/storage \
44     $(WebCore)/xml \
45     $(WebCore)/wml \
46     $(WebCore)/workers \
47     $(WebCore)/svg \
48     $(WebCore)/websockets \
49 #
50
51 DOM_CLASSES = \
52     AbstractView \
53     AbstractWorker \
54     Attr \
55     BarInfo \
56     BeforeLoadEvent \
57     BeforeProcessEvent \
58     Blob \
59     BlobBuilder \
60     CDATASection \
61     CSSCharsetRule \
62     CSSFontFaceRule \
63     CSSImportRule \
64     CSSMediaRule \
65     CSSPageRule \
66     CSSPrimitiveValue \
67     CSSRule \
68     CSSRuleList \
69     CSSStyleDeclaration \
70     CSSStyleRule \
71     CSSStyleSheet \
72     CSSUnknownRule \
73     CSSValue \
74     CSSValueList \
75     CSSVariablesRule \
76     CSSVariablesDeclaration \
77     WebGLActiveInfo \
78     ArrayBufferView \
79     ArrayBuffer \
80     WebGLBuffer \
81     Int8Array \
82     WebGLContextAttributes \
83     Float32Array \
84     WebGLFramebuffer \
85     CanvasGradient \
86     Int32Array \
87     CanvasPattern \
88     WebGLProgram \
89     WebGLRenderbuffer \
90     CanvasRenderingContext \
91     CanvasRenderingContext2D \
92     WebGLRenderingContext \
93     WebGLShader \
94     Int16Array \
95     WebGLTexture \
96     WebGLUniformLocation \
97     Uint8Array \
98     Uint32Array \
99     Uint16Array \
100     CharacterData \
101     ClientRect \
102     ClientRectList \
103     Clipboard \
104     Comment \
105     CompositionEvent \
106     Console \
107     Coordinates \
108     Counter \
109     CustomEvent \
110     DataGridColumn \
111     DataGridColumnList \
112     DedicatedWorkerContext \
113     DOMApplicationCache \
114     DOMCoreException \
115     DOMFileSystem \
116     DOMFormData \
117     DOMImplementation \
118     DOMMimeType \
119     DOMMimeTypeArray \
120     DOMParser \
121     DOMPlugin \
122     DOMPluginArray \
123     DOMSelection \
124     DOMStringList \
125     DOMStringMap \
126     DOMWindow \
127     Database \
128     DatabaseCallback \
129     DatabaseSync \
130     DeviceMotionEvent \
131     DeviceOrientationEvent \
132     Document \
133     DocumentFragment \
134     DocumentType \
135     Element \
136     ElementTimeControl \
137     Entity \
138     EntityReference \
139     Entry \
140     EntryCallback \
141     ErrorCallback \
142     ErrorEvent \
143     Event \
144     EventException \
145     EventListener \
146     EventSource \
147     EventTarget \
148     File \
149     FileError \
150     FileList \
151     FileReader \
152     FileSystemCallback \
153     Flags \
154     Geolocation \
155     Geoposition \
156     HTMLAllCollection \
157     HTMLAnchorElement \
158     HTMLAppletElement \
159     HTMLAreaElement \
160     HTMLAudioElement \
161     HTMLBRElement \
162     HTMLBaseElement \
163     HTMLBaseFontElement \
164     HTMLBlockquoteElement \
165     HTMLBodyElement \
166     HTMLButtonElement \
167     HTMLCanvasElement \
168     HTMLCollection \
169     HTMLDataGridElement \
170     HTMLDataGridCellElement \
171     HTMLDataGridColElement \
172     HTMLDataGridRowElement \
173     HTMLDataListElement \
174     HTMLDListElement \
175     HTMLDirectoryElement \
176     HTMLDivElement \
177     HTMLDocument \
178     HTMLElement \
179     HTMLEmbedElement \
180     HTMLFieldSetElement \
181     HTMLFontElement \
182     HTMLFormElement \
183     HTMLFrameElement \
184     HTMLFrameSetElement \
185     HTMLHRElement \
186     HTMLHeadElement \
187     HTMLHeadingElement \
188     HTMLHtmlElement \
189     HTMLIFrameElement \
190     HTMLImageElement \
191     HTMLInputElement \
192     HTMLIsIndexElement \
193     HTMLLIElement \
194     HTMLLabelElement \
195     HTMLLegendElement \
196     HTMLLinkElement \
197     HTMLMapElement \
198     HTMLMarqueeElement \
199     HTMLMediaElement \
200     HTMLMenuElement \
201     HTMLMetaElement \
202     HTMLMeterElement \
203     HTMLModElement \
204     HTMLOListElement \
205     HTMLObjectElement \
206     HTMLOptGroupElement \
207     HTMLOptionElement \
208     HTMLOptionsCollection \
209     HTMLParagraphElement \
210     HTMLParamElement \
211     HTMLPreElement \
212     HTMLProgressElement \
213     HTMLQuoteElement \
214     HTMLScriptElement \
215     HTMLSelectElement \
216     HTMLSourceElement \
217     HTMLStyleElement \
218     HTMLTableCaptionElement \
219     HTMLTableCellElement \
220     HTMLTableColElement \
221     HTMLTableElement \
222     HTMLTableRowElement \
223     HTMLTableSectionElement \
224     HTMLTextAreaElement \
225     HTMLTitleElement \
226     HTMLUListElement \
227     HTMLVideoElement \
228     History \
229     IDBAny \
230     IDBCursor \
231     IDBDatabaseError \
232     IDBDatabaseException \
233     IDBDatabase \
234     IDBErrorEvent \
235     IDBEvent \
236     IDBFactory \
237     IDBIndex \
238     IDBKey \
239     IDBKeyRange \
240     IDBObjectStore \
241     IDBRequest \
242     IDBSuccessEvent \
243     IDBTransaction \
244     ImageData \
245     InjectedScriptHost \
246     InspectorFrontendHost \
247     KeyboardEvent \
248     Location \
249     MediaError \
250     MediaList \
251     MemoryInfo \
252     MessageChannel \
253     MessageEvent \
254     MessagePort \
255     Metadata \
256     MetadataCallback \
257     MouseEvent \
258     MutationEvent \
259     NamedNodeMap \
260     Navigation \
261     Navigator \
262     Node \
263     NodeFilter \
264     NodeIterator \
265     NodeList \
266     Notation \
267     Notification \
268     NotificationCenter \
269     OverflowEvent \
270     PageTransitionEvent \
271     Performance \
272     PopStateEvent \
273     PositionError \
274     ProcessingInstruction \
275     ProgressEvent \
276     RGBColor \
277     Range \
278     RangeException \
279     Rect \
280     SharedWorker \
281     SharedWorkerContext \
282     ScriptProfile \
283     ScriptProfileNode \
284     SQLError \
285     SQLException \
286     SQLResultSet \
287     SQLResultSetRowList \
288     SQLStatementCallback \
289     SQLStatementErrorCallback \
290     SQLTransaction \
291     SQLTransactionCallback \
292     SQLTransactionErrorCallback \
293     SQLTransactionSync \
294     SQLTransactionSyncCallback \
295     Storage \
296     StorageEvent \
297     SVGAElement \
298     SVGAltGlyphElement \
299     SVGAngle \
300     SVGAnimateColorElement \
301     SVGAnimateElement \
302     SVGAnimateTransformElement \
303     SVGAnimatedAngle \
304     SVGAnimatedBoolean \
305     SVGAnimatedEnumeration \
306     SVGAnimatedInteger \
307     SVGAnimatedLength \
308     SVGAnimatedLengthList \
309     SVGAnimatedNumber \
310     SVGAnimatedNumberList \
311     SVGAnimatedPathData \
312     SVGAnimatedPoints \
313     SVGAnimatedPreserveAspectRatio \
314     SVGAnimatedRect \
315     SVGAnimatedString \
316     SVGAnimatedTransformList \
317     SVGAnimationElement \
318     SVGCircleElement \
319     SVGClipPathElement \
320     SVGColor \
321     SVGComponentTransferFunctionElement \
322     SVGCursorElement \
323     SVGDefsElement \
324     SVGDescElement \
325     SVGDocument \
326     SVGElement \
327     SVGElementInstance \
328     SVGElementInstanceList \
329     SVGEllipseElement \
330     SVGException \
331     SVGExternalResourcesRequired \
332     SVGFEBlendElement \
333     SVGFEColorMatrixElement \
334     SVGFEComponentTransferElement \
335     SVGFECompositeElement \
336     SVGFEConvolveMatrixElement \
337     SVGFEDiffuseLightingElement \
338     SVGFEDisplacementMapElement \
339     SVGFEDistantLightElement \
340     SVGFEFloodElement \
341     SVGFEFuncAElement \
342     SVGFEFuncBElement \
343     SVGFEFuncGElement \
344     SVGFEFuncRElement \
345     SVGFEGaussianBlurElement \
346     SVGFEImageElement \
347     SVGFEMergeElement \
348     SVGFEMergeNodeElement \
349     SVGFEMorphologyElement \
350     SVGFEOffsetElement \
351     SVGFEPointLightElement \
352     SVGFESpecularLightingElement \
353     SVGFESpotLightElement \
354     SVGFETileElement \
355     SVGFETurbulenceElement \
356     SVGFilterElement \
357     SVGFilterPrimitiveStandardAttributes \
358     SVGFitToViewBox \
359     SVGFontElement \
360     SVGFontFaceElement \
361     SVGFontFaceFormatElement \
362     SVGFontFaceNameElement \
363     SVGFontFaceSrcElement \
364     SVGFontFaceUriElement \
365     SVGForeignObjectElement \
366     SVGGElement \
367     SVGGlyphElement \
368     SVGGradientElement \
369     SVGHKernElement \
370     SVGImageElement \
371     SVGLangSpace \
372     SVGLength \
373     SVGLengthList \
374     SVGLineElement \
375     SVGLinearGradientElement \
376     SVGLocatable \
377     SVGMarkerElement \
378     SVGMaskElement \
379     SVGMatrix \
380     SVGMetadataElement \
381     SVGMissingGlyphElement \
382     SVGNumber \
383     SVGNumberList \
384     SVGPaint \
385     SVGPathElement \
386     SVGPathSeg \
387     SVGPathSegArcAbs \
388     SVGPathSegArcRel \
389     SVGPathSegClosePath \
390     SVGPathSegCurvetoCubicAbs \
391     SVGPathSegCurvetoCubicRel \
392     SVGPathSegCurvetoCubicSmoothAbs \
393     SVGPathSegCurvetoCubicSmoothRel \
394     SVGPathSegCurvetoQuadraticAbs \
395     SVGPathSegCurvetoQuadraticRel \
396     SVGPathSegCurvetoQuadraticSmoothAbs \
397     SVGPathSegCurvetoQuadraticSmoothRel \
398     SVGPathSegLinetoAbs \
399     SVGPathSegLinetoHorizontalAbs \
400     SVGPathSegLinetoHorizontalRel \
401     SVGPathSegLinetoRel \
402     SVGPathSegLinetoVerticalAbs \
403     SVGPathSegLinetoVerticalRel \
404     SVGPathSegList \
405     SVGPathSegMovetoAbs \
406     SVGPathSegMovetoRel \
407     SVGPatternElement \
408     SVGPoint \
409     SVGPointList \
410     SVGPolygonElement \
411     SVGPolylineElement \
412     SVGPreserveAspectRatio \
413     SVGRadialGradientElement \
414     SVGRect \
415     SVGRectElement \
416     SVGRenderingIntent \
417     SVGSVGElement \
418     SVGScriptElement \
419     SVGSetElement \
420     SVGStopElement \
421     SVGStringList \
422     SVGStylable \
423     SVGStyleElement \
424     SVGSwitchElement \
425     SVGSymbolElement \
426     SVGTRefElement \
427     SVGTSpanElement \
428     SVGTests \
429     SVGTextContentElement \
430     SVGTextElement \
431     SVGTextPathElement \
432     SVGTextPositioningElement \
433     SVGTitleElement \
434     SVGTransform \
435     SVGTransformList \
436     SVGTransformable \
437     SVGURIReference \
438     SVGUnitTypes \
439     SVGUseElement \
440     SVGViewElement \
441     SVGVKernElement \
442     SVGZoomAndPan \
443     SVGZoomEvent \
444     Screen \
445     StyleMedia \
446     StyleSheet \
447     StyleSheetList \
448     Text \
449     TextEvent \
450     TextMetrics \
451     TimeRanges \
452     Timing \
453     Touch \
454     TouchEvent \
455     TouchList \
456     TreeWalker \
457     UIEvent \
458     ValidityState \
459     WebKitAnimationEvent \
460     WebKitCSSKeyframeRule \
461     WebKitCSSKeyframesRule \
462     WebKitCSSMatrix \
463     WebKitCSSTransformValue \
464     WebKitPoint \
465     WebKitTransitionEvent \
466     WebSocket \
467     WheelEvent \
468     Worker \
469     WorkerContext \
470     WorkerLocation \
471     WorkerNavigator \
472     XMLHttpRequest \
473     XMLHttpRequestException \
474     XMLHttpRequestProgressEvent \
475     XMLHttpRequestUpload \
476     XMLSerializer \
477     XPathEvaluator \
478     XPathException \
479     XPathExpression \
480     XPathNSResolver \
481     XPathResult \
482     XSLTProcessor \
483 #
484
485 INSPECTOR_CLASSES = Inspector
486
487 .PHONY : all
488
489 JS_DOM_HEADERS=$(filter-out JSEventListener.h JSEventTarget.h,$(DOM_CLASSES:%=JS%.h) $(INSPECTOR_CLASSES:%=Remote%Frontend.h))
490
491 WEB_DOM_HEADERS :=
492 ifeq ($(findstring BUILDING_WX,$(FEATURE_DEFINES)), BUILDING_WX)
493 WEB_DOM_HEADERS := $(filter-out WebDOMXSLTProcessor.h WebDOMEventTarget.h,$(DOM_CLASSES:%=WebDOM%.h))
494 endif # BUILDING_WX
495
496 all : \
497     $(JS_DOM_HEADERS) \
498     $(WEB_DOM_HEADERS) \
499     \
500     JSJavaScriptCallFrame.h \
501     \
502     CSSGrammar.cpp \
503     CSSPropertyNames.h \
504     CSSValueKeywords.h \
505     ColorData.cpp \
506     DocTypeStrings.cpp \
507     HTMLElementFactory.cpp \
508     HTMLEntityTable.cpp \
509     HTMLNames.cpp \
510     WMLElementFactory.cpp \
511     WMLNames.cpp \
512     JSSVGElementWrapperFactory.cpp \
513     SVGElementFactory.cpp \
514     SVGNames.cpp \
515     UserAgentStyleSheets.h \
516     XLinkNames.cpp \
517     XMLNSNames.cpp \
518     XMLNames.cpp \
519     MathMLElementFactory.cpp \
520     MathMLNames.cpp \
521     XPathGrammar.cpp \
522     tokenizer.cpp \
523 #
524
525 # --------
526
527 ADDITIONAL_IDL_DEFINES :=
528
529 ifeq ($(OS),MACOS)
530
531 FRAMEWORK_FLAGS = $(shell echo $(BUILT_PRODUCTS_DIR) $(FRAMEWORK_SEARCH_PATHS) | perl -e 'print "-F " . join(" -F ", split(" ", <>));')
532
533 ifeq ($(shell gcc -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_DASHBOARD_SUPPORT | cut -d' ' -f3), 1)
534     ENABLE_DASHBOARD_SUPPORT = 1
535 else
536     ENABLE_DASHBOARD_SUPPORT = 0
537 endif
538
539 ifeq ($(shell gcc -E -P -dM $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_ORIENTATION_EVENTS | cut -d' ' -f3), 1)
540     ENABLE_ORIENTATION_EVENTS = 1
541 else
542     ENABLE_ORIENTATION_EVENTS = 0
543 endif
544
545 else
546
547 ifndef ENABLE_DASHBOARD_SUPPORT
548     ENABLE_DASHBOARD_SUPPORT = 0
549 endif
550
551 ifndef ENABLE_ORIENTATION_EVENTS
552     ENABLE_ORIENTATION_EVENTS = 0
553 endif
554
555 endif # MACOS
556
557 ifeq ($(ENABLE_ORIENTATION_EVENTS), 1)
558     ADDITIONAL_IDL_DEFINES := $(ADDITIONAL_IDL_DEFINES) ENABLE_ORIENTATION_EVENTS
559 endif
560
561 # --------
562
563 # CSS property names and value keywords
564
565 WEBCORE_CSS_PROPERTY_NAMES := $(WebCore)/css/CSSPropertyNames.in
566 WEBCORE_CSS_VALUE_KEYWORDS := $(WebCore)/css/CSSValueKeywords.in
567
568 ifeq ($(findstring ENABLE_SVG,$(FEATURE_DEFINES)), ENABLE_SVG)
569     WEBCORE_CSS_PROPERTY_NAMES := $(WEBCORE_CSS_PROPERTY_NAMES) $(WebCore)/css/SVGCSSPropertyNames.in
570     WEBCORE_CSS_VALUE_KEYWORDS := $(WEBCORE_CSS_VALUE_KEYWORDS) $(WebCore)/css/SVGCSSValueKeywords.in
571 endif
572
573 ifeq ($(ENABLE_DASHBOARD_SUPPORT), 1)
574     WEBCORE_CSS_PROPERTY_NAMES := $(WEBCORE_CSS_PROPERTY_NAMES) $(WebCore)/css/DashboardSupportCSSPropertyNames.in
575 endif
576
577 # The grep commands below reject output containing anything other than:
578 # 1. Lines beginning with '#'
579 # 2. Lines containing only whitespace
580 # These two types of lines will be ignored by make{prop,values}.pl.
581 CSSPropertyNames.h : $(WEBCORE_CSS_PROPERTY_NAMES) css/makeprop.pl
582         if sort $(WEBCORE_CSS_PROPERTY_NAMES) | uniq -d | grep -E -v '(^#)|(^[[:space:]]*$$)'; then echo 'Duplicate value!'; exit 1; fi
583         cat $(WEBCORE_CSS_PROPERTY_NAMES) > CSSPropertyNames.in
584         perl "$(WebCore)/css/makeprop.pl"
585
586 CSSValueKeywords.h : $(WEBCORE_CSS_VALUE_KEYWORDS) css/makevalues.pl
587         # Lower case all the values, as CSS values are case-insensitive
588         perl -ne 'print lc' $(WEBCORE_CSS_VALUE_KEYWORDS) > CSSValueKeywords.in
589         if sort CSSValueKeywords.in | uniq -d | grep -E -v '(^#)|(^[[:space:]]*$$)'; then echo 'Duplicate value!'; exit 1; fi
590         perl "$(WebCore)/css/makevalues.pl"
591
592 # --------
593
594 # DOCTYPE strings
595
596 DocTypeStrings.cpp : html/DocTypeStrings.gperf $(WebCore)/make-hash-tools.pl
597         perl $(WebCore)/make-hash-tools.pl . $(WebCore)/html/DocTypeStrings.gperf
598
599 # --------
600
601 # HTML entity names
602
603 HTMLEntityTable.cpp : html/HTMLEntityNames.json $(WebCore)/../WebKitTools/Scripts/create-html-entity-table
604         python $(WebCore)/../WebKitTools/Scripts/create-html-entity-table -o HTMLEntityTable.cpp $(WebCore)/html/HTMLEntityNames.json
605
606 # --------
607
608 # color names
609
610 ColorData.cpp : platform/ColorData.gperf $(WebCore)/make-hash-tools.pl
611         perl $(WebCore)/make-hash-tools.pl . $(WebCore)/platform/ColorData.gperf
612
613 # --------
614
615 # CSS tokenizer
616
617 tokenizer.cpp : css/tokenizer.flex css/maketokenizer
618         flex -t $< | perl $(WebCore)/css/maketokenizer > $@
619
620 # --------
621
622 # CSS grammar
623 # NOTE: Older versions of bison do not inject an inclusion guard, so we add one.
624
625 CSSGrammar.cpp : css/CSSGrammar.y
626         bison -d -p cssyy $< -o $@
627         touch CSSGrammar.cpp.h
628         touch CSSGrammar.hpp
629         echo '#ifndef CSSGrammar_h' > CSSGrammar.h
630         echo '#define CSSGrammar_h' >> CSSGrammar.h
631         cat CSSGrammar.cpp.h CSSGrammar.hpp >> CSSGrammar.h
632         echo '#endif' >> CSSGrammar.h
633         rm -f CSSGrammar.cpp.h CSSGrammar.hpp
634
635 # --------
636
637 # XPath grammar
638 # NOTE: Older versions of bison do not inject an inclusion guard, so we add one.
639
640 XPathGrammar.cpp : xml/XPathGrammar.y $(PROJECT_FILE)
641         bison -d -p xpathyy $< -o $@
642         touch XPathGrammar.cpp.h
643         touch XPathGrammar.hpp
644         echo '#ifndef XPathGrammar_h' > XPathGrammar.h
645         echo '#define XPathGrammar_h' >> XPathGrammar.h
646         cat XPathGrammar.cpp.h XPathGrammar.hpp >> XPathGrammar.h
647         echo '#endif' >> XPathGrammar.h
648         rm -f XPathGrammar.cpp.h XPathGrammar.hpp
649
650 # --------
651
652 # user agent style sheets
653
654 USER_AGENT_STYLE_SHEETS = $(WebCore)/css/html.css $(WebCore)/css/quirks.css $(WebCore)/css/view-source.css $(WebCore)/css/themeWin.css $(WebCore)/css/themeWinQuirks.css 
655
656 ifeq ($(findstring ENABLE_SVG,$(FEATURE_DEFINES)), ENABLE_SVG)
657     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/svg.css 
658 endif
659
660 ifeq ($(findstring ENABLE_WML,$(FEATURE_DEFINES)), ENABLE_WML)
661     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/wml.css
662 endif
663
664 ifeq ($(findstring ENABLE_MATHML,$(FEATURE_DEFINES)), ENABLE_MATHML)
665     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/mathml.css
666 endif
667
668 ifeq ($(findstring ENABLE_VIDEO,$(FEATURE_DEFINES)), ENABLE_VIDEO)
669     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/mediaControls.css
670 ifeq ($(OS),MACOS)
671     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/mediaControlsQuickTime.css
672 endif
673 endif
674
675 UserAgentStyleSheets.h : css/make-css-file-arrays.pl $(USER_AGENT_STYLE_SHEETS)
676         perl $< $@ UserAgentStyleSheetsData.cpp $(USER_AGENT_STYLE_SHEETS)
677
678 # --------
679
680 # HTML tag and attribute names
681
682 ifeq ($(findstring ENABLE_DATALIST,$(FEATURE_DEFINES)), ENABLE_DATALIST)
683     HTML_FLAGS := $(HTML_FLAGS) ENABLE_DATALIST=1
684 endif
685
686 ifeq ($(findstring ENABLE_METER_TAG,$(FEATURE_DEFINES)), ENABLE_METER_TAG)
687     HTML_FLAGS := $(HTML_FLAGS) ENABLE_METER_TAG=1
688 endif
689
690 ifeq ($(findstring ENABLE_PROGRESS_TAG,$(FEATURE_DEFINES)), ENABLE_PROGRESS_TAG)
691     HTML_FLAGS := $(HTML_FLAGS) ENABLE_PROGRESS_TAG=1
692 endif
693
694 ifeq ($(findstring ENABLE_VIDEO,$(FEATURE_DEFINES)), ENABLE_VIDEO)
695     HTML_FLAGS := $(HTML_FLAGS) ENABLE_VIDEO=1
696 endif
697
698 ifeq ($(findstring ENABLE_RUBY,$(FEATURE_DEFINES)), ENABLE_RUBY)
699     HTML_FLAGS := $(HTML_FLAGS) ENABLE_RUBY=1
700 endif
701
702 ifdef HTML_FLAGS
703
704 HTMLElementFactory.cpp HTMLNames.cpp : dom/make_names.pl html/HTMLTagNames.in html/HTMLAttributeNames.in
705         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory --extraDefines "$(HTML_FLAGS)"
706
707 else
708
709 HTMLElementFactory.cpp HTMLNames.cpp : dom/make_names.pl html/HTMLTagNames.in html/HTMLAttributeNames.in
710         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory
711
712 endif
713
714 JSHTMLElementWrapperFactory.cpp : HTMLNames.cpp
715
716 XMLNSNames.cpp : dom/make_names.pl xml/xmlnsattrs.in
717         perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlnsattrs.in
718
719 XMLNames.cpp : dom/make_names.pl xml/xmlattrs.in
720         perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlattrs.in
721
722 # --------
723
724 # SVG tag and attribute names, and element factory
725
726 ifeq ($(findstring ENABLE_SVG_USE,$(FEATURE_DEFINES)), ENABLE_SVG_USE)
727     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_USE=1
728 endif
729
730 ifeq ($(findstring ENABLE_SVG_FONTS,$(FEATURE_DEFINES)), ENABLE_SVG_FONTS)
731     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_FONTS=1
732 endif
733
734 ifeq ($(findstring ENABLE_FILTERS,$(FEATURE_DEFINES)), ENABLE_FILTERS)
735     SVG_FLAGS := $(SVG_FLAGS) ENABLE_FILTERS=1
736 endif
737
738 ifeq ($(findstring ENABLE_SVG_AS_IMAGE,$(FEATURE_DEFINES)), ENABLE_SVG_AS_IMAGE)
739     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_AS_IMAGE=1
740 endif
741
742 ifeq ($(findstring ENABLE_SVG_ANIMATION,$(FEATURE_DEFINES)), ENABLE_SVG_ANIMATION)
743     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_ANIMATION=1
744 endif
745
746 ifeq ($(findstring ENABLE_SVG_FOREIGN_OBJECT,$(FEATURE_DEFINES)), ENABLE_SVG_FOREIGN_OBJECT)
747     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_FOREIGN_OBJECT=1
748 endif
749
750 # SVG tag and attribute names (need to pass an extra flag if svg experimental features are enabled)
751
752 ifdef SVG_FLAGS
753
754 SVGElementFactory.cpp SVGNames.cpp : dom/make_names.pl svg/svgtags.in svg/svgattrs.in
755         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --extraDefines "$(SVG_FLAGS)" --factory --wrapperFactory
756 else
757
758 SVGElementFactory.cpp SVGNames.cpp : dom/make_names.pl svg/svgtags.in svg/svgattrs.in
759         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --factory --wrapperFactory
760
761 endif
762
763 JSSVGElementWrapperFactory.cpp : SVGNames.cpp
764
765 XLinkNames.cpp : dom/make_names.pl svg/xlinkattrs.in
766         perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/svg/xlinkattrs.in
767
768 # --------
769
770 # WML tag and attribute names, and element factory
771
772 ifeq ($(findstring ENABLE_WML,$(FEATURE_DEFINES)), ENABLE_WML)
773
774 WMLElementFactory.cpp WMLNames.cpp : dom/make_names.pl wml/WMLTagNames.in wml/WMLAttributeNames.in
775         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/wml/WMLTagNames.in --attrs $(WebCore)/wml/WMLAttributeNames.in --factory --wrapperFactory
776
777 else
778
779 WMLElementFactory.cpp :
780         echo > $@
781
782 WMLNames.cpp :
783         echo > $@
784
785 endif
786
787 # --------
788  
789 # MathML tag and attribute names, and element factory
790
791 MathMLElementFactory.cpp MathMLNames.cpp : dom/make_names.pl mathml/mathtags.in mathml/mathattrs.in
792         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/mathml/mathtags.in --attrs $(WebCore)/mathml/mathattrs.in --factory --wrapperFactory
793
794 # --------
795
796 # Common generator things
797
798 GENERATE_SCRIPTS = \
799     bindings/scripts/CodeGenerator.pm \
800     bindings/scripts/IDLParser.pm \
801     bindings/scripts/IDLStructure.pm \
802     bindings/scripts/generate-bindings.pl
803
804 generator_script = perl $(addprefix -I $(WebCore)/, $(sort $(dir $(1)))) $(WebCore)/bindings/scripts/generate-bindings.pl
805
806 # JS bindings generator
807
808 IDL_INCLUDES = dom html css page notifications xml svg
809 IDL_COMMON_ARGS = $(IDL_INCLUDES:%=--include %) --write-dependencies --outputDir .
810
811 JS_BINDINGS_SCRIPTS = $(GENERATE_SCRIPTS) bindings/scripts/CodeGeneratorJS.pm
812
813 JS%.h : %.idl $(JS_BINDINGS_SCRIPTS)
814         $(call generator_script, $(JS_BINDINGS_SCRIPTS)) $(IDL_COMMON_ARGS) --defines "$(FEATURE_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS $<
815
816 # Inspector interfaces generator
817
818 INSPECTOR_GENERATOR_SCRIPTS = $(GENERATE_SCRIPTS) inspector/CodeGeneratorInspector.pm
819
820 Remote%Frontend.h : %.idl $(INSPECTOR_GENERATOR_SCRIPTS)
821         $(call generator_script, $(INSPECTOR_GENERATOR_SCRIPTS)) --outputDir .  --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator Inspector $<
822
823 -include $(JS_DOM_HEADERS:.h=.dep)
824
825 ifeq ($(findstring BUILDING_WX,$(FEATURE_DEFINES)), BUILDING_WX)
826 CPP_BINDINGS_SCRIPTS = $(GENERATE_SCRIPTS) bindings/scripts/CodeGeneratorCPP.pm
827
828 WebDOM%.h : %.idl $(CPP_BINDINGS_SCRIPTS)
829         $(call generator_script, $(CPP_BINDINGS_SCRIPTS)) $(IDL_COMMON_ARGS) --defines "$(FEATURE_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_CPP" --generator CPP $<
830 endif # BUILDING_WX
831
832 # ------------------------
833
834 # Mac-specific rules
835
836 ifeq ($(OS),MACOS)
837
838 OBJC_DOM_HEADERS=$(filter-out DOMDOMWindow.h DOMDOMMimeType.h DOMDOMPlugin.h,$(DOM_CLASSES:%=DOM%.h))
839
840 all : $(OBJC_DOM_HEADERS)
841
842 all : CharsetData.cpp
843
844 # --------
845
846 # character set name table
847
848 CharsetData.cpp : platform/text/mac/make-charset-table.pl platform/text/mac/character-sets.txt platform/text/mac/mac-encodings.txt
849         perl $^ kTextEncoding > $@
850
851 # --------
852
853 ifneq ($(ACTION),installhdrs)
854
855 all : WebCore.exp WebCore.LP64.exp
856
857 WebCore.exp : $(BUILT_PRODUCTS_DIR)/WebCoreExportFileGenerator
858         $^ > $@
859
860 # Switch NSRect, NSSize and NSPoint with their CG counterparts for the 64-bit exports file.
861 WebCore.LP64.exp : WebCore.exp
862         cat $^ | sed -e s/7_NSRect/6CGRect/ -e s/7_NSSize/6CGSize/ -e s/8_NSPoint/7CGPoint/ > $@
863
864 endif # installhdrs
865
866 # --------
867
868 # Objective-C bindings
869
870 DOM_BINDINGS_SCRIPTS = $(GENERATE_BINDING_SCRIPTS) bindings/scripts/CodeGeneratorObjC.pm
871 DOM%.h : %.idl $(DOM_BINDINGS_SCRIPTS) bindings/objc/PublicDOMInterfaces.h
872         $(call generator_script, $(DOM_BINDINGS_SCRIPTS)) $(IDL_COMMON_ARGS) --defines "$(FEATURE_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_OBJECTIVE_C" --generator ObjC $<
873
874 -include $(OBJC_DOM_HEADERS:.h=.dep)
875
876 # --------
877
878 endif # MACOS
879
880 # ------------------------