OLD | NEW |
1 #!/usr/bin/perl -w | 1 #!/usr/bin/perl -w |
2 | 2 |
3 # Copyright (C) 2005, 2006, 2007, 2009 Apple Inc. All rights reserved. | 3 # Copyright (C) 2005, 2006, 2007, 2009 Apple Inc. All rights reserved. |
4 # Copyright (C) 2009, Julien Chaffraix <jchaffraix@webkit.org> | 4 # Copyright (C) 2009, Julien Chaffraix <jchaffraix@webkit.org> |
5 # Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmob
ile.com/) | 5 # Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmob
ile.com/) |
6 # Copyright (C) 2011 Ericsson AB. All rights reserved. | 6 # Copyright (C) 2011 Ericsson AB. All rights reserved. |
7 # | 7 # |
8 # Redistribution and use in source and binary forms, with or without | 8 # Redistribution and use in source and binary forms, with or without |
9 # modification, are permitted provided that the following conditions | 9 # modification, are permitted provided that the following conditions |
10 # are met: | 10 # are met: |
(...skipping 20 matching lines...) Expand all Loading... |
31 | 31 |
32 use strict; | 32 use strict; |
33 | 33 |
34 use StaticString; | 34 use StaticString; |
35 use Config; | 35 use Config; |
36 use Getopt::Long; | 36 use Getopt::Long; |
37 use File::Path; | 37 use File::Path; |
38 use File::Spec; | 38 use File::Spec; |
39 use IO::File; | 39 use IO::File; |
40 use InFilesParser; | 40 use InFilesParser; |
| 41 use idltopath; |
41 | 42 |
42 sub readTags($$); | 43 sub readTags($$); |
43 sub readAttrs($$); | 44 sub readAttrs($$); |
44 | 45 |
45 my $printFactory = 0; | 46 my $printFactory = 0; |
| 47 my $idlToPathFile = ""; |
46 my $fontNamesIn = ""; | 48 my $fontNamesIn = ""; |
47 my $tagsFile = ""; | 49 my $tagsFile = ""; |
48 my $attrsFile = ""; | 50 my $attrsFile = ""; |
49 my $outputDir = "."; | 51 my $outputDir = "."; |
50 my %parsedTags = (); | 52 my %parsedTags = (); |
51 my %parsedAttrs = (); | 53 my %parsedAttrs = (); |
52 my %enabledTags = (); | 54 my %enabledTags = (); |
53 my %enabledAttrs = (); | 55 my %enabledAttrs = (); |
54 my %allTags = (); | 56 my %allTags = (); |
55 my %allAttrs = (); | 57 my %allAttrs = (); |
(...skipping 15 matching lines...) Expand all Loading... |
71 } | 73 } |
72 my $preprocessor = $gccLocation . " -E -x c++"; | 74 my $preprocessor = $gccLocation . " -E -x c++"; |
73 | 75 |
74 GetOptions( | 76 GetOptions( |
75 'tags=s' => \$tagsFile, | 77 'tags=s' => \$tagsFile, |
76 'attrs=s' => \$attrsFile, | 78 'attrs=s' => \$attrsFile, |
77 'factory' => \$printFactory, | 79 'factory' => \$printFactory, |
78 'outputDir=s' => \$outputDir, | 80 'outputDir=s' => \$outputDir, |
79 'extraDefines=s' => \$extraDefines, | 81 'extraDefines=s' => \$extraDefines, |
80 'preprocessor=s' => \$preprocessor, | 82 'preprocessor=s' => \$preprocessor, |
| 83 'idltopathfile=s' => \$idlToPathFile, |
81 'fonts=s' => \$fontNamesIn | 84 'fonts=s' => \$fontNamesIn |
82 ); | 85 ); |
83 | 86 |
| 87 initIdlToPath($idlToPathFile); |
| 88 |
84 mkpath($outputDir); | 89 mkpath($outputDir); |
85 | 90 |
86 if (length($fontNamesIn)) { | 91 if (length($fontNamesIn)) { |
87 my $names = new IO::File; | 92 my $names = new IO::File; |
88 my $familyNamesFileBase = "WebKitFontFamily"; | 93 my $familyNamesFileBase = "WebKitFontFamily"; |
89 | 94 |
90 open($names, $fontNamesIn) or die "Failed to open file: $fontNamesIn"; | 95 open($names, $fontNamesIn) or die "Failed to open file: $fontNamesIn"; |
91 | 96 |
92 $initDefaults = 0; | 97 $initDefaults = 0; |
93 my $Parser = InFilesParser->new(); | 98 my $Parser = InFilesParser->new(); |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 { | 536 { |
532 my ($F, $prefix, $nsName, $usedNamespace) = @_; | 537 my ($F, $prefix, $nsName, $usedNamespace) = @_; |
533 | 538 |
534 print F "#include \"config.h\"\n\n"; | 539 print F "#include \"config.h\"\n\n"; |
535 print F "#ifdef SKIP_STATIC_CONSTRUCTORS_ON_GCC\n"; | 540 print F "#ifdef SKIP_STATIC_CONSTRUCTORS_ON_GCC\n"; |
536 print F "#define ${prefix}_${nsName}NAMES_HIDE_GLOBALS 1\n"; | 541 print F "#define ${prefix}_${nsName}NAMES_HIDE_GLOBALS 1\n"; |
537 print F "#else\n"; | 542 print F "#else\n"; |
538 print F "#define QNAME_DEFAULT_CONSTRUCTOR 1\n"; | 543 print F "#define QNAME_DEFAULT_CONSTRUCTOR 1\n"; |
539 print F "#endif\n\n"; | 544 print F "#endif\n\n"; |
540 | 545 |
541 print F "#include \"${nsName}Names.h\"\n\n"; | 546 print F "#include \"./././${nsName}Names.h\"\n\n"; |
542 print F "#include <wtf/StaticConstructors.h>\n"; | 547 print F "#include <wtf/StaticConstructors.h>\n"; |
543 | 548 |
544 print F "namespace WebCore {\n\n"; | 549 print F "namespace WebCore {\n\n"; |
545 print F "namespace ${nsName}Names {\n\n"; | 550 print F "namespace ${nsName}Names {\n\n"; |
546 print F "using namespace $usedNamespace;\n\n"; | 551 print F "using namespace $usedNamespace;\n\n"; |
547 } | 552 } |
548 | 553 |
549 sub printInit | 554 sub printInit |
550 { | 555 { |
551 my ($F, $isDefinition) = @_; | 556 my ($F, $isDefinition) = @_; |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 my %tagsSeen; | 723 my %tagsSeen; |
719 for my $tagName (sort keys %enabledTags) { | 724 for my $tagName (sort keys %enabledTags) { |
720 my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName}; | 725 my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName}; |
721 next if defined($tagsSeen{$JSInterfaceName}) || usesDefaultJSWrapper($ta
gName); | 726 next if defined($tagsSeen{$JSInterfaceName}) || usesDefaultJSWrapper($ta
gName); |
722 if ($enabledTags{$tagName}{conditional}) { | 727 if ($enabledTags{$tagName}{conditional}) { |
723 # We skip feature-define-specific #includes here since we handle the
m separately. | 728 # We skip feature-define-specific #includes here since we handle the
m separately. |
724 next; | 729 next; |
725 } | 730 } |
726 $tagsSeen{$JSInterfaceName} = 1; | 731 $tagsSeen{$JSInterfaceName} = 1; |
727 | 732 |
728 print F "#include \"V8${JSInterfaceName}.h\"\n"; | 733 # V8HTMLElementWrapperFactory.cpp that uses this code is generated into
"webkit" and for instance V8HTMLAnchorElement.h is in "webkit/bindings" |
| 734 print F "#include \"bindings/V8${JSInterfaceName}.h\"\n"; |
729 } | 735 } |
730 print F "#include \"V8$parameters{fallbackInterfaceName}.h\"\n"; | 736 print F "#include \"bindings/V8$parameters{fallbackInterfaceName}.h\"\n"; |
731 } | 737 } |
732 | 738 |
733 sub printElementIncludes | 739 sub printElementIncludes |
734 { | 740 { |
735 my $F = shift; | 741 my $F = shift; |
736 | 742 |
737 my %tagsSeen; | 743 my %tagsSeen; |
738 for my $tagName (sort keys %enabledTags) { | 744 for my $tagName (sort keys %enabledTags) { |
739 my $interfaceName = $enabledTags{$tagName}{interfaceName}; | 745 my $interfaceName = $enabledTags{$tagName}{interfaceName}; |
740 next if defined($tagsSeen{$interfaceName}); | 746 next if defined($tagsSeen{$interfaceName}); |
741 if ($enabledTags{$tagName}{conditional}) { | 747 if ($enabledTags{$tagName}{conditional}) { |
742 # We skip feature-define-specific #includes here since we handle the
m separately. | 748 # We skip feature-define-specific #includes here since we handle the
m separately. |
743 next; | 749 next; |
744 } | 750 } |
745 $tagsSeen{$interfaceName} = 1; | 751 $tagsSeen{$interfaceName} = 1; |
746 | 752 |
747 print F "#include \"${interfaceName}.h\"\n"; | 753 my $includepath = idlToPath($interfaceName); |
| 754 print F "#include \"$includepath${interfaceName}.h\"\n"; |
748 } | 755 } |
749 print F "#include \"$parameters{fallbackInterfaceName}.h\"\n"; | 756 my $fallbackInterface = $parameters{fallbackInterfaceName}; |
| 757 if ($fallbackInterface) { |
| 758 my $fallbackInterfacePath = idlToPath($fallbackInterface); |
| 759 print F "#include \"$fallbackInterfacePath$fallbackInterface.h\"\n"; |
| 760 } |
750 } | 761 } |
751 | 762 |
752 sub printConditionalElementIncludes | 763 sub printConditionalElementIncludes |
753 { | 764 { |
754 my ($F, $shouldIncludeV8Headers) = @_; | 765 my ($F, $shouldIncludeV8Headers) = @_; |
755 | 766 |
756 my %conditionals; | 767 my %conditionals; |
757 my %unconditionalElementIncludes; | 768 my %unconditionalElementIncludes; |
758 my %unconditionalJSElementIncludes; | 769 my %unconditionalJSElementIncludes; |
759 | 770 |
760 for my $tagName (keys %enabledTags) { | 771 for my $tagName (keys %enabledTags) { |
761 my $conditional = $enabledTags{$tagName}{conditional}; | 772 my $conditional = $enabledTags{$tagName}{conditional}; |
762 my $interfaceName = $enabledTags{$tagName}{interfaceName}; | 773 my $interfaceName = $enabledTags{$tagName}{interfaceName}; |
763 my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName}; | 774 my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName}; |
764 | 775 |
765 if ($conditional) { | 776 if ($conditional) { |
766 $conditionals{$conditional}{interfaceNames}{$interfaceName} = 1; | 777 $conditionals{$conditional}{interfaceNames}{$interfaceName} = 1; |
767 $conditionals{$conditional}{JSInterfaceNames}{$JSInterfaceName} = 1; | 778 $conditionals{$conditional}{JSInterfaceNames}{$JSInterfaceName} = 1; |
768 } else { | 779 } else { |
769 $unconditionalElementIncludes{$interfaceName} = 1; | 780 $unconditionalElementIncludes{$interfaceName} = 1; |
770 $unconditionalJSElementIncludes{$JSInterfaceName} = 1; | 781 $unconditionalJSElementIncludes{$JSInterfaceName} = 1; |
771 } | 782 } |
772 } | 783 } |
773 | 784 |
774 for my $conditional (sort keys %conditionals) { | 785 for my $conditional (sort keys %conditionals) { |
775 print F "\n#if ENABLE($conditional)\n"; | 786 print F "\n#if ENABLE($conditional)\n"; |
776 for my $interfaceName (sort keys %{$conditionals{$conditional}{interface
Names}}) { | 787 for my $interfaceName (sort keys %{$conditionals{$conditional}{interface
Names}}) { |
777 next if $unconditionalElementIncludes{$interfaceName}; | 788 next if $unconditionalElementIncludes{$interfaceName}; |
778 print F "#include \"$interfaceName.h\"\n"; | 789 my $interfacePath = idlToPath($interfaceName); |
| 790 print F "#include \"$interfacePath/$interfaceName.h\"\n"; |
779 } | 791 } |
780 if ($shouldIncludeV8Headers) { | 792 if ($shouldIncludeV8Headers) { |
781 for my $JSInterfaceName (sort keys %{$conditionals{$conditional}{JSI
nterfaceNames}}) { | 793 for my $JSInterfaceName (sort keys %{$conditionals{$conditional}{JSI
nterfaceNames}}) { |
782 next if $unconditionalJSElementIncludes{$JSInterfaceName}; | 794 next if $unconditionalJSElementIncludes{$JSInterfaceName}; |
783 print F "#include \"V8$JSInterfaceName.h\"\n"; | 795 print F "#include \"V8$JSInterfaceName.h\"\n"; |
784 } | 796 } |
785 } | 797 } |
786 print F "#endif\n"; | 798 print F "#endif\n"; |
787 } | 799 } |
788 } | 800 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
831 ; | 843 ; |
832 | 844 |
833 printElementIncludes($F); | 845 printElementIncludes($F); |
834 | 846 |
835 print F "\n#include <wtf/HashMap.h>\n"; | 847 print F "\n#include <wtf/HashMap.h>\n"; |
836 | 848 |
837 printConditionalElementIncludes($F); | 849 printConditionalElementIncludes($F); |
838 | 850 |
839 print F <<END | 851 print F <<END |
840 | 852 |
841 #include "ContextFeatures.h" | 853 #include "core/dom/ContextFeatures.h" |
842 #include "Document.h" | 854 #include "core/dom/Document.h" |
| 855 #include "core/page/Settings.h" |
843 #include "RuntimeEnabledFeatures.h" | 856 #include "RuntimeEnabledFeatures.h" |
844 #include "Settings.h" | |
845 | 857 |
846 #include "CustomElementRegistry.h" | 858 #include "CustomElementRegistry.h" |
847 | 859 |
848 namespace WebCore { | 860 namespace WebCore { |
849 | 861 |
850 using namespace $parameters{namespace}Names; | 862 using namespace $parameters{namespace}Names; |
851 | 863 |
852 END | 864 END |
853 ; | 865 ; |
854 | 866 |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1094 print F "\n#include \"$parameters{namespace}Names.h\"\n\n"; | 1106 print F "\n#include \"$parameters{namespace}Names.h\"\n\n"; |
1095 | 1107 |
1096 printElementIncludes($F); | 1108 printElementIncludes($F); |
1097 | 1109 |
1098 print F "\n#include <wtf/StdLibExtras.h>\n"; | 1110 print F "\n#include <wtf/StdLibExtras.h>\n"; |
1099 | 1111 |
1100 printConditionalElementIncludes($F, 1); | 1112 printConditionalElementIncludes($F, 1); |
1101 | 1113 |
1102 print F <<END | 1114 print F <<END |
1103 | 1115 |
1104 #include "ContextFeatures.h" | 1116 #include "core/dom/ContextFeatures.h" |
1105 #include "Document.h" | 1117 #include "core/dom/Document.h" |
| 1118 #include "core/page/Settings.h" |
1106 #include "RuntimeEnabledFeatures.h" | 1119 #include "RuntimeEnabledFeatures.h" |
1107 #include "Settings.h" | |
1108 | 1120 |
1109 #include "V8$parameters{namespace}Element.h" | 1121 #include "V8$parameters{namespace}Element.h" |
1110 | 1122 |
1111 #include "bindings/v8/CustomElementHelpers.h" | 1123 #include "bindings/v8/CustomElementHelpers.h" |
1112 | 1124 |
1113 #include <v8.h> | 1125 #include <v8.h> |
1114 | 1126 |
1115 namespace WebCore { | 1127 namespace WebCore { |
1116 | 1128 |
1117 using namespace $parameters{namespace}Names; | 1129 using namespace $parameters{namespace}Names; |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1233 open F, ">" . $outputDir . "/V8" . $wrapperFactoryFileName . ".h"; | 1245 open F, ">" . $outputDir . "/V8" . $wrapperFactoryFileName . ".h"; |
1234 | 1246 |
1235 printLicenseHeader($F); | 1247 printLicenseHeader($F); |
1236 | 1248 |
1237 print F "#ifndef V8$parameters{namespace}ElementWrapperFactory_h\n"; | 1249 print F "#ifndef V8$parameters{namespace}ElementWrapperFactory_h\n"; |
1238 print F "#define V8$parameters{namespace}ElementWrapperFactory_h\n\n"; | 1250 print F "#define V8$parameters{namespace}ElementWrapperFactory_h\n\n"; |
1239 | 1251 |
1240 print F "#if $parameters{guardFactoryWith}\n" if $parameters{guardFactoryWit
h}; | 1252 print F "#if $parameters{guardFactoryWith}\n" if $parameters{guardFactoryWit
h}; |
1241 | 1253 |
1242 print F <<END | 1254 print F <<END |
1243 #include <V8$parameters{namespace}Element.h> | 1255 #include "bindings/V8$parameters{namespace}Element.h" |
1244 #include <V8$parameters{fallbackInterfaceName}.h> | 1256 #include "bindings/V8$parameters{fallbackInterfaceName}.h" |
1245 #include <v8.h> | 1257 #include <v8.h> |
1246 | 1258 |
1247 namespace WebCore { | 1259 namespace WebCore { |
1248 | 1260 |
1249 class $parameters{namespace}Element; | 1261 class $parameters{namespace}Element; |
1250 | 1262 |
1251 const QualifiedName* find$parameters{namespace}TagNameOfV8Type(const Wrapper
TypeInfo*); | 1263 const QualifiedName* find$parameters{namespace}TagNameOfV8Type(const Wrapper
TypeInfo*); |
1252 v8::Handle<v8::Object> createV8$parameters{namespace}Wrapper($parameters{nam
espace}Element*, v8::Handle<v8::Object> creationContext, v8::Isolate*); | 1264 v8::Handle<v8::Object> createV8$parameters{namespace}Wrapper($parameters{nam
espace}Element*, v8::Handle<v8::Object> creationContext, v8::Isolate*); |
1253 inline v8::Handle<v8::Object> createV8$parameters{namespace}DirectWrapper($p
arameters{namespace}Element* element, v8::Handle<v8::Object> creationContext, v8
::Isolate* isolate) | 1265 inline v8::Handle<v8::Object> createV8$parameters{namespace}DirectWrapper($p
arameters{namespace}Element* element, v8::Handle<v8::Object> creationContext, v8
::Isolate* isolate) |
1254 { | 1266 { |
1255 return V8$parameters{namespace}Element::createWrapper(element, creationC
ontext, isolate); | 1267 return V8$parameters{namespace}Element::createWrapper(element, creationC
ontext, isolate); |
1256 } | 1268 } |
1257 inline v8::Handle<v8::Object> createV8$parameters{namespace}FallbackWrapper(
$parameters{fallbackInterfaceName}* element, v8::Handle<v8::Object> creationCont
ext, v8::Isolate* isolate) | 1269 inline v8::Handle<v8::Object> createV8$parameters{namespace}FallbackWrapper(
$parameters{fallbackInterfaceName}* element, v8::Handle<v8::Object> creationCont
ext, v8::Isolate* isolate) |
1258 { | 1270 { |
1259 return V8$parameters{fallbackInterfaceName}::createWrapper(element, crea
tionContext, isolate); | 1271 return V8$parameters{fallbackInterfaceName}::createWrapper(element, crea
tionContext, isolate); |
1260 } | 1272 } |
1261 } | 1273 } |
1262 END | 1274 END |
1263 ; | 1275 ; |
1264 print F "#endif // $parameters{guardFactoryWith}\n\n" if $parameters{guardFa
ctoryWith}; | 1276 print F "#endif // $parameters{guardFactoryWith}\n\n" if $parameters{guardFa
ctoryWith}; |
1265 | 1277 |
1266 print F "#endif // V8$parameters{namespace}ElementWrapperFactory_h\n"; | 1278 print F "#endif // V8$parameters{namespace}ElementWrapperFactory_h\n"; |
1267 | 1279 |
1268 close F; | 1280 close F; |
1269 } | 1281 } |
OLD | NEW |