c56e7cd07dbe10b2069279f9021b66afcb48f2bf
[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 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 #
8 # 1.  Redistributions of source code must retain the above copyright
9 #     notice, this list of conditions and the following disclaimer. 
10 # 2.  Redistributions in binary form must reproduce the above copyright
11 #     notice, this list of conditions and the following disclaimer in the
12 #     documentation and/or other materials provided with the distribution. 
13 # 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14 #     its contributors may be used to endorse or promote products derived
15 #     from this software without specific prior written permission. 
16 #
17 # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28 VPATH = \
29     $(WebCore) \
30     $(WebCore)/bindings/js \
31     $(WebCore)/bindings/objc \
32     $(WebCore)/css \
33     $(WebCore)/dom \
34     $(WebCore)/html \
35     $(WebCore)/inspector \
36     $(WebCore)/loader/appcache \
37     $(WebCore)/page \
38     $(WebCore)/plugins \
39     $(WebCore)/storage \
40     $(WebCore)/xml \
41     $(WebCore)/wml \
42     $(WebCore)/workers \
43     $(WebCore)/svg \
44 #
45
46 DOM_CLASSES = \
47     AbstractView \
48     Attr \
49     BarInfo \
50     CDATASection \
51     CSSCharsetRule \
52     CSSFontFaceRule \
53     CSSImportRule \
54     CSSMediaRule \
55     CSSPageRule \
56     CSSPrimitiveValue \
57     CSSRule \
58     CSSRuleList \
59     CSSStyleDeclaration \
60     CSSStyleRule \
61     CSSStyleSheet \
62     CSSUnknownRule \
63     CSSValue \
64     CSSValueList \
65     CSSVariablesRule \
66     CSSVariablesDeclaration \
67     CanvasGradient \
68     CanvasPattern \
69     CanvasRenderingContext2D \
70     CharacterData \
71     ClientRect \
72     ClientRectList \
73     Clipboard \
74     Comment \
75     Console \
76     Counter \
77     DOMApplicationCache \
78     DOMCoreException \
79     DOMImplementation \
80     DOMParser \
81     DOMSelection \
82     DOMStringList \
83     DOMWindow \
84     Database \
85     Document \
86     DocumentFragment \
87     DocumentType \
88     Element \
89     ElementTimeControl \
90     Entity \
91     EntityReference \
92     Event \
93     EventException \
94     EventListener \
95     EventTarget \
96     File \
97     FileList \
98     Geolocation \
99     Geoposition \
100     HTMLAnchorElement \
101     HTMLAppletElement \
102     HTMLAreaElement \
103     HTMLAudioElement \
104     HTMLBRElement \
105     HTMLBaseElement \
106     HTMLBaseFontElement \
107     HTMLBlockquoteElement \
108     HTMLBodyElement \
109     HTMLButtonElement \
110     HTMLCanvasElement \
111     HTMLCollection \
112     HTMLDListElement \
113     HTMLDirectoryElement \
114     HTMLDivElement \
115     HTMLDocument \
116     HTMLElement \
117     HTMLEmbedElement \
118     HTMLFieldSetElement \
119     HTMLFontElement \
120     HTMLFormElement \
121     HTMLFrameElement \
122     HTMLFrameSetElement \
123     HTMLHRElement \
124     HTMLHeadElement \
125     HTMLHeadingElement \
126     HTMLHtmlElement \
127     HTMLIFrameElement \
128     HTMLImageElement \
129     HTMLInputElement \
130     HTMLIsIndexElement \
131     HTMLLIElement \
132     HTMLLabelElement \
133     HTMLLegendElement \
134     HTMLLinkElement \
135     HTMLMapElement \
136     HTMLMarqueeElement \
137     HTMLMediaElement \
138     HTMLMenuElement \
139     HTMLMetaElement \
140     HTMLModElement \
141     HTMLOListElement \
142     HTMLObjectElement \
143     HTMLOptGroupElement \
144     HTMLOptionElement \
145     HTMLOptionsCollection \
146     HTMLParagraphElement \
147     HTMLParamElement \
148     HTMLPreElement \
149     HTMLQuoteElement \
150     HTMLScriptElement \
151     HTMLSelectElement \
152     HTMLSourceElement \
153     HTMLStyleElement \
154     HTMLTableCaptionElement \
155     HTMLTableCellElement \
156     HTMLTableColElement \
157     HTMLTableElement \
158     HTMLTableRowElement \
159     HTMLTableSectionElement \
160     HTMLTextAreaElement \
161     HTMLTitleElement \
162     HTMLUListElement \
163     HTMLVideoElement \
164     History \
165     ImageData \
166     InspectorController \
167     KeyboardEvent \
168     Location \
169     MediaError \
170     MediaList \
171     MessageChannel \
172     MessageEvent \
173     MessagePort \
174     MimeType \
175     MimeTypeArray \
176     MouseEvent \
177     MutationEvent \
178     NamedNodeMap \
179     Navigator \
180     Node \
181     NodeFilter \
182     NodeIterator \
183     NodeList \
184     Notation \
185     OverflowEvent \
186     Plugin \
187     PluginArray \
188     PositionCallback \
189     PositionError \
190     PositionErrorCallback \
191     ProcessingInstruction \
192     ProgressEvent \
193     RGBColor \
194     Range \
195     RangeException \
196     Rect \
197     SQLError \
198     SQLResultSet \
199     SQLResultSetRowList \
200     SQLTransaction \
201     Storage \
202     StorageEvent \
203     SVGAElement \
204     SVGAltGlyphElement \
205     SVGAngle \
206     SVGAnimateColorElement \
207     SVGAnimateElement \
208     SVGAnimateTransformElement \
209     SVGAnimatedAngle \
210     SVGAnimatedBoolean \
211     SVGAnimatedEnumeration \
212     SVGAnimatedInteger \
213     SVGAnimatedLength \
214     SVGAnimatedLengthList \
215     SVGAnimatedNumber \
216     SVGAnimatedNumberList \
217     SVGAnimatedPathData \
218     SVGAnimatedPoints \
219     SVGAnimatedPreserveAspectRatio \
220     SVGAnimatedRect \
221     SVGAnimatedString \
222     SVGAnimatedTransformList \
223     SVGAnimationElement \
224     SVGCircleElement \
225     SVGClipPathElement \
226     SVGColor \
227     SVGComponentTransferFunctionElement \
228     SVGCursorElement \
229     SVGDefinitionSrcElement \
230     SVGDefsElement \
231     SVGDescElement \
232     SVGDocument \
233     SVGElement \
234     SVGElementInstance \
235     SVGElementInstanceList \
236     SVGEllipseElement \
237     SVGException \
238     SVGExternalResourcesRequired \
239     SVGFEBlendElement \
240     SVGFEColorMatrixElement \
241     SVGFEComponentTransferElement \
242     SVGFECompositeElement \
243     SVGFEDiffuseLightingElement \
244     SVGFEDisplacementMapElement \
245     SVGFEDistantLightElement \
246     SVGFEFloodElement \
247     SVGFEFuncAElement \
248     SVGFEFuncBElement \
249     SVGFEFuncGElement \
250     SVGFEFuncRElement \
251     SVGFEGaussianBlurElement \
252     SVGFEImageElement \
253     SVGFEMergeElement \
254     SVGFEMergeNodeElement \
255     SVGFEOffsetElement \
256     SVGFEPointLightElement \
257     SVGFESpecularLightingElement \
258     SVGFESpotLightElement \
259     SVGFETileElement \
260     SVGFETurbulenceElement \
261     SVGFilterElement \
262     SVGFilterPrimitiveStandardAttributes \
263     SVGFitToViewBox \
264     SVGFontElement \
265     SVGFontFaceElement \
266     SVGFontFaceFormatElement \
267     SVGFontFaceNameElement \
268     SVGFontFaceSrcElement \
269     SVGFontFaceUriElement \
270     SVGForeignObjectElement \
271     SVGGElement \
272     SVGGlyphElement \
273     SVGGradientElement \
274     SVGHKernElement \
275     SVGImageElement \
276     SVGLangSpace \
277     SVGLength \
278     SVGLengthList \
279     SVGLineElement \
280     SVGLinearGradientElement \
281     SVGLocatable \
282     SVGMarkerElement \
283     SVGMaskElement \
284     SVGMatrix \
285     SVGMetadataElement \
286     SVGMissingGlyphElement \
287     SVGNumber \
288     SVGNumberList \
289     SVGPaint \
290     SVGPathElement \
291     SVGPathSeg \
292     SVGPathSegArcAbs \
293     SVGPathSegArcRel \
294     SVGPathSegClosePath \
295     SVGPathSegCurvetoCubicAbs \
296     SVGPathSegCurvetoCubicRel \
297     SVGPathSegCurvetoCubicSmoothAbs \
298     SVGPathSegCurvetoCubicSmoothRel \
299     SVGPathSegCurvetoQuadraticAbs \
300     SVGPathSegCurvetoQuadraticRel \
301     SVGPathSegCurvetoQuadraticSmoothAbs \
302     SVGPathSegCurvetoQuadraticSmoothRel \
303     SVGPathSegLinetoAbs \
304     SVGPathSegLinetoHorizontalAbs \
305     SVGPathSegLinetoHorizontalRel \
306     SVGPathSegLinetoRel \
307     SVGPathSegLinetoVerticalAbs \
308     SVGPathSegLinetoVerticalRel \
309     SVGPathSegList \
310     SVGPathSegMovetoAbs \
311     SVGPathSegMovetoRel \
312     SVGPatternElement \
313     SVGPoint \
314     SVGPointList \
315     SVGPolygonElement \
316     SVGPolylineElement \
317     SVGPreserveAspectRatio \
318     SVGRadialGradientElement \
319     SVGRect \
320     SVGRectElement \
321     SVGRenderingIntent \
322     SVGSVGElement \
323     SVGScriptElement \
324     SVGSetElement \
325     SVGStopElement \
326     SVGStringList \
327     SVGStylable \
328     SVGStyleElement \
329     SVGSwitchElement \
330     SVGSymbolElement \
331     SVGTRefElement \
332     SVGTSpanElement \
333     SVGTests \
334     SVGTextContentElement \
335     SVGTextElement \
336     SVGTextPathElement \
337     SVGTextPositioningElement \
338     SVGTitleElement \
339     SVGTransform \
340     SVGTransformList \
341     SVGTransformable \
342     SVGURIReference \
343     SVGUnitTypes \
344     SVGUseElement \
345     SVGViewElement \
346     SVGZoomAndPan \
347     SVGZoomEvent \
348     Screen \
349     StyleSheet \
350     StyleSheetList \
351     Text \
352     TextEvent \
353     TextMetrics \
354     TimeRanges \
355     TreeWalker \
356     UIEvent \
357     VoidCallback \
358     WebKitAnimationEvent \
359     WebKitCSSKeyframeRule \
360     WebKitCSSKeyframesRule \
361     WebKitCSSMatrix \
362     WebKitCSSTransformValue \
363     WebKitPoint \
364     WebKitTransitionEvent \
365     WheelEvent \
366     Worker \
367     WorkerContext \
368     WorkerLocation \
369     WorkerNavigator \
370     XMLHttpRequest \
371     XMLHttpRequestException \
372     XMLHttpRequestProgressEvent \
373     XMLHttpRequestUpload \
374     XMLSerializer \
375     XPathEvaluator \
376     XPathException \
377     XPathExpression \
378     XPathNSResolver \
379     XPathResult \
380     XSLTProcessor \
381 #
382
383 .PHONY : all
384
385 all : \
386     $(filter-out JSEventListener.h JSEventTarget.h JSRGBColor.h,$(DOM_CLASSES:%=JS%.h)) \
387     \
388     JSDOMWindowBase.lut.h \
389     JSRGBColor.lut.h \
390     JSWorkerContextBase.lut.h \
391     \
392     JSJavaScriptCallFrame.h \
393     \
394     CSSGrammar.cpp \
395     CSSPropertyNames.h \
396     CSSValueKeywords.h \
397     ColorData.c \
398     DocTypeStrings.cpp \
399     HTMLElementFactory.cpp \
400     HTMLEntityNames.c \
401     HTMLNames.cpp \
402     WMLElementFactory.cpp \
403     WMLNames.cpp \
404     JSSVGElementWrapperFactory.cpp \
405     SVGElementFactory.cpp \
406     SVGNames.cpp \
407     UserAgentStyleSheets.h \
408     XLinkNames.cpp \
409     XMLNames.cpp \
410     XPathGrammar.cpp \
411     tokenizer.cpp \
412 #
413
414 # --------
415
416 ifeq ($(OS),MACOS)
417
418 FRAMEWORK_FLAGS = $(shell echo $(FRAMEWORK_SEARCH_PATHS) | perl -e 'print "-F " . join(" -F ", split(" ", <>));')
419
420 ifeq ($(shell gcc -E -P -dM -F $(BUILT_PRODUCTS_DIR) $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_DASHBOARD_SUPPORT | cut -d' ' -f3), 1)
421     ENABLE_DASHBOARD_SUPPORT = 1
422 else
423     ENABLE_DASHBOARD_SUPPORT = 0
424 endif
425
426 else
427
428 ENABLE_DASHBOARD_SUPPORT = 0
429
430 endif
431
432 # CSS property names and value keywords
433
434 WEBCORE_CSS_PROPERTY_NAMES := $(WebCore)/css/CSSPropertyNames.in
435 WEBCORE_CSS_VALUE_KEYWORDS := $(WebCore)/css/CSSValueKeywords.in
436
437 ifeq ($(findstring ENABLE_SVG,$(FEATURE_DEFINES)), ENABLE_SVG)
438     WEBCORE_CSS_PROPERTY_NAMES := $(WEBCORE_CSS_PROPERTY_NAMES) $(WebCore)/css/SVGCSSPropertyNames.in
439     WEBCORE_CSS_VALUE_KEYWORDS := $(WEBCORE_CSS_VALUE_KEYWORDS) $(WebCore)/css/SVGCSSValueKeywords.in
440 endif
441
442 ifeq ($(ENABLE_DASHBOARD_SUPPORT), 1)
443     WEBCORE_CSS_PROPERTY_NAMES := $(WEBCORE_CSS_PROPERTY_NAMES) $(WebCore)/css/DashboardSupportCSSPropertyNames.in
444 endif
445
446 CSSPropertyNames.h : $(WEBCORE_CSS_PROPERTY_NAMES) css/makeprop.pl
447         if sort $(WEBCORE_CSS_PROPERTY_NAMES) | uniq -d | grep -E '^[^#]'; then echo 'Duplicate value!'; exit 1; fi
448         cat $(WEBCORE_CSS_PROPERTY_NAMES) > CSSPropertyNames.in
449         perl "$(WebCore)/css/makeprop.pl"
450
451 CSSValueKeywords.h : $(WEBCORE_CSS_VALUE_KEYWORDS) css/makevalues.pl
452         # Lower case all the values, as CSS values are case-insensitive
453         perl -ne 'print lc' $(WEBCORE_CSS_VALUE_KEYWORDS) > CSSValueKeywords.in
454         if sort CSSValueKeywords.in | uniq -d | grep -E '^[^#]'; then echo 'Duplicate value!'; exit 1; fi
455         perl "$(WebCore)/css/makevalues.pl"
456
457 # --------
458
459 # DOCTYPE strings
460
461 DocTypeStrings.cpp : html/DocTypeStrings.gperf
462         gperf -CEot -L ANSI-C -k "*" -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards $< > $@
463
464 # --------
465
466 # HTML entity names
467
468 HTMLEntityNames.c : html/HTMLEntityNames.gperf
469         gperf -a -L ANSI-C -C -G -c -o -t -k '*' -N findEntity -D -s 2 $< > $@
470
471 # --------
472
473 # color names
474
475 ColorData.c : platform/ColorData.gperf
476         gperf -CDEot -L ANSI-C -k '*' -N findColor -D -s 2 $< > $@
477
478 # --------
479
480 # CSS tokenizer
481
482 tokenizer.cpp : css/tokenizer.flex css/maketokenizer
483         flex -t $< | perl $(WebCore)/css/maketokenizer > $@
484
485 # --------
486
487 # CSS grammar
488 # NOTE: Older versions of bison do not inject an inclusion guard, so we add one.
489
490 CSSGrammar.cpp : css/CSSGrammar.y
491         bison -d -p cssyy $< -o $@
492         touch CSSGrammar.cpp.h
493         touch CSSGrammar.hpp
494         echo '#ifndef CSSGrammar_h' > CSSGrammar.h
495         echo '#define CSSGrammar_h' >> CSSGrammar.h
496         cat CSSGrammar.cpp.h CSSGrammar.hpp >> CSSGrammar.h
497         echo '#endif' >> CSSGrammar.h
498         rm -f CSSGrammar.cpp.h CSSGrammar.hpp
499
500 # --------
501
502 # XPath grammar
503 # NOTE: Older versions of bison do not inject an inclusion guard, so we add one.
504
505 XPathGrammar.cpp : xml/XPathGrammar.y $(PROJECT_FILE)
506         bison -d -p xpathyy $< -o $@
507         touch XPathGrammar.cpp.h
508         touch XPathGrammar.hpp
509         echo '#ifndef XPathGrammar_h' > XPathGrammar.h
510         echo '#define XPathGrammar_h' >> XPathGrammar.h
511         cat XPathGrammar.cpp.h XPathGrammar.hpp >> XPathGrammar.h
512         echo '#endif' >> XPathGrammar.h
513         rm -f XPathGrammar.cpp.h XPathGrammar.hpp
514
515 # --------
516
517 # user agent style sheets
518
519 USER_AGENT_STYLE_SHEETS = $(WebCore)/css/html4.css $(WebCore)/css/quirks.css $(WebCore)/css/view-source.css $(WebCore)/css/themeWin.css $(WebCore)/css/themeWinQuirks.css 
520
521 ifeq ($(findstring ENABLE_SVG,$(FEATURE_DEFINES)), ENABLE_SVG)
522     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/svg.css 
523 endif
524
525 ifeq ($(findstring ENABLE_WML,$(FEATURE_DEFINES)), ENABLE_WML)
526     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/wml.css
527 endif
528
529 ifeq ($(findstring ENABLE_VIDEO,$(FEATURE_DEFINES)), ENABLE_VIDEO)
530     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/mediaControls.css
531 ifeq ($(OS),MACOS)
532     USER_AGENT_STYLE_SHEETS := $(USER_AGENT_STYLE_SHEETS) $(WebCore)/css/mediaControlsQT.css
533 endif
534 endif
535
536 UserAgentStyleSheets.h : css/make-css-file-arrays.pl $(USER_AGENT_STYLE_SHEETS)
537         perl $< $@ UserAgentStyleSheetsData.cpp $(USER_AGENT_STYLE_SHEETS)
538
539 # --------
540
541 # lookup tables for old-style JavaScript bindings
542
543 %.lut.h: %.cpp $(CREATE_HASH_TABLE)
544         $(CREATE_HASH_TABLE) $< -n WebCore > $@
545 %Table.cpp: %.cpp $(CREATE_HASH_TABLE)
546         $(CREATE_HASH_TABLE) $< -n WebCore > $@
547
548 # --------
549
550 # HTML tag and attribute names
551
552 ifeq ($(findstring ENABLE_VIDEO,$(FEATURE_DEFINES)), ENABLE_VIDEO)
553     HTML_FLAGS := $(HTML_FLAGS) ENABLE_VIDEO=1
554 endif
555
556 ifdef HTML_FLAGS
557
558 HTMLElementFactory.cpp HTMLNames.cpp : dom/make_names.pl html/HTMLTagNames.in html/HTMLAttributeNames.in
559         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory --extraDefines "$(HTML_FLAGS)"
560
561 else
562
563 HTMLElementFactory.cpp HTMLNames.cpp : dom/make_names.pl html/HTMLTagNames.in html/HTMLAttributeNames.in
564         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory
565
566 endif
567
568 JSHTMLElementWrapperFactory.cpp : HTMLNames.cpp
569
570 XMLNames.cpp : dom/make_names.pl xml/xmlattrs.in
571         perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlattrs.in
572
573 # --------
574
575 # SVG tag and attribute names, and element factory
576
577 ifeq ($(findstring ENABLE_SVG,$(FEATURE_DEFINES)), ENABLE_SVG)
578
579 WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.SVG.exp
580
581 ifeq ($(findstring ENABLE_SVG_USE,$(FEATURE_DEFINES)), ENABLE_SVG_USE)
582     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_USE=1
583 endif
584
585 ifeq ($(findstring ENABLE_SVG_FONTS,$(FEATURE_DEFINES)), ENABLE_SVG_FONTS)
586     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_FONTS=1
587 endif
588
589 ifeq ($(findstring ENABLE_SVG_FILTERS,$(FEATURE_DEFINES)), ENABLE_SVG_FILTERS)
590     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_FILTERS=1
591     WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.SVG.Filters.exp
592 endif
593
594 ifeq ($(findstring ENABLE_SVG_AS_IMAGE,$(FEATURE_DEFINES)), ENABLE_SVG_AS_IMAGE)
595     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_AS_IMAGE=1
596 endif
597
598 ifeq ($(findstring ENABLE_SVG_ANIMATION,$(FEATURE_DEFINES)), ENABLE_SVG_ANIMATION)
599     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_ANIMATION=1
600     WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.SVG.Animation.exp
601 endif
602
603 ifeq ($(findstring ENABLE_SVG_FOREIGN_OBJECT,$(FEATURE_DEFINES)), ENABLE_SVG_FOREIGN_OBJECT)
604     SVG_FLAGS := $(SVG_FLAGS) ENABLE_SVG_FOREIGN_OBJECT=1
605     WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.SVG.ForeignObject.exp
606 endif
607
608 # SVG tag and attribute names (need to pass an extra flag if svg experimental features are enabled)
609
610 ifdef SVG_FLAGS
611
612 SVGElementFactory.cpp SVGNames.cpp : dom/make_names.pl svg/svgtags.in svg/svgattrs.in
613         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --extraDefines "$(SVG_FLAGS)" --factory --wrapperFactory
614 else
615
616 SVGElementFactory.cpp SVGNames.cpp : dom/make_names.pl svg/svgtags.in svg/svgattrs.in
617         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --factory --wrapperFactory
618
619 endif
620
621 JSSVGElementWrapperFactory.cpp : SVGNames.cpp
622
623 XLinkNames.cpp : dom/make_names.pl svg/xlinkattrs.in
624         perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/svg/xlinkattrs.in
625
626 else
627
628 SVGElementFactory.cpp :
629         echo > $@
630
631 SVGNames.cpp :
632         echo > $@
633
634 XLinkNames.cpp :
635         echo > $@
636
637 # This file is autogenerated by make_names.pl when SVG is enabled.
638
639 JSSVGElementWrapperFactory.cpp :
640         echo > $@
641
642 endif
643
644 # --------
645
646 # WML tag and attribute names, and element factory
647
648 ifeq ($(findstring ENABLE_WML,$(FEATURE_DEFINES)), ENABLE_WML)
649
650 WMLElementFactory.cpp WMLNames.cpp : dom/make_names.pl wml/WMLTagNames.in wml/WMLAttributeNames.in
651         perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/wml/WMLTagNames.in --attrs $(WebCore)/wml/WMLAttributeNames.in --factory --wrapperFactory
652
653 else
654
655 WMLElementFactory.cpp :
656         echo > $@
657
658 WMLNames.cpp :
659         echo > $@
660
661 endif
662
663
664 # --------
665
666 # JavaScript bindings
667
668 GENERATE_BINDINGS = perl -I $(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl \
669     --include dom --include html --include css --include page --include xml --include svg --outputDir .
670
671 GENERATE_BINDINGS_SCRIPTS = \
672     bindings/scripts/CodeGenerator.pm \
673     bindings/scripts/IDLParser.pm \
674     bindings/scripts/IDLStructure.pm \
675     bindings/scripts/generate-bindings.pl \
676 #
677
678 JS%.h : %.idl $(GENERATE_BINDINGS_SCRIPTS) bindings/scripts/CodeGeneratorJS.pm
679         $(GENERATE_BINDINGS) --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS $<
680
681 # ------------------------
682
683 # Mac-specific rules
684
685 ifeq ($(OS),MACOS)
686
687 all : $(filter-out DOMDOMWindow.h DOMMimeType.h DOMPlugin.h,$(DOM_CLASSES:%=DOM%.h))
688
689 all : CharsetData.cpp WebCore.exp
690
691 # --------
692
693 # character set name table
694
695 CharsetData.cpp : platform/text/mac/make-charset-table.pl platform/text/mac/character-sets.txt platform/text/mac/mac-encodings.txt
696         perl $^ kTextEncoding > $@
697
698 # --------
699
700 # export file
701
702 ifeq ($(shell gcc -E -P -dM -F $(BUILT_PRODUCTS_DIR) $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_MAC_JAVA_BRIDGE | cut -d' ' -f3), 1)
703     WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.JNI.exp
704 endif
705
706 # See also "Generate 64-bit Export File" build phase script in WebCore.xcodeproj/project.pbxproj
707 ifeq ($(shell gcc -E -P -dM -F $(BUILT_PRODUCTS_DIR) $(FRAMEWORK_FLAGS) WebCore/ForwardingHeaders/wtf/Platform.h | grep ENABLE_NETSCAPE_PLUGIN_API | cut -d' ' -f3), 1)
708     WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.NPAPI.exp
709 endif
710
711 ifeq ($(ENABLE_DASHBOARD_SUPPORT), 1)
712     WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.DashboardSupport.exp
713 endif
714
715 ifeq ($(findstring 10.4,$(MACOSX_DEPLOYMENT_TARGET)), 10.4)
716     WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.Tiger.exp
717 endif
718
719 ifeq ($(findstring ENABLE_PLUGIN_PROXY_FOR_VIDEO,$(FEATURE_DEFINES)), ENABLE_PLUGIN_PROXY_FOR_VIDEO)
720      WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.VideoProxy.exp
721 endif
722
723 WebCore.exp : WebCore.base.exp $(WEBCORE_EXPORT_DEPENDENCIES)
724         cat $^ > $@
725
726 # --------
727
728 # Objective-C bindings
729
730 DOM%.h : %.idl $(GENERATE_BINDINGS_SCRIPTS) bindings/scripts/CodeGeneratorObjC.pm bindings/objc/PublicDOMInterfaces.h
731         $(GENERATE_BINDINGS) --defines "$(FEATURE_DEFINES) LANGUAGE_OBJECTIVE_C" --generator ObjC $<
732
733 # --------
734
735 endif
736
737 # ------------------------