1 ## 2 ## Copyright 2009, The Android Open Source Project 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 ## * Redistributions of source code must retain the above copyright 8 ## notice, this list of conditions and the following disclaimer. 9 ## * Redistributions in binary form must reproduce the above copyright 10 ## notice, this list of conditions and the following disclaimer in the 11 ## documentation and/or other materials provided with the distribution. 12 ## 13 ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 14 ## EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 ## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 ## PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 17 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 ## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 ## PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 ## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 ## OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 ## 25 26 # CSS property names and value keywords 27 28 GEN := $(intermediates)/css/CSSPropertyNames.h 29 $(GEN): SCRIPT := $(LOCAL_PATH)/css/makeprop.pl 30 ifeq ($(ENABLE_SVG),true) 31 $(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/SVGCSSPropertyNames.in $(LOCAL_PATH)/css/AndroidCSSPropertyNames.in 32 else 33 $(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/AndroidCSSPropertyNames.in 34 endif 35 @echo "Generating CSSPropertyNames.h <= CSSPropertyNames.in" 36 @mkdir -p $(dir $@) 37 @cat $< > $(dir $@)/$(notdir $<) 38 @cat $^ > $(@:%.h=%.in) 39 @cp -f $(SCRIPT) $(dir $@) 40 @cd $(dir $@) ; perl ./$(notdir $(SCRIPT)) 41 LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp) 42 43 # We also need the .cpp files, which are generated as side effects of the 44 # above rules. Specifying this explicitly makes -j2 work. 45 $(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/css/%.cpp : $(intermediates)/css/%.h 46 47 48 GEN := $(intermediates)/css/CSSValueKeywords.h 49 $(GEN): SCRIPT := $(LOCAL_PATH)/css/makevalues.pl 50 $(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/SVGCSSValueKeywords.in 51 @echo "Generating CSSValueKeywords.h <= CSSValueKeywords.in" 52 @mkdir -p $(dir $@) 53 @cp -f $(SCRIPT) $(dir $@) 54 ifeq ($(ENABLE_SVG),true) 55 @perl -ne 'print lc' $^ > $(@:%.h=%.in) 56 else 57 @perl -ne 'print lc' $< > $(@:%.h=%.in) 58 endif 59 @cd $(dir $@); perl makevalues.pl 60 LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp) 61 62 # We also need the .cpp files, which are generated as side effects of the 63 # above rules. Specifying this explicitly makes -j2 work. 64 $(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/css/%.cpp : $(intermediates)/css/%.h 65 66 67 # DOCTYPE strings 68 69 GEN := $(intermediates)/html/DocTypeStrings.cpp 70 $(GEN): SCRIPT := $(LOCAL_PATH)/make-hash-tools.pl 71 $(GEN): PRIVATE_CUSTOM_TOOL = perl $(SCRIPT) $(dir $@) $< 72 $(GEN): $(LOCAL_PATH)/html/DocTypeStrings.gperf 73 $(transform-generated-source) 74 LOCAL_GENERATED_SOURCES += $(GEN) 75 76 # XMLViewer CSS 77 GEN := $(intermediates)/xml/XMLViewerCSS.h 78 $(GEN): SCRIPT := $(LOCAL_PATH)/inspector/xxd.pl 79 $(GEN): PRIVATE_CUSTOM_TOOL = perl $(SCRIPT) XMLViewer_css $< $@ 80 $(GEN): $(LOCAL_PATH)/xml/XMLViewer.css 81 $(transform-generated-source) 82 LOCAL_GENERATED_SOURCES += $(GEN) 83 84 # XMLViewer JS 85 GEN := $(intermediates)/xml/XMLViewerJS.h 86 $(GEN): SCRIPT := $(LOCAL_PATH)/inspector/xxd.pl 87 $(GEN): PRIVATE_CUSTOM_TOOL = perl $(SCRIPT) XMLViewer_js $< $@ 88 $(GEN): $(LOCAL_PATH)/xml/XMLViewer.js 89 $(transform-generated-source) 90 LOCAL_GENERATED_SOURCES += $(GEN) 91 92 # HTML entity table 93 94 GEN := $(intermediates)/html/HTMLEntityTable.cpp 95 $(GEN): SCRIPT := $(LOCAL_PATH)/html/parser/create-html-entity-table 96 $(GEN): WEBKITPY_RESOURCES_DIRECTORY := $(LOCAL_PATH)/../../Tools/Scripts/webkitpy 97 $(GEN): PRIVATE_CUSTOM_TOOL = $(dir $@)$(notdir $(SCRIPT)) -o $@ $< 98 $(GEN): $(LOCAL_PATH)/html/parser/HTMLEntityNames.in 99 @echo "Generating HTMLEntityTable.cpp" 100 @mkdir -p $(dir $@) 101 @cp -f $(SCRIPT) $(dir $@) 102 @cp -rf $(WEBKITPY_RESOURCES_DIRECTORY) $(dir $@) 103 $(transform-generated-source) 104 LOCAL_GENERATED_SOURCES += $(GEN) 105 106 107 # color names 108 109 GEN := $(intermediates)/platform/ColorData.cpp 110 $(GEN): SCRIPT := $(LOCAL_PATH)/make-hash-tools.pl 111 $(GEN): PRIVATE_CUSTOM_TOOL = perl $(SCRIPT) $(dir $@) $< 112 $(GEN): $(LOCAL_PATH)/platform/ColorData.gperf 113 $(transform-generated-source) 114 LOCAL_GENERATED_SOURCES += $(GEN) 115 116 117 # CSS tokenizer 118 119 GEN := $(intermediates)/css/tokenizer.cpp 120 $(GEN): PRIVATE_CUSTOM_TOOL = $(OLD_FLEX) -t $< | perl $(dir $<)/maketokenizer > $@ 121 $(GEN): $(LOCAL_PATH)/css/tokenizer.flex $(LOCAL_PATH)/css/maketokenizer 122 $(transform-generated-source) 123 # we have to do this dep by hand: 124 $(intermediates)/css/CSSParser.o : $(GEN) 125 126 # CSS grammar 127 128 GEN := $(intermediates)/CSSGrammar.cpp 129 $(GEN) : PRIVATE_YACCFLAGS := -p cssyy 130 $(GEN): $(LOCAL_PATH)/css/CSSGrammar.y 131 $(call webkit-transform-y-to-cpp,.cpp) 132 133 LOCAL_GENERATED_SOURCES += $(GEN) 134 135 # XPath grammar 136 137 GEN := $(intermediates)/XPathGrammar.cpp 138 $(GEN) : PRIVATE_YACCFLAGS := -p xpathyy 139 $(GEN): $(LOCAL_PATH)/xml/XPathGrammar.y 140 $(call webkit-transform-y-to-cpp,.cpp) 141 142 LOCAL_GENERATED_SOURCES += $(GEN) 143 # user agent style sheets 144 145 style_sheets := $(LOCAL_PATH)/css/html.css $(LOCAL_PATH)/css/quirks.css $(LOCAL_PATH)/css/fullscreen.css $(LOCAL_PATH)/css/view-source.css $(LOCAL_PATH)/css/mediaControls.css $(LOCAL_PATH)/css/mediaControlsAndroid.css 146 ifeq ($(ENABLE_SVG), true) 147 style_sheets := $(style_sheets) $(LOCAL_PATH)/css/svg.css 148 endif 149 GEN := $(intermediates)/css/UserAgentStyleSheets.h 150 make_css_file_arrays := $(LOCAL_PATH)/css/make-css-file-arrays.pl 151 $(GEN): PRIVATE_CUSTOM_TOOL = $< $@ $(basename $@).cpp $(filter %.css,$^) 152 $(GEN): $(make_css_file_arrays) $(style_sheets) 153 $(transform-generated-source) 154 LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp) 155 156 # character set name table 157 158 #gen_inputs := \ 159 $(LOCAL_PATH)/platform/make-charset-table.pl \ 160 $(LOCAL_PATH)/platform/character-sets.txt \ 161 $(LOCAL_PATH)/platform/android/android-encodings.txt 162 #GEN := $(intermediates)/platform/CharsetData.cpp 163 #$(GEN): PRIVATE_CUSTOM_TOOL = $^ "android::Encoding::ENCODING_" > $@ 164 #$(GEN): $(gen_inputs) 165 # $(transform-generated-source) 166 #LOCAL_GENERATED_SOURCES += $(GEN) 167 168 # the above rule will make this build too 169 $(intermediates)/css/UserAgentStyleSheets.cpp : $(GEN) 170 171 # XML attribute names 172 173 GEN:= $(intermediates)/XMLNSNames.cpp 174 $(GEN): PRIVATE_PATH := $(LOCAL_PATH) 175 $(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --attrs $(xmlns_attrs) --output $(dir $@) 176 $(GEN): xmlns_attrs := $(LOCAL_PATH)/xml/xmlnsattrs.in 177 $(GEN): $(LOCAL_PATH)/dom/make_names.pl $(xmlns_attrs) 178 $(transform-generated-source) 179 LOCAL_GENERATED_SOURCES += $(GEN) 180 181 GEN:= $(intermediates)/XMLNames.cpp 182 $(GEN): PRIVATE_PATH := $(LOCAL_PATH) 183 $(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --attrs $(xml_attrs) --output $(dir $@) 184 $(GEN): xml_attrs := $(LOCAL_PATH)/xml/xmlattrs.in 185 $(GEN): $(LOCAL_PATH)/dom/make_names.pl $(xml_attrs) 186 $(transform-generated-source) 187 LOCAL_GENERATED_SOURCES += $(GEN) 188 189 # XLink attribute names 190 191 GEN:= $(intermediates)/XLinkNames.cpp 192 $(GEN): PRIVATE_PATH := $(LOCAL_PATH) 193 $(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --attrs $(xlink_attrs) --output $(dir $@) 194 $(GEN): xlink_attrs := $(LOCAL_PATH)/svg/xlinkattrs.in 195 $(GEN): $(LOCAL_PATH)/dom/make_names.pl $(xlink_attrs) 196 $(transform-generated-source) 197 LOCAL_GENERATED_SOURCES += $(GEN) 198 199 ifeq ($(ENABLE_AUTOFILL),true) 200 # This is really ugly, but necessary. The following rules are taken from 201 # external/chromium/Android.mk. 202 # Chromium uses several third party libraries and headers that are already 203 # present on Android, but in different include paths. Generate a set of 204 # forwarding headers in the location that Chromium expects. We need to do 205 # this in both the Chromium and WebCore projects because of the 206 # WebKit <-> Chromium bindings which include headers from the Chromuim project. 207 208 THIRD_PARTY = $(intermediates)/third_party 209 CHROMIUM_SRC_DIR := $(LOCAL_PATH)/../../../chromium 210 SCRIPT := $(CHROMIUM_SRC_DIR)/android/generateAndroidForwardingHeader.pl 211 212 GEN := $(THIRD_PARTY)/expat/files/lib/expat.h 213 $(GEN): $(SCRIPT) 214 $(GEN): 215 perl $(SCRIPT) $@ "lib/expat.h" 216 LOCAL_GENERATED_SOURCES += $(GEN) 217 218 GEN := $(THIRD_PARTY)/skia/include/core/SkBitmap.h 219 $(GEN): $(SCRIPT) 220 $(GEN): 221 perl $(SCRIPT) $@ "include/core/SkBitmap.h" 222 LOCAL_GENERATED_SOURCES += $(GEN) 223 224 GEN := $(THIRD_PARTY)/WebKit/WebKit/chromium/public/WebFormControlElement.h 225 $(GEN): $(SCRIPT) 226 $(GEN): 227 perl $(SCRIPT) $@ "public/WebFormControlElement.h" 228 LOCAL_GENERATED_SOURCES += $(GEN) 229 230 GEN := $(THIRD_PARTY)/WebKit/WebKit/chromium/public/WebRegularExpression.h 231 $(GEN): $(SCRIPT) 232 $(GEN): 233 perl $(SCRIPT) $@ "public/WebRegularExpression.h" 234 LOCAL_GENERATED_SOURCES += $(GEN) 235 236 GEN := $(THIRD_PARTY)/WebKit/WebKit/chromium/public/WebString.h 237 $(GEN): $(SCRIPT) 238 $(GEN): 239 perl $(SCRIPT) $@ "public/WebString.h" 240 LOCAL_GENERATED_SOURCES += $(GEN) 241 242 endif 243 244 LOCAL_SRC_FILES += $(LOCAL_GENERATED_SOURCES) 245