2008-05-08 Julien Chaffraix <jchaffraix@webkit.org>
authorjchaffraix@webkit.org <jchaffraix@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 May 2008 23:59:39 +0000 (23:59 +0000)
committerjchaffraix@webkit.org <jchaffraix@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 May 2008 23:59:39 +0000 (23:59 +0000)
        Reviewed by Eric.

        Bug 18916: make_names.pl --factory needs to support custom c++ guard

        Add --guardFactoryWith to handle the cpp guard around generated factories.

        * DerivedSources.make: Set the guardFactoryWith variable for SVG factory.
        * GNUmakefile.am: Ditto.
        * WebCore.pro: Ditto.
        * dom/make_names.pl: Add guardFactoryWith option.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@32989 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/DerivedSources.make
WebCore/GNUmakefile.am
WebCore/WebCore.pro
WebCore/dom/make_names.pl

index 8f71f1a..86090af 100644 (file)
@@ -1,5 +1,18 @@
 2008-05-08  Julien Chaffraix  <jchaffraix@webkit.org>
 
+        Reviewed by Eric.
+
+        Bug 18916: make_names.pl --factory needs to support custom c++ guard
+
+        Add --guardFactoryWith to handle the cpp guard around generated factories.
+
+        * DerivedSources.make: Set the guardFactoryWith variable for SVG factory.
+        * GNUmakefile.am: Ditto.
+        * WebCore.pro: Ditto.
+        * dom/make_names.pl: Add guardFactoryWith option.
+
+2008-05-08  Julien Chaffraix  <jchaffraix@webkit.org>
+
         Reviewed by Adam Roben.
 
         wx & Gtk build fix.
index c96c7f2..cbdc359 100644 (file)
@@ -546,12 +546,12 @@ ifdef SVG_FLAGS
 
 SVGElementFactory.cpp SVGNames.cpp : dom/make_names.pl svg/svgtags.in svg/svgattrs.in
        perl $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --extraDefines "$(SVG_FLAGS)" \
-            --namespace SVG --cppNamespace WebCore --namespaceURI "http://www.w3.org/2000/svg" --factory --attrsNullNamespace --output .
+            --namespace SVG --guardFactoryWith "ENABLE(SVG)" --cppNamespace WebCore --namespaceURI "http://www.w3.org/2000/svg" --factory --attrsNullNamespace --output .
 else
 
 SVGElementFactory.cpp SVGNames.cpp : dom/make_names.pl svg/svgtags.in svg/svgattrs.in
        perl $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in \
-            --namespace SVG --cppNamespace WebCore --namespaceURI "http://www.w3.org/2000/svg" --factory --attrsNullNamespace --output .
+            --namespace SVG --guardFactoryWith "ENABLE(SVG)" --cppNamespace WebCore --namespaceURI "http://www.w3.org/2000/svg" --factory --attrsNullNamespace --output .
 
 endif
 
index eb6ad29..199326a 100644 (file)
@@ -2105,10 +2105,10 @@ DerivedSources/SVGNames.cpp: DerivedSources/SVGElementFactory.cpp;
 if SVG_FLAGS
 DerivedSources/SVGElementFactory.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/svg/svgtags.in $(WebCore)/svg/svgattrs.in
        $(PERL) $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --extraDefines "$(SVG_FEATURES)" \
-       --namespace SVG --cppNamespace WebCore --namespaceURI "http://www.w3.org/2000/svg" --factory --attrsNullNamespace --output $(GENSOURCES)
+       --namespace SVG --guardFactoryWith "ENABLE(SVG)" --cppNamespace WebCore --namespaceURI "http://www.w3.org/2000/svg" --factory --attrsNullNamespace --output $(GENSOURCES)
 else
 DerivedSources/SVGElementFactory.cpp: $(WebCore)/dom/make_names.pl $(WebCore)/svg/svgtags.in $(WebCore)/svg/svgattrs.in
-       $(PERL) $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --namespace SVG --cppNamespace WebCore --namespaceURI "http://www.w3.org/2000/svg" --factory --attrsNullNamespace --output $(GENSOURCES)
+       $(PERL) $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --namespace SVG --guardFactoryWith "ENABLE(SVG)" --cppNamespace WebCore --namespaceURI "http://www.w3.org/2000/svg" --factory --attrsNullNamespace --output $(GENSOURCES)
 
 endif # SVG_FLAGS
 
