# Copyright (c) 2009 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. { 'includes': [ 'features.gypi', '../third_party/WebKit/WebCore/WebCore.gypi', ], 'variables': { 'webcore_include_dirs': [ '../third_party/WebKit/WebCore', '../third_party/WebKit/WebCore/accessibility', '../third_party/WebKit/WebCore/accessibility/chromium', '../third_party/WebKit/WebCore/bindings/v8', '../third_party/WebKit/WebCore/bindings/v8/custom', '../third_party/WebKit/WebCore/bridge', '../third_party/WebKit/WebCore/css', '../third_party/WebKit/WebCore/dom', '../third_party/WebKit/WebCore/dom/default', '../third_party/WebKit/WebCore/editing', '../third_party/WebKit/WebCore/history', '../third_party/WebKit/WebCore/html', '../third_party/WebKit/WebCore/html/canvas', '../third_party/WebKit/WebCore/inspector', '../third_party/WebKit/WebCore/loader', '../third_party/WebKit/WebCore/loader/appcache', '../third_party/WebKit/WebCore/loader/archive', '../third_party/WebKit/WebCore/loader/icon', '../third_party/WebKit/WebCore/notifications', '../third_party/WebKit/WebCore/page', '../third_party/WebKit/WebCore/page/animation', '../third_party/WebKit/WebCore/page/chromium', '../third_party/WebKit/WebCore/platform', '../third_party/WebKit/WebCore/platform/animation', '../third_party/WebKit/WebCore/platform/chromium', '../third_party/WebKit/WebCore/platform/graphics', '../third_party/WebKit/WebCore/platform/graphics/chromium', '../third_party/WebKit/WebCore/platform/graphics/opentype', '../third_party/WebKit/WebCore/platform/graphics/skia', '../third_party/WebKit/WebCore/platform/graphics/transforms', '../third_party/WebKit/WebCore/platform/image-decoders', '../third_party/WebKit/WebCore/platform/image-decoders/bmp', '../third_party/WebKit/WebCore/platform/image-decoders/gif', '../third_party/WebKit/WebCore/platform/image-decoders/ico', '../third_party/WebKit/WebCore/platform/image-decoders/jpeg', '../third_party/WebKit/WebCore/platform/image-decoders/png', '../third_party/WebKit/WebCore/platform/image-decoders/skia', '../third_party/WebKit/WebCore/platform/image-decoders/xbm', '../third_party/WebKit/WebCore/platform/image-encoders/skia', '../third_party/WebKit/WebCore/platform/mock', '../third_party/WebKit/WebCore/platform/network', '../third_party/WebKit/WebCore/platform/network/chromium', '../third_party/WebKit/WebCore/platform/sql', '../third_party/WebKit/WebCore/platform/text', '../third_party/WebKit/WebCore/plugins', '../third_party/WebKit/WebCore/rendering', '../third_party/WebKit/WebCore/rendering/style', '../third_party/WebKit/WebCore/storage', '../third_party/WebKit/WebCore/svg', '../third_party/WebKit/WebCore/svg/animation', '../third_party/WebKit/WebCore/svg/graphics', '../third_party/WebKit/WebCore/workers', '../third_party/WebKit/WebCore/xml', ], 'conditions': [ ['OS=="mac"', { 'webcore_include_dirs+': [ # platform/graphics/cg and mac needs to come before # platform/graphics/chromium so that the Mac build picks up the # version of ImageBufferData.h in the cg directory and # FontPlatformData.h in the mac directory. The + prepends this # directory to the list. # TODO(port): This shouldn't need to be prepended. # TODO(port): Eliminate dependency on platform/graphics/mac and # related directories. # platform/graphics/cg may need to stick around, though. '../third_party/WebKit/WebCore/platform/graphics/cg', '../third_party/WebKit/WebCore/platform/graphics/mac', ], 'webcore_include_dirs': [ # TODO(port): Eliminate dependency on platform/mac and related # directories. '../third_party/WebKit/WebCore/loader/archive/cf', '../third_party/WebKit/WebCore/platform/mac', '../third_party/WebKit/WebCore/platform/text/mac', ], }], ['OS=="win"', { 'webcore_include_dirs': [ '../third_party/WebKit/WebCore/page/win', '../third_party/WebKit/WebCore/platform/graphics/win', '../third_party/WebKit/WebCore/platform/text/win', '../third_party/WebKit/WebCore/platform/win', ], }], ], }, 'targets': [ { 'target_name': 'webcore', 'type': '<(library)', 'msvs_guid': '1C16337B-ACF3-4D03-AA90-851C5B5EADA6', 'dependencies': [ 'config.gyp:config', 'javascriptcore.gyp:pcre', 'javascriptcore.gyp:wtf', '../build/temp_gyp/googleurl.gyp:googleurl', '../skia/skia.gyp:skia', '../third_party/libjpeg/libjpeg.gyp:libjpeg', '../third_party/libpng/libpng.gyp:libpng', '../third_party/libxml/libxml.gyp:libxml', '../third_party/libxslt/libxslt.gyp:libxslt', '../third_party/npapi/npapi.gyp:npapi', '../third_party/sqlite/sqlite.gyp:sqlite', ], 'defines': [ '<@(feature_defines)', '<@(non_feature_defines)', ], 'actions': [ # Actions to build derived sources. { 'action_name': 'CSSPropertyNames', 'inputs': [ '../third_party/WebKit/WebCore/css/makeprop.pl', '../third_party/WebKit/WebCore/css/CSSPropertyNames.in', '../third_party/WebKit/WebCore/css/SVGCSSPropertyNames.in', ], 'outputs': [ '<(INTERMEDIATE_DIR)/CSSPropertyNames.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSPropertyNames.h', ], 'action': ['python', 'build/action_csspropertynames.py', '<@(_outputs)', '--', '<@(_inputs)'], }, { 'action_name': 'CSSValueKeywords', 'inputs': [ '../third_party/WebKit/WebCore/css/makevalues.pl', '../third_party/WebKit/WebCore/css/CSSValueKeywords.in', '../third_party/WebKit/WebCore/css/SVGCSSValueKeywords.in', ], 'outputs': [ '<(INTERMEDIATE_DIR)/CSSValueKeywords.c', '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSValueKeywords.h', ], 'action': ['python', 'build/action_cssvaluekeywords.py', '<@(_outputs)', '--', '<@(_inputs)'], }, { 'action_name': 'HTMLNames', 'inputs': [ '../third_party/WebKit/WebCore/dom/make_names.pl', '../third_party/WebKit/WebCore/html/HTMLTagNames.in', '../third_party/WebKit/WebCore/html/HTMLAttributeNames.in', ], 'outputs': [ '<(INTERMEDIATE_DIR)/HTMLNames.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/HTMLNames.h', '<(INTERMEDIATE_DIR)/HTMLElementFactory.cpp', # Pass --wrapperFactory to make_names to get these (JSC build?) #'<(INTERMEDIATE_DIR)/JSHTMLElementWrapperFactory.cpp', #'<(INTERMEDIATE_DIR)/JSHTMLElementWrapperFactory.h', ], 'action': ['python', 'build/action_makenames.py', '<@(_outputs)', '--', '<@(_inputs)', '--', '--factory', '--extraDefines', '<(feature_defines)'], 'process_outputs_as_sources': 1, }, { 'action_name': 'SVGNames', 'inputs': [ '../third_party/WebKit/WebCore/dom/make_names.pl', '../third_party/WebKit/WebCore/svg/svgtags.in', '../third_party/WebKit/WebCore/svg/svgattrs.in', ], 'outputs': [ '<(INTERMEDIATE_DIR)/SVGNames.cpp', '<(INTERMEDIATE_DIR)/SVGNames.h', '<(INTERMEDIATE_DIR)/SVGElementFactory.cpp', '<(INTERMEDIATE_DIR)/SVGElementFactory.h', # Pass --wrapperFactory to make_names to get these (JSC build?) #'<(INTERMEDIATE_DIR)/JSSVGElementWrapperFactory.cpp', #'<(INTERMEDIATE_DIR)/JSSVGElementWrapperFactory.h', ], 'action': ['python', 'build/action_makenames.py', '<@(_outputs)', '--', '<@(_inputs)', '--', '--factory', '--extraDefines', '<(feature_defines)'], 'process_outputs_as_sources': 1, }, { 'action_name': 'UserAgentStyleSheets', 'inputs': [ '../third_party/WebKit/WebCore/css/make-css-file-arrays.pl', '../third_party/WebKit/WebCore/css/html.css', '../third_party/WebKit/WebCore/css/quirks.css', '../third_party/WebKit/WebCore/css/view-source.css', '../third_party/WebKit/WebCore/css/themeChromiumLinux.css', '../third_party/WebKit/WebCore/css/themeWin.css', '../third_party/WebKit/WebCore/css/themeWinQuirks.css', '../third_party/WebKit/WebCore/css/svg.css', '../third_party/WebKit/WebCore/css/mediaControls.css', '../third_party/WebKit/WebCore/css/mediaControlsChromium.css', ], 'outputs': [ '<(INTERMEDIATE_DIR)/UserAgentStyleSheets.h', '<(INTERMEDIATE_DIR)/UserAgentStyleSheetsData.cpp', ], 'action': ['python', 'build/action_useragentstylesheets.py', '<@(_outputs)', '--', '<@(_inputs)'], 'process_outputs_as_sources': 1, }, { 'action_name': 'XLinkNames', 'inputs': [ '../third_party/WebKit/WebCore/dom/make_names.pl', '../third_party/WebKit/WebCore/svg/xlinkattrs.in', ], 'outputs': [ '<(INTERMEDIATE_DIR)/XLinkNames.cpp', '<(INTERMEDIATE_DIR)/XLinkNames.h', ], 'action': ['python', 'build/action_makenames.py', '<@(_outputs)', '--', '<@(_inputs)', '--', '--extraDefines', '<(feature_defines)'], 'process_outputs_as_sources': 1, }, { 'action_name': 'XMLNames', 'inputs': [ '../third_party/WebKit/WebCore/dom/make_names.pl', '../third_party/WebKit/WebCore/xml/xmlattrs.in', ], 'outputs': [ '<(INTERMEDIATE_DIR)/XMLNames.cpp', '<(INTERMEDIATE_DIR)/XMLNames.h', ], 'action': ['python', 'build/action_makenames.py', '<@(_outputs)', '--', '<@(_inputs)', '--', '--extraDefines', '<(feature_defines)'], 'process_outputs_as_sources': 1, }, { 'action_name': 'tokenizer', 'inputs': [ '../third_party/WebKit/WebCore/css/maketokenizer', '../third_party/WebKit/WebCore/css/tokenizer.flex', ], 'outputs': [ '<(INTERMEDIATE_DIR)/tokenizer.cpp', ], 'action': ['python', 'build/action_maketokenizer.py', '<@(_outputs)', '--', '<@(_inputs)'], }, ], 'rules': [ # Rules to build derived sources. { 'rule_name': 'bison', 'extension': 'y', 'outputs': [ '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).cpp', '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).h' ], 'action': ['python', 'build/rule_bison.py', '<(RULE_INPUT_PATH)', '<(INTERMEDIATE_DIR)'], 'process_outputs_as_sources': 1, }, { 'rule_name': 'gperf', 'extension': 'gperf', # gperf output is only ever #included by other source files. As # such, process_outputs_as_sources is off. Some gperf output is # #included as *.c and some as *.cpp. Since there's no way to tell # which one will be needed in a rule definition, declare both as # outputs. The harness script will generate one file and copy it to # the other. # # This rule places outputs in SHARED_INTERMEDIATE_DIR because glue # needs access to HTMLEntityNames.c. 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/webkit/<(RULE_INPUT_ROOT).c', '<(SHARED_INTERMEDIATE_DIR)/webkit/<(RULE_INPUT_ROOT).cpp', ], 'action': ['python', 'build/rule_gperf.py', '<(RULE_INPUT_PATH)', '<(SHARED_INTERMEDIATE_DIR)/webkit'], 'process_outputs_as_sources': 0, }, # Rule to build generated JavaScript (V8) bindings from .idl source. { 'rule_name': 'binding', 'extension': 'idl', 'msvs_external_rule': 1, 'inputs': [ '../third_party/WebKit/WebCore/bindings/scripts/generate-bindings.pl', '../third_party/WebKit/WebCore/bindings/scripts/CodeGenerator.pm', '../third_party/WebKit/WebCore/bindings/scripts/CodeGeneratorV8.pm', '../third_party/WebKit/WebCore/bindings/scripts/IDLParser.pm', '../third_party/WebKit/WebCore/bindings/scripts/IDLStructure.pm', ], 'outputs': [ '<(INTERMEDIATE_DIR)/bindings/V8<(RULE_INPUT_ROOT).cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8<(RULE_INPUT_ROOT).h', ], 'variables': { 'generator_include_dirs': [ '--include', '../third_party/WebKit/WebCore/css', '--include', '../third_party/WebKit/WebCore/dom', '--include', '../third_party/WebKit/WebCore/html', '--include', '../third_party/WebKit/WebCore/notifications', '--include', '../third_party/WebKit/WebCore/page', '--include', '../third_party/WebKit/WebCore/plugins', '--include', '../third_party/WebKit/WebCore/svg', '--include', '../third_party/WebKit/WebCore/workers', '--include', '../third_party/WebKit/WebCore/xml', ], }, 'action': ['python', 'build/rule_binding.py', '<(RULE_INPUT_PATH)', '<(INTERMEDIATE_DIR)/bindings', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings', '--', '<@(_inputs)', '--', '--defines', '<(feature_defines) LANGUAGE_JAVASCRIPT V8_BINDING', '--generator', 'V8', '<@(generator_include_dirs)'], # They are included by DerivedSourcesAllInOne.cpp instead. 'process_outputs_as_sources': 0, 'message': 'Generating binding from <(RULE_INPUT_PATH)', }, ], 'include_dirs': [ '<(INTERMEDIATE_DIR)', '<(SHARED_INTERMEDIATE_DIR)/webkit', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings', '<@(webcore_include_dirs)', ], 'sources': [ # bison rule '../third_party/WebKit/WebCore/css/CSSGrammar.y', '../third_party/WebKit/WebCore/xml/XPathGrammar.y', # gperf rule '../third_party/WebKit/WebCore/html/DocTypeStrings.gperf', '../third_party/WebKit/WebCore/html/HTMLEntityNames.gperf', '../third_party/WebKit/WebCore/platform/ColorData.gperf', # This file includes all the .cpp files generated from the .idl files # in webcore_files. '../third_party/WebKit/WebCore/bindings/v8/DerivedSourcesAllInOne.cpp', '<@(webcore_files)', 'extensions/v8/gc_extension.cc', 'extensions/v8/gc_extension.h', 'extensions/v8/gears_extension.cc', 'extensions/v8/gears_extension.h', 'extensions/v8/interval_extension.cc', 'extensions/v8/interval_extension.h', 'extensions/v8/playback_extension.cc', 'extensions/v8/playback_extension.h', 'extensions/v8/profiler_extension.cc', 'extensions/v8/profiler_extension.h', 'extensions/v8/benchmarking_extension.cc', 'extensions/v8/benchmarking_extension.h', # For WebCoreSystemInterface, Mac-only. '../third_party/WebKit/WebKit/mac/WebCoreSupport/WebSystemInterface.m', ], 'sources/': [ # Exclude JSC custom bindings. ['exclude', '/third_party/WebKit/WebCore/bindings/js'], # SVG_FILTERS only. ['exclude', '/third_party/WebKit/WebCore/svg/SVG(FE|Filter)[^/]*\\.idl$'], # Fortunately, many things can be excluded by using broad patterns. # Exclude things that don't apply to the Chromium platform on the basis # of their enclosing directories and tags at the ends of their # filenames. ['exclude', '/(android|cairo|cf|cg|curl|gtk|haiku|linux|mac|opentype|posix|qt|soup|symbian|win|wx)/'], ['exclude', '(?. 'action_name': 'WebCoreSystemInterface.h', 'inputs': [ '../third_party/WebKit/WebCore/platform/mac/WebCoreSystemInterface.h', ], 'outputs': [ '<(INTERMEDIATE_DIR)/WebCore/WebCoreSystemInterface.h', ], 'action': ['cp', '<@(_inputs)', '<@(_outputs)'], }, ], 'include_dirs': [ '../third_party/WebKit/WebKitLibraries', ], 'sources/': [ # Additional files from the WebCore Mac build that are presently # used in the WebCore Chromium Mac build too. # The Mac build is PLATFORM_CF but does not use CFNetwork. ['include', 'CF\\.cpp$'], ['exclude', '/network/cf/'], # The Mac build is PLATFORM_CG too. platform/graphics/cg is the # only place that CG files we want to build are located, and not # all of them even have a CG suffix, so just add them by a # regexp matching their directory. ['include', '/platform/graphics/cg/[^/]*(?