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