index f057a90..a80cffb 100644 (file)
@@ -1758,7 +1758,7 @@ gtk-port:SOURCES += \
 
         # GENERATOR 5-C:
         svgnames_a.output = $$GENERATED_SOURCES_DIR/SVGNames.cpp
-        svgnames_a.commands = perl $$PWD/dom/make_names.pl --tags $$PWD/svg/svgtags.in --attrs $$PWD/svg/svgattrs.in --extraDefines \"$${DEFINES}\" --namespace SVG --cppNamespace WebCore --namespaceURI 'http://www.w3.org/2000/svg' --factory --attrsNullNamespace --preprocessor \"$${QMAKE_MOC} -E\" --output $$GENERATED_SOURCES_DIR
+        svgnames_a.commands = perl $$PWD/dom/make_names.pl --tags $$PWD/svg/svgtags.in --attrs $$PWD/svg/svgattrs.in --extraDefines \"$${DEFINES}\" --namespace SVG --guardFactoryWith \"ENABLE(SVG)\" --cppNamespace WebCore --namespaceURI 'http://www.w3.org/2000/svg' --factory --attrsNullNamespace --preprocessor \"$${QMAKE_MOC} -E\" --output $$GENERATED_SOURCES_DIR
         svgnames_a.input = SVG_NAMES
         svgnames_a.dependency_type = TYPE_C
         svgnames_a.CONFIG = target_predeps
index b89579b..6ccba87 100755 (executable)
@@ -45,6 +45,7 @@ my $tagsNullNamespace = 0;
 my $attrsNullNamespace = 0;
 my $extraDefines = 0;
 my $preprocessor = "/usr/bin/gcc -E -P -x c++";
+my $guardFactoryWith = 0;
 
 GetOptions('tags=s' => \$tagsFile, 
     'attrs=s' => \$attrsFile,
@@ -57,7 +58,8 @@ GetOptions('tags=s' => \$tagsFile,
     'tagsNullNamespace' => \$tagsNullNamespace,
     'attrsNullNamespace' => \$attrsNullNamespace,
     'extraDefines=s' => \$extraDefines,
-    'preprocessor=s' => \$preprocessor);
+    'preprocessor=s' => \$preprocessor,
+    'guardFactoryWith=s' => \$guardFactoryWith);
 
 die "You must specify a namespace (e.g. SVG) for <namespace>Names.h" unless $namespace;
 die "You must specify a namespaceURI (e.g. http://www.w3.org/2000/svg)" unless $namespaceURI;
@@ -119,7 +121,7 @@ sub printMacros
 sub printConstructors
 {
     my ($F, @names) = @_;
-    print F "#if ENABLE(SVG)\n";
+    print F "#if $guardFactoryWith\n" if $guardFactoryWith;
     for my $name (@names) {
         my $upperCase = upperCaseName($name);
     
@@ -128,7 +130,7 @@ sub printConstructors
         print F "    return new ${namespace}${upperCase}Element(${name}Tag, doc);\n";
         print F "}\n\n";
     }
-    print F "#endif\n";
+    print F "#endif\n" if $guardFactoryWith;
 }
 
 sub printFunctionInits
@@ -407,8 +409,9 @@ END
 
 printConstructors($F, @tags);
 
+print F "#if $guardFactoryWith\n" if $guardFactoryWith;
+
 print F <<END
-#if ENABLE(SVG)
 static inline void createFunctionMapIfNecessary()
 {
     if (gFunctionMap)
@@ -422,13 +425,18 @@ END
 
 printFunctionInits($F, @tags);
 
-print F <<END
-}
-#endif
+print F "}\n";
+print F "#endif\n\n" if $guardFactoryWith;
 
+print F <<END
 ${namespace}Element *${namespace}ElementFactory::create${namespace}Element(const QualifiedName& qName, Document* doc, bool createdByParser)
 {
-#if ENABLE(SVG)
+END
+;
+
+print F "#if $guardFactoryWith\n" if $guardFactoryWith;
+
+print F <<END
     // Don't make elements without a document
     if (!doc)
         return 0;
@@ -445,9 +453,21 @@ ${namespace}Element *${namespace}ElementFactory::create${namespace}Element(const
         return func(doc, createdByParser);
 
     return new ${namespace}Element(qName, doc);
+END
+;
+
+if ($guardFactoryWith) {
+
+print F <<END
 #else
     return 0;
 #endif
+END
+;
+
+}
+
+print F <<END
 }
 
 } // namespace