2 # Copyright (C) 2009 Google Inc. All rights reserved.
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are
8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above
11 # copyright notice, this list of conditions and the following disclaimer
12 # in the documentation and/or other materials provided with the
14 # * Neither the name of Google Inc. nor the names of its
15 # contributors may be used to endorse or promote products derived from
16 # this software without specific prior written permission.
18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 # FIXME: Sense whether upstream or downstream build, and
34 # include the right features.gypi
35 '../../WebKit/chromium/features.gypi',
38 # Location of the chromium src directory.
40 ['inside_chromium_build==0', {
41 # Webkit is being built outside of the full chromium project.
43 'chromium_src_dir': '../../WebKit/chromium',
44 'libjpeg_gyp_path': '<(chromium_src_dir)/third_party/libjpeg_turbo/libjpeg.gyp',
47 # WebKit is checked out in src/chromium/third_party/WebKit
49 'chromium_src_dir': '../../../../..',
55 # On the Mac, libWebKitSystemInterface*.a is used to help WebCore
56 # interface with the system. This library is supplied as a static
57 # library in binary format. At present, it contains many global
58 # symbols not marked private_extern. It should be considered an
59 # implementation detail of WebCore, and does not need these symbols
60 # to be exposed so widely.
62 # This target contains an action that cracks open the existing
63 # static library and rebuilds it with these global symbols
64 # transformed to private_extern.
65 'target_name': 'webkit_system_interface',
66 'type': 'static_library',
68 'adjusted_library_path':
69 '<(PRODUCT_DIR)/libWebKitSystemInterfaceLeopardPrivateExtern.a',
72 # An empty source file is needed to convince Xcode to produce
73 # output for this target. The resulting library won't actually
74 # contain anything. The library at adjusted_library_path will,
75 # and that library is pushed to dependents of this target below.
80 'action_name': 'Adjust Visibility',
82 'mac/adjust_visibility.sh',
83 '../../../WebKitLibraries/libWebKitSystemInterfaceLeopard.a',
86 '<(adjusted_library_path)',
91 '<(INTERMEDIATE_DIR)/adjust_visibility', # work directory
97 '<(adjusted_library_path)',
100 }, # target webkit_system_interface
102 }], # condition OS == "mac"
103 ['OS!="win" and remove_webcore_debug_symbols==1', {
104 # Remove -g from all targets defined here.
109 ['OS=="linux" and target_arch=="arm"', {
110 # Due to a bug in gcc arm, we get warnings about uninitialized timesNewRoman.unstatic.3258
111 # and colorTransparent.unstatic.4879.
113 'cflags': ['-Wno-uninitialized'],
119 # If set to 1, doesn't compile debug symbols into webcore reducing the
120 # size of the binary and increasing the speed of gdb. gcc only.
121 'remove_webcore_debug_symbols%': 0,
123 # If set to 0, doesn't build SVG support, reducing the size of the
124 # binary and increasing the speed of gdb.
127 # Use v8 as default JavaScript engine. This makes sure that javascript_engine variable
128 # is set for both inside_chromium_build 0 and 1 cases.
129 'javascript_engine%': 'v8',
131 'webcore_include_dirs': [
134 '../accessibility/chromium',
136 '../bindings/generic',
138 '../bindings/v8/custom',
139 '../bindings/v8/specialization',
155 '../loader/appcache',
165 '../platform/animation',
167 '../platform/audio/chromium',
168 '../platform/chromium',
169 '../platform/graphics',
170 '../platform/graphics/chromium',
171 '../platform/graphics/filters',
172 '../platform/graphics/gpu',
173 '../platform/graphics/opentype',
174 '../platform/graphics/skia',
175 '../platform/graphics/transforms',
176 '../platform/image-decoders',
177 '../platform/image-decoders/bmp',
178 '../platform/image-decoders/gif',
179 '../platform/image-decoders/ico',
180 '../platform/image-decoders/jpeg',
181 '../platform/image-decoders/png',
182 '../platform/image-decoders/skia',
183 '../platform/image-decoders/xbm',
184 '../platform/image-decoders/webp',
185 '../platform/image-encoders/skia',
187 '../platform/network',
188 '../platform/network/chromium',
191 '../platform/text/transcoder',
193 '../plugins/chromium',
195 '../rendering/style',
198 '../storage/chromium',
202 '../svg/graphics/filters',
211 'bindings_idl_files': [
212 '<@(webcore_bindings_idl_files)',
215 'bindings_idl_files!': [
216 # Custom bindings in bindings/v8/custom exist for these.
217 '../dom/EventListener.idl',
218 '../dom/EventTarget.idl',
219 '../html/VoidCallback.idl',
221 # Bindings with custom Objective-C implementations.
222 '../page/AbstractView.idl',
224 # These bindings are excluded, as they're only used through inheritance and don't define constants that would need a constructor.
225 '../svg/ElementTimeControl.idl',
226 '../svg/SVGExternalResourcesRequired.idl',
227 '../svg/SVGFilterPrimitiveStandardAttributes.idl',
228 '../svg/SVGFitToViewBox.idl',
230 '../svg/SVGLangSpace.idl',
231 '../svg/SVGLocatable.idl',
232 '../svg/SVGStylable.idl',
233 '../svg/SVGTests.idl',
234 '../svg/SVGTransformable.idl',
235 '../svg/SVGViewSpec.idl',
236 '../svg/SVGZoomAndPan.idl',
238 # FIXME: I don't know why these are excluded, either.
239 # Someone (me?) should figure it out and add appropriate comments.
240 '../css/CSSUnknownRule.idl',
244 # TODO(maruel): Move it in its own project or generate it anyway?
246 'bindings_idl_files': [
247 '<@(webcore_svg_bindings_idl_files)',
251 'webcore_include_dirs+': [
252 # platform/graphics/cg and cocoa need to come before
253 # platform/graphics/chromium so that the Mac build picks up the
254 # version of ImageBufferData.h in the cg directory and
255 # FontPlatformData.h in the cocoa directory. The + prepends this
256 # directory to the list.
257 # FIXME: This shouldn't need to be prepended.
258 '../platform/graphics/cocoa',
259 '../platform/graphics/cg',
261 'webcore_include_dirs': [
262 # FIXME: Eliminate dependency on platform/mac and related
264 # FIXME: Eliminate dependency on platform/graphics/mac and
265 # related directories.
266 # platform/graphics/cg may need to stick around, though.
267 '../platform/audio/mac',
269 '../platform/graphics/mac',
271 '../platform/text/mac',
275 'webcore_include_dirs': [
277 '../platform/audio/win',
278 '../platform/graphics/win',
279 '../platform/text/win',
283 # enable -Wall and -Werror, just for Mac and Linux builds for now
284 # FIXME: Also enable this for Windows after verifying no warnings
287 ['OS=="win" and buildtype=="Official"', {
288 # On windows official release builds, we try to preserve symbol space.
289 'derived_sources_aggregate_files': [
290 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSourcesAll.cpp',
293 'derived_sources_aggregate_files': [
294 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources1.cpp',
295 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources2.cpp',
296 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources3.cpp',
297 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources4.cpp',
298 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources5.cpp',
299 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources6.cpp',
300 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources7.cpp',
301 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources8.cpp',
308 'target_name': 'inspector_protocol_sources',
312 'action_name': 'generateInspectorProtocolSources',
313 # The second input item will be used as item name in vcproj.
314 # It is not possible to put Inspector.idl there because
315 # all idl files are marking as excluded by gyp generator.
317 '../bindings/scripts/generate-bindings.pl',
318 '../inspector/CodeGeneratorInspector.pm',
319 '../bindings/scripts/CodeGenerator.pm',
320 '../bindings/scripts/IDLParser.pm',
321 '../bindings/scripts/IDLStructure.pm',
322 '../inspector/Inspector.idl',
325 '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorBackendDispatcher.cpp',
326 '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorBackendStub.js',
327 '<(SHARED_INTERMEDIATE_DIR)/webkit/InspectorBackendDispatcher.h',
328 '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorFrontend.cpp',
329 '<(SHARED_INTERMEDIATE_DIR)/webkit/InspectorFrontend.h',
332 'generator_include_dirs': [
337 'scripts/rule_binding.py',
338 '../inspector/Inspector.idl',
339 '<(SHARED_INTERMEDIATE_DIR)/webcore',
340 '<(SHARED_INTERMEDIATE_DIR)/webkit',
344 '--defines', '<(feature_defines) LANGUAGE_JAVASCRIPT',
345 '--generator', 'Inspector',
346 '<@(generator_include_dirs)'
348 'message': 'Generating Inspector protocol sources from Inspector.idl',
353 'target_name': 'injected_script_source',
357 'action_name': 'generateInjectedScriptSource',
359 '../inspector/InjectedScriptSource.js',
362 '<(SHARED_INTERMEDIATE_DIR)/webkit/InjectedScriptSource.h',
366 '../inspector/xxd.pl',
367 'InjectedScriptSource_js',
368 '../inspector/InjectedScriptSource.js',
369 '<(SHARED_INTERMEDIATE_DIR)/webkit/InjectedScriptSource.h'
371 'message': 'Generating InjectedScriptSource.h from InjectedScriptSource.js',
376 'target_name': 'webcore_bindings_sources',
378 'hard_dependency': 1,
381 '../css/CSSGrammar.y',
382 '../xml/XPathGrammar.y',
385 '../html/DocTypeStrings.gperf',
386 '../platform/ColorData.gperf',
389 '<@(bindings_idl_files)',
392 # Actions to build derived sources.
394 'action_name': 'generateXMLViewerXSL',
396 '../xml/XMLViewer.xsl',
399 '<(SHARED_INTERMEDIATE_DIR)/webkit/XMLViewerXSL.h',
403 '../inspector/xxd.pl',
410 'action_name': 'HTMLEntityTable',
412 '../html/parser/HTMLEntityNames.in',
415 '<(SHARED_INTERMEDIATE_DIR)/webkit/HTMLEntityTable.cpp'
419 '../html/parser/create-html-entity-table',
426 'action_name': 'CSSPropertyNames',
428 '../css/makeprop.pl',
429 '../css/CSSPropertyNames.in',
432 '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSPropertyNames.cpp',
433 '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSPropertyNames.h',
437 'scripts/action_csspropertynames.py',
443 # TODO(maruel): Move it in its own project or generate it anyway?
446 '../css/SVGCSSPropertyNames.in',
452 'action_name': 'CSSValueKeywords',
454 '../css/makevalues.pl',
455 '../css/CSSValueKeywords.in',
458 '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSValueKeywords.cpp',
459 '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSValueKeywords.h',
463 'scripts/action_cssvaluekeywords.py',
469 # TODO(maruel): Move it in its own project or generate it anyway?
472 '../css/SVGCSSValueKeywords.in',
478 'action_name': 'HTMLNames',
480 '../dom/make_names.pl',
481 '../html/HTMLTagNames.in',
482 '../html/HTMLAttributeNames.in',
485 '<(SHARED_INTERMEDIATE_DIR)/webkit/HTMLNames.cpp',
486 '<(SHARED_INTERMEDIATE_DIR)/webkit/HTMLNames.h',
487 '<(SHARED_INTERMEDIATE_DIR)/webkit/HTMLElementFactory.cpp',
488 '<(SHARED_INTERMEDIATE_DIR)/webkit/V8HTMLElementWrapperFactory.cpp',
489 '<(SHARED_INTERMEDIATE_DIR)/webkit/V8HTMLElementWrapperFactory.h',
493 'scripts/action_makenames.py',
499 '--wrapperFactoryV8',
500 '--extraDefines', '<(feature_defines)'
504 'action_name': 'SVGNames',
506 '../dom/make_names.pl',
508 '../svg/svgattrs.in',
511 '<(SHARED_INTERMEDIATE_DIR)/webkit/SVGNames.cpp',
512 '<(SHARED_INTERMEDIATE_DIR)/webkit/SVGNames.h',
513 '<(SHARED_INTERMEDIATE_DIR)/webkit/SVGElementFactory.cpp',
514 '<(SHARED_INTERMEDIATE_DIR)/webkit/SVGElementFactory.h',
515 '<(SHARED_INTERMEDIATE_DIR)/webkit/V8SVGElementWrapperFactory.cpp',
516 '<(SHARED_INTERMEDIATE_DIR)/webkit/V8SVGElementWrapperFactory.h',
520 'scripts/action_makenames.py',
526 '--wrapperFactoryV8',
527 '--extraDefines', '<(feature_defines)'
531 'action_name': 'MathMLNames',
533 '../dom/make_names.pl',
534 '../mathml/mathtags.in',
535 '../mathml/mathattrs.in',
538 '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLNames.cpp',
539 '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLNames.h',
540 '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLElementFactory.cpp',
541 '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLElementFactory.h',
545 'scripts/action_makenames.py',
551 '--extraDefines', '<(feature_defines)'
555 'action_name': 'UserAgentStyleSheets',
556 # The .css files are in the same order as ../DerivedSources.make.
558 '../css/make-css-file-arrays.pl',
561 '../css/view-source.css',
562 '../css/themeChromiumLinux.css', # Chromium only.
563 '../css/themeChromiumSkia.css', # Chromium only.
564 '../css/themeWin.css',
565 '../css/themeWinQuirks.css',
569 '../css/mediaControls.css',
570 '../css/mediaControlsChromium.css',
571 '../css/fullscreen.css',
574 '<(SHARED_INTERMEDIATE_DIR)/webkit/UserAgentStyleSheets.h',
575 '<(SHARED_INTERMEDIATE_DIR)/webkit/UserAgentStyleSheetsData.cpp',
579 'scripts/action_useragentstylesheets.py',
586 'action_name': 'XLinkNames',
588 '../dom/make_names.pl',
589 '../svg/xlinkattrs.in',
592 '<(SHARED_INTERMEDIATE_DIR)/webkit/XLinkNames.cpp',
593 '<(SHARED_INTERMEDIATE_DIR)/webkit/XLinkNames.h',
597 'scripts/action_makenames.py',
602 '--extraDefines', '<(feature_defines)'
606 'action_name': 'XMLNSNames',
608 '../dom/make_names.pl',
609 '../xml/xmlnsattrs.in',
612 '<(SHARED_INTERMEDIATE_DIR)/webkit/XMLNSNames.cpp',
613 '<(SHARED_INTERMEDIATE_DIR)/webkit/XMLNSNames.h',
617 'scripts/action_makenames.py',
622 '--extraDefines', '<(feature_defines)'
626 'action_name': 'XMLNames',
628 '../dom/make_names.pl',
629 '../xml/xmlattrs.in',
632 '<(SHARED_INTERMEDIATE_DIR)/webkit/XMLNames.cpp',
633 '<(SHARED_INTERMEDIATE_DIR)/webkit/XMLNames.h',
637 'scripts/action_makenames.py',
642 '--extraDefines', '<(feature_defines)'
646 'action_name': 'tokenizer',
648 '../css/maketokenizer',
649 '../css/tokenizer.flex',
652 '<(SHARED_INTERMEDIATE_DIR)/webkit/tokenizer.cpp',
656 'scripts/action_maketokenizer.py',
663 'action_name': 'derived_sources_all_in_one',
665 # Write sources into a file, so that the action command line won't
667 'idls_list_temp_file': '<|(idls_list_temp_file.tmp <@(bindings_idl_files))',
670 'scripts/action_derivedsourcesallinone.py',
671 '<(idls_list_temp_file)',
672 '<!@(cat <(idls_list_temp_file))',
675 '<@(derived_sources_aggregate_files)',
679 'scripts/action_derivedsourcesallinone.py',
680 '<(idls_list_temp_file)',
682 '<@(derived_sources_aggregate_files)',
687 # Rules to build derived sources.
689 'rule_name': 'bison',
692 '<(SHARED_INTERMEDIATE_DIR)/webkit/<(RULE_INPUT_ROOT).cpp',
693 '<(SHARED_INTERMEDIATE_DIR)/webkit/<(RULE_INPUT_ROOT).h'
697 'scripts/rule_bison.py',
698 '<(RULE_INPUT_PATH)',
699 '<(SHARED_INTERMEDIATE_DIR)/webkit'
703 'rule_name': 'gperf',
704 'extension': 'gperf',
706 # gperf outputs are generated by WebCore/make-hash-tools.pl
709 '<(SHARED_INTERMEDIATE_DIR)/webkit/<(RULE_INPUT_ROOT).cpp',
712 '../make-hash-tools.pl',
716 '../make-hash-tools.pl',
717 '<(SHARED_INTERMEDIATE_DIR)/webkit',
718 '<(RULE_INPUT_PATH)',
721 # Rule to build generated JavaScript (V8) bindings from .idl source.
723 'rule_name': 'binding',
725 'msvs_external_rule': 1,
727 '../bindings/scripts/generate-bindings.pl',
728 '../bindings/scripts/CodeGenerator.pm',
729 '../bindings/scripts/CodeGeneratorV8.pm',
730 '../bindings/scripts/IDLParser.pm',
731 '../bindings/scripts/IDLStructure.pm',
734 # FIXME: The .cpp file should be in webkit/bindings once
735 # we coax GYP into supporting it (see 'action' below).
736 '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings/V8<(RULE_INPUT_ROOT).cpp',
737 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8<(RULE_INPUT_ROOT).h',
740 'generator_include_dirs': [
741 '--include', '../css',
742 '--include', '../dom',
743 '--include', '../fileapi',
744 '--include', '../html',
745 '--include', '../notifications',
746 '--include', '../page',
747 '--include', '../plugins',
748 '--include', '../storage',
749 '--include', '../svg',
750 '--include', '../webaudio',
751 '--include', '../websockets',
752 '--include', '../workers',
753 '--include', '../xml',
756 # FIXME: Note that we put the .cpp files in webcore/bindings
757 # but the .h files in webkit/bindings. This is to work around
758 # the unfortunate fact that GYP strips duplicate arguments
759 # from lists. When we have a better GYP way to suppress that
760 # behavior, change the output location.
763 'scripts/rule_binding.py',
764 '<(RULE_INPUT_PATH)',
765 '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings',
766 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings',
770 '--defines', '<(feature_defines) LANGUAGE_JAVASCRIPT V8_BINDING',
772 '<@(generator_include_dirs)'
774 'message': 'Generating binding from <(RULE_INPUT_PATH)',
779 'target_name': 'webcore_bindings',
780 'type': '<(library)',
781 'hard_dependency': 1,
783 'webcore_bindings_sources',
784 'inspector_protocol_sources',
785 'injected_script_source',
786 '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:yarr',
787 '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf',
788 '<(chromium_src_dir)/build/temp_gyp/googleurl.gyp:googleurl',
789 '<(chromium_src_dir)/skia/skia.gyp:skia',
790 '<(chromium_src_dir)/third_party/iccjpeg/iccjpeg.gyp:iccjpeg',
791 '<(chromium_src_dir)/third_party/libpng/libpng.gyp:libpng',
792 '<(chromium_src_dir)/third_party/libxml/libxml.gyp:libxml',
793 '<(chromium_src_dir)/third_party/libxslt/libxslt.gyp:libxslt',
794 '<(chromium_src_dir)/third_party/libwebp/libwebp.gyp:libwebp',
795 '<(chromium_src_dir)/third_party/npapi/npapi.gyp:npapi',
796 '<(chromium_src_dir)/third_party/sqlite/sqlite.gyp:sqlite',
797 '<(libjpeg_gyp_path):libjpeg',
800 '<(INTERMEDIATE_DIR)',
801 # FIXME: Remove <(SHARED_INTERMEDIATE_DIR)/webcore when we
802 # can entice gyp into letting us put both the .cpp and .h
803 # files in the same output directory.
804 '<(SHARED_INTERMEDIATE_DIR)/webcore',
805 '<(SHARED_INTERMEDIATE_DIR)/webkit',
806 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings',
807 '<@(webcore_include_dirs)',
809 'direct_dependent_settings': {
811 '<(SHARED_INTERMEDIATE_DIR)/webkit',
812 '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings',
816 # These files include all the .cpp files generated from the .idl files
818 '<@(derived_sources_aggregate_files)',
820 # Additional .cpp files for HashTools.h
821 '<(SHARED_INTERMEDIATE_DIR)/webkit/DocTypeStrings.cpp',
822 '<(SHARED_INTERMEDIATE_DIR)/webkit/ColorData.cpp',
823 '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSPropertyNames.cpp',
824 '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSValueKeywords.cpp',
826 # Additional .cpp files from webcore_bindings_sources actions.
827 '<(SHARED_INTERMEDIATE_DIR)/webkit/HTMLElementFactory.cpp',
828 '<(SHARED_INTERMEDIATE_DIR)/webkit/HTMLNames.cpp',
829 '<(SHARED_INTERMEDIATE_DIR)/webkit/UserAgentStyleSheetsData.cpp',
830 '<(SHARED_INTERMEDIATE_DIR)/webkit/V8HTMLElementWrapperFactory.cpp',
831 '<(SHARED_INTERMEDIATE_DIR)/webkit/XLinkNames.cpp',
832 '<(SHARED_INTERMEDIATE_DIR)/webkit/XMLNSNames.cpp',
833 '<(SHARED_INTERMEDIATE_DIR)/webkit/XMLNames.cpp',
834 '<(SHARED_INTERMEDIATE_DIR)/webkit/SVGNames.cpp',
835 '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLElementFactory.cpp',
836 '<(SHARED_INTERMEDIATE_DIR)/webkit/MathMLNames.cpp',
838 # Generated from HTMLEntityNames.in
839 '<(SHARED_INTERMEDIATE_DIR)/webkit/HTMLEntityTable.cpp',
841 # Additional .cpp files from the webcore_bindings_sources rules.
842 '<(SHARED_INTERMEDIATE_DIR)/webkit/CSSGrammar.cpp',
843 '<(SHARED_INTERMEDIATE_DIR)/webkit/XPathGrammar.cpp',
845 # Additional .cpp files from the webcore_inspector_sources list.
846 '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorFrontend.cpp',
847 '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorBackendDispatcher.cpp',
850 ['javascript_engine=="v8"', {
852 '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
855 ['inside_chromium_build==1 and OS=="win" and component=="shared_library"', {
862 # TODO(maruel): Move it in its own project or generate it anyway?
865 '<(SHARED_INTERMEDIATE_DIR)/webkit/SVGElementFactory.cpp',
866 '<(SHARED_INTERMEDIATE_DIR)/webkit/V8SVGElementWrapperFactory.cpp',
871 '../../../WebKitLibraries',
876 '<(chromium_src_dir)/build/win/system.gyp:cygwin'
879 'WEBCORE_NAVIGATOR_PLATFORM="Win32"',
880 '__PRETTY_FUNCTION__=__FUNCTION__',
882 # This is needed because Event.h in this directory is blocked
883 # by a system header on windows.
884 'include_dirs++': ['../dom'],
885 'direct_dependent_settings': {
886 'include_dirs+++': ['../dom'],
889 # FIXME: (kbr) ideally this target should just depend on webcore_prerequisites
890 # to pick up these include directories, but I'm nervous about making that change.
891 ['(OS=="linux" or OS=="win") and "WTF_USE_WEBAUDIO_MKL=1" in feature_defines', {
893 '<(chromium_src_dir)/third_party/mkl/include',
896 ['(OS=="linux" or OS=="win") and "WTF_USE_WEBAUDIO_FFTW=1" in feature_defines', {
898 '<(chromium_src_dir)/third_party/fftw/api',
904 # We'll soon split libwebcore in multiple smaller libraries.
905 # webcore_prerequisites will be the 'base' target of every sub-target.
906 'target_name': 'webcore_prerequisites',
910 '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:yarr',
911 '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf',
912 '<(chromium_src_dir)/build/temp_gyp/googleurl.gyp:googleurl',
913 '<(chromium_src_dir)/skia/skia.gyp:skia',
914 '<(chromium_src_dir)/third_party/iccjpeg/iccjpeg.gyp:iccjpeg',
915 '<(chromium_src_dir)/third_party/libwebp/libwebp.gyp:libwebp',
916 '<(chromium_src_dir)/third_party/libpng/libpng.gyp:libpng',
917 '<(chromium_src_dir)/third_party/libxml/libxml.gyp:libxml',
918 '<(chromium_src_dir)/third_party/libxslt/libxslt.gyp:libxslt',
919 '<(chromium_src_dir)/third_party/npapi/npapi.gyp:npapi',
920 '<(chromium_src_dir)/third_party/ots/ots.gyp:ots',
921 '<(chromium_src_dir)/third_party/sqlite/sqlite.gyp:sqlite',
922 '<(chromium_src_dir)/third_party/angle/src/build_angle.gyp:translator_common',
923 '<(libjpeg_gyp_path):libjpeg',
925 'export_dependent_settings': [
927 '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:yarr',
928 '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf',
929 '<(chromium_src_dir)/build/temp_gyp/googleurl.gyp:googleurl',
930 '<(chromium_src_dir)/skia/skia.gyp:skia',
931 '<(chromium_src_dir)/third_party/iccjpeg/iccjpeg.gyp:iccjpeg',
932 '<(chromium_src_dir)/third_party/libwebp/libwebp.gyp:libwebp',
933 '<(chromium_src_dir)/third_party/libpng/libpng.gyp:libpng',
934 '<(chromium_src_dir)/third_party/libxml/libxml.gyp:libxml',
935 '<(chromium_src_dir)/third_party/libxslt/libxslt.gyp:libxslt',
936 '<(chromium_src_dir)/third_party/npapi/npapi.gyp:npapi',
937 '<(chromium_src_dir)/third_party/ots/ots.gyp:ots',
938 '<(chromium_src_dir)/third_party/sqlite/sqlite.gyp:sqlite',
939 '<(chromium_src_dir)/third_party/angle/src/build_angle.gyp:translator_common',
940 '<(libjpeg_gyp_path):libjpeg',
942 # This is needed for mac because of webkit_system_interface. It'd be nice
943 # if this hard dependency could be split off the rest.
944 'hard_dependency': 1,
945 'direct_dependent_settings': {
947 'WEBCORE_NAVIGATOR_VENDOR="Google Inc."',
950 '<(INTERMEDIATE_DIR)',
951 '<@(webcore_include_dirs)',
952 '<(chromium_src_dir)/gpu',
953 '<(chromium_src_dir)/third_party/angle/include/GLSLANG',
955 'mac_framework_dirs': [
956 '$(SDKROOT)/System/Library/Frameworks/ApplicationServices.framework/Frameworks',
958 'msvs_disabled_warnings': [
959 4138, 4244, 4291, 4305, 4344, 4355, 4521, 4099,
961 'scons_line_length' : 1,
963 # Some Mac-specific parts of WebKit won't compile without having this
964 # prefix header injected.
965 # FIXME: make this a first-class setting.
966 'GCC_PREFIX_HEADER': '../WebCorePrefix.h',
970 ['javascript_engine=="v8"', {
972 '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
974 'export_dependent_settings': [
975 '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
978 ['inside_chromium_build==1 and OS=="win" and component=="shared_library"', {
979 'direct_dependent_settings': {
987 ['use_accelerated_compositing==1', {
989 '<(chromium_src_dir)/gpu/gpu.gyp:gles2_c_lib',
991 'export_dependent_settings': [
992 '<(chromium_src_dir)/gpu/gpu.gyp:gles2_c_lib',
995 ['OS=="linux" or OS=="freebsd"', {
997 '<(chromium_src_dir)/build/linux/system.gyp:fontconfig',
998 '<(chromium_src_dir)/build/linux/system.gyp:gtk',
1000 'export_dependent_settings': [
1001 '<(chromium_src_dir)/build/linux/system.gyp:fontconfig',
1002 '<(chromium_src_dir)/build/linux/system.gyp:gtk',
1004 'direct_dependent_settings': {
1006 # WebCore does not work with strict aliasing enabled.
1007 # https://bugs.webkit.org/show_bug.cgi?id=25864
1008 '-fno-strict-aliasing',
1013 'direct_dependent_settings': {
1015 # Mozilla on Linux effectively uses uname -sm, but when running
1016 # 32-bit x86 code on an x86_64 processor, it uses
1017 # "Linux i686 (x86_64)". Matching that would require making a
1018 # run-time determination.
1019 'WEBCORE_NAVIGATOR_PLATFORM="Linux i686"',
1025 'webkit_system_interface',
1027 'export_dependent_settings': [
1028 'webkit_system_interface',
1030 'direct_dependent_settings': {
1032 # Match Safari and Mozilla on Mac x86.
1033 'WEBCORE_NAVIGATOR_PLATFORM="MacIntel"',
1035 # Chromium's version of WebCore includes the following Objective-C
1036 # classes. The system-provided WebCore framework may also provide
1037 # these classes. Because of the nature of Objective-C binding
1038 # (dynamically at runtime), it's possible for the
1039 # Chromium-provided versions to interfere with the system-provided
1040 # versions. This may happen when a system framework attempts to
1041 # use WebCore.framework, such as when converting an HTML-flavored
1042 # string to an NSAttributedString. The solution is to force
1043 # Objective-C class names that would conflict to use alternate
1046 # This list will hopefully shrink but may also grow. Its
1047 # performance is monitored by the "Check Objective-C Rename"
1048 # postbuild step, and any suspicious-looking symbols not handled
1049 # here or whitelisted in that step will cause a build failure.
1051 # If this is unhandled, the console will receive log messages
1053 # com.google.Chrome[] objc[]: Class ScrollbarPrefsObserver is implemented in both .../Google Chrome.app/Contents/Versions/.../Google Chrome Helper.app/Contents/MacOS/../../../Google Chrome Framework.framework/Google Chrome Framework and /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore. One of the two will be used. Which one is undefined.
1054 'ScrollbarPrefsObserver=ChromiumWebCoreObjCScrollbarPrefsObserver',
1055 'WebCoreRenderThemeNotificationObserver=ChromiumWebCoreObjCWebCoreRenderThemeNotificationObserver',
1056 'WebFontCache=ChromiumWebCoreObjCWebFontCache',
1059 '../../../WebKitLibraries',
1063 # This step ensures that any Objective-C names that aren't
1064 # redefined to be "safe" above will cause a build failure.
1065 'postbuild_name': 'Check Objective-C Rename',
1067 'class_whitelist_regex':
1068 'ChromiumWebCoreObjC|TCMVisibleView|RTCMFlippedView',
1069 'category_whitelist_regex':
1073 'mac/check_objc_rename.sh',
1074 '<(class_whitelist_regex)',
1075 '<(category_whitelist_regex)',
1083 '<(chromium_src_dir)/build/win/system.gyp:cygwin'
1085 'export_dependent_settings': [
1086 '<(chromium_src_dir)/build/win/system.gyp:cygwin'
1088 'direct_dependent_settings': {
1090 # Match Safari and Mozilla on Windows.
1091 'WEBCORE_NAVIGATOR_PLATFORM="Win32"',
1092 '__PRETTY_FUNCTION__=__FUNCTION__',
1094 # This is needed because Event.h in this directory is blocked
1095 # by a system header on windows.
1096 'include_dirs++': ['../dom'],
1099 ['(OS=="linux" or OS=="win") and "WTF_USE_WEBAUDIO_MKL=1" in feature_defines', {
1100 # This directory needs to be on the include path for multiple sub-targets of webcore.
1101 'direct_dependent_settings': {
1103 '<(chromium_src_dir)/third_party/mkl/include',
1107 ['(OS=="linux" or OS=="win") and "WTF_USE_WEBAUDIO_FFTW=1" in feature_defines', {
1108 # This directory needs to be on the include path for multiple sub-targets of webcore.
1109 'direct_dependent_settings': {
1111 '<(chromium_src_dir)/third_party/fftw/api',
1118 'target_name': 'webcore_html',
1119 'type': '<(library)',
1121 'webcore_prerequisites',
1124 '<@(webcore_files)',
1127 # Start by excluding everything then include html files only.
1129 ['include', 'html/'],
1131 ['exclude', 'AllInOne\\.cpp$'],
1135 'target_name': 'webcore_svg',
1136 'type': '<(library)',
1138 'webcore_prerequisites',
1141 '<@(webcore_files)',
1144 # Start by excluding everything then include svg files only. Note that
1145 # css/SVG* and bindings/v8/custom/V8SVG* are still built in
1146 # webcore_remaining.
1148 ['include', 'svg/'],
1149 ['include', 'css/svg/'],
1150 ['include', 'rendering/style/SVG'],
1151 ['include', 'rendering/RenderSVG'],
1152 ['include', 'rendering/SVG'],
1154 ['exclude', 'AllInOne\\.cpp$'],
1158 'target_name': 'webcore_platform',
1159 'type': '<(library)',
1161 'webcore_prerequisites',
1163 # This is needed for mac because of webkit_system_interface. It'd be nice
1164 # if this hard dependency could be split off the rest.
1165 'hard_dependency': 1,
1167 '<@(webcore_files)',
1169 # For WebCoreSystemInterface, Mac-only.
1170 '../../WebKit/mac/WebCoreSupport/WebSystemInterface.mm',
1174 ['include', 'platform/'],
1176 # FIXME: Figure out how to store these patterns in a variable.
1177 ['exclude', '(android|brew|cairo|ca|cf|cg|curl|efl|freetype|fftw|gstreamer|gtk|haiku|linux|mac|mkl|opengl|openvg|opentype|pango|posix|qt|soup|svg|symbian|texmap|iphone|win|wince|wx)/'],
1178 ['exclude', '(?<!Chromium)(Android|Cairo|CF|CG|Curl|Gtk|JSC|Linux|Mac|OpenType|POSIX|Posix|Qt|Safari|Soup|Symbian|Win|WinCE|Wx)\\.(cpp|mm?)$'],
1180 ['include', 'platform/graphics/opentype/OpenTypeSanitizer\\.cpp$'],
1182 ['exclude', 'platform/LinkHash\\.cpp$'],
1183 ['exclude', 'platform/MIMETypeRegistry\\.cpp$'],
1184 ['exclude', 'platform/Theme\\.cpp$'],
1185 ['exclude', 'platform/graphics/ANGLEWebKitBridge\\.(cpp|h)$'],
1186 ['exclude', 'platform/image-encoders/JPEGImageEncoder\\.(cpp|h)$'],
1187 ['exclude', 'platform/image-encoders/PNGImageEncoder\\.(cpp|h)$'],
1188 ['exclude', 'platform/network/ResourceHandle\\.cpp$'],
1189 ['exclude', 'platform/sql/SQLiteFileSystem\\.cpp$'],
1190 ['exclude', 'platform/text/LocalizedNumberNone\\.cpp$'],
1191 ['exclude', 'platform/text/TextEncodingDetectorNone\\.cpp$'],
1193 ['include', 'thirdparty/glu/libtess/'],
1196 ['OS=="linux" or OS=="freebsd"', {
1198 # Cherry-pick files excluded by the broader regular expressions above.
1199 ['include', 'platform/chromium/KeyCodeConversionGtk\\.cpp$'],
1200 ['include', 'platform/graphics/chromium/ComplexTextControllerLinux\\.cpp$'],
1201 ['include', 'platform/graphics/chromium/FontCacheLinux\\.cpp$'],
1202 ['include', 'platform/graphics/chromium/FontLinux\\.cpp$'],
1203 ['include', 'platform/graphics/chromium/FontPlatformDataLinux\\.cpp$'],
1204 ['include', 'platform/graphics/chromium/SimpleFontDataLinux\\.cpp$'],
1207 '<(chromium_src_dir)/third_party/harfbuzz/harfbuzz.gyp:harfbuzz',
1211 # Necessary for Mac .mm stuff.
1213 '../../../WebKitLibraries',
1216 'webkit_system_interface',
1220 # Allow framework-style #include of
1221 # <WebCore/WebCoreSystemInterface.h>.
1222 'action_name': 'WebCoreSystemInterface.h',
1224 '../platform/mac/WebCoreSystemInterface.h',
1227 '<(INTERMEDIATE_DIR)/WebCore/WebCoreSystemInterface.h',
1229 'action': ['cp', '<@(_inputs)', '<@(_outputs)'],
1233 # Additional files from the WebCore Mac build that are presently
1234 # used in the WebCore Chromium Mac build too.
1236 # The Mac build is USE(CF) but does not use CFNetwork.
1237 ['include', 'CF\\.cpp$'],
1238 ['exclude', 'network/cf/'],
1240 # The Mac build is PLATFORM_CG too. platform/graphics/cg is the
1241 # only place that CG files we want to build are located, and not
1242 # all of them even have a CG suffix, so just add them by a
1243 # regexp matching their directory.
1244 ['include', 'platform/graphics/cg/[^/]*(?<!Win)?\\.(cpp|mm?)$'],
1246 # Use native Mac font code from WebCore.
1247 ['include', 'platform/(graphics/)?mac/[^/]*Font[^/]*\\.(cpp|mm?)$'],
1248 ['include', 'platform/graphics/mac/ComplexText[^/]*\\.(cpp|h)$'],
1250 # We can use this for the fast Accelerate.framework FFT.
1251 ['include', 'platform/audio/mac/FFTFrameMac\\.cpp$'],
1253 # Cherry-pick some files that can't be included by broader regexps.
1254 # Some of these are used instead of Chromium platform files, see
1255 # the specific exclusions in the "sources!" list below.
1256 ['include', 'rendering/RenderThemeMac\\.mm$'],
1257 ['include', 'platform/graphics/mac/ColorMac\\.mm$'],
1258 ['include', 'platform/graphics/mac/FloatPointMac\\.mm$'],
1259 ['include', 'platform/graphics/mac/FloatRectMac\\.mm$'],
1260 ['include', 'platform/graphics/mac/FloatSizeMac\\.mm$'],
1261 ['include', 'platform/graphics/mac/GlyphPageTreeNodeMac\\.cpp$'],
1262 ['include', 'platform/graphics/mac/GraphicsContextMac\\.mm$'],
1263 ['include', 'platform/graphics/mac/IntRectMac\\.mm$'],
1264 ['include', 'platform/mac/BlockExceptions\\.mm$'],
1265 ['include', 'platform/mac/KillRingMac\\.mm$'],
1266 ['include', 'platform/mac/LocalCurrentGraphicsContext\\.mm$'],
1267 ['include', 'platform/mac/PurgeableBufferMac\\.cpp$'],
1268 ['include', 'platform/mac/WebCoreSystemInterface\\.mm$'],
1269 ['include', 'platform/mac/WebCoreTextRenderer\\.mm$'],
1270 ['include', 'platform/text/mac/ShapeArabic\\.c$'],
1271 ['include', 'platform/text/mac/String(Impl)?Mac\\.mm$'],
1272 # Use USE_NEW_THEME on Mac.
1273 ['include', 'platform/Theme\\.cpp$'],
1275 ['include', 'WebKit/mac/WebCoreSupport/WebSystemInterface\\.mm$'],
1277 # Chromium Mac does not use skia.
1278 ['exclude', 'platform/graphics/skia/[^/]*Skia\\.(cpp|h)$'],
1280 # The Mac uses platform/mac/KillRingMac.mm instead of the dummy
1282 ['exclude', 'platform/KillRingNone\\.cpp$'],
1284 # The Mac currently uses FontCustomPlatformData.cpp from
1285 # platform/graphics/mac, included by regex above, instead.
1286 ['exclude', 'platform/graphics/skia/FontCustomPlatformData\\.cpp$'],
1288 # The Mac currently uses ScrollbarThemeChromiumMac.mm, which is not
1289 # related to ScrollbarThemeChromium.cpp.
1290 ['exclude', 'platform/chromium/ScrollbarThemeChromium\\.cpp$'],
1292 # The Mac currently uses ImageChromiumMac.mm from
1293 # platform/graphics/chromium, included by regex above, instead.
1294 ['exclude', 'platform/graphics/chromium/ImageChromium\\.cpp$'],
1296 # The Mac does not use ImageSourceCG.cpp from platform/graphics/cg
1297 # even though it is included by regex above.
1298 ['exclude', 'platform/graphics/cg/ImageSourceCG\\.cpp$'],
1299 ['exclude', 'platform/graphics/cg/PDFDocumentImage\\.cpp$'],
1301 # ImageDecoderSkia is not used on mac. ImageDecoderCG is used instead.
1302 ['exclude', 'platform/image-decoders/skia/ImageDecoderSkia\\.cpp$'],
1303 ['include', 'platform/image-decoders/cg/ImageDecoderCG\\.cpp$'],
1305 # Again, Skia is not used on Mac.
1306 ['exclude', 'platform/chromium/DragImageChromiumSkia\\.cpp$'],
1309 ['OS!="linux" and OS!="freebsd"', {
1311 ['exclude', '(Gtk|Linux)\\.cpp$'],
1312 ['exclude', 'Harfbuzz[^/]+\\.(cpp|h)$'],
1313 ['exclude', 'VDMX[^/]+\\.(cpp|h)$'],
1317 'sources/': [['exclude', 'Mac\\.(cpp|mm?)$']]
1321 ['exclude', 'Win\\.cpp$'],
1322 ['exclude', '/(Windows|Uniscribe)[^/]*\\.cpp$']
1327 ['exclude', 'Posix\\.cpp$'],
1329 # The Chromium Win currently uses GlyphPageTreeNodeChromiumWin.cpp from
1330 # platform/graphics/chromium, included by regex above, instead.
1331 ['exclude', 'platform/graphics/skia/GlyphPageTreeNodeSkia\\.cpp$'],
1333 # SystemInfo.cpp is useful and we don't want to copy it.
1334 ['include', 'platform/win/SystemInfo\\.cpp$'],
1337 ['(OS=="linux" or OS=="win") and "WTF_USE_WEBAUDIO_MKL=1" in feature_defines', {
1339 ['include', 'platform/audio/mkl/FFTFrameMKL\\.cpp$'],
1342 ['(OS=="linux" or OS=="win") and "WTF_USE_WEBAUDIO_FFTW=1" in feature_defines', {
1344 ['include', 'platform/audio/fftw/FFTFrameFFTW\\.cpp$'],
1350 'target_name': 'webcore_rendering',
1351 'type': '<(library)',
1353 'webcore_prerequisites',
1356 '<@(webcore_files)',
1360 ['include', 'rendering/'],
1362 # FIXME: Figure out how to store these patterns in a variable.
1363 ['exclude', '(android|brew|cairo|ca|cf|cg|curl|efl|freetype|fftw|gstreamer|gtk|haiku|linux|mac|mkl|opengl|openvg|opentype|pango|posix|qt|soup|svg|symbian|texmap|iphone|win|wince|wx)/'],
1364 ['exclude', '(?<!Chromium)(Android|Cairo|CF|CG|Curl|Gtk|JSC|Linux|Mac|OpenType|POSIX|Posix|Qt|Safari|Soup|Symbian|Win|WinCE|Wx)\\.(cpp|mm?)$'],
1366 ['exclude', 'AllInOne\\.cpp$'],
1368 # Exclude most of SVG except css and javascript bindings.
1369 ['exclude', 'rendering/style/SVG[^/]+.(cpp|h)$'],
1370 ['exclude', 'rendering/RenderSVG[^/]+.(cpp|h)$'],
1371 ['exclude', 'rendering/SVG[^/]+.(cpp|h)$'],
1376 ['exclude', 'Posix\\.cpp$'],
1381 # RenderThemeChromiumSkia is not used on mac since RenderThemeChromiumMac
1382 # does not reference the Skia code that is used by Windows and Linux.
1383 ['exclude', 'rendering/RenderThemeChromiumSkia\\.cpp$'],
1386 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd") and gcc_version==42', {
1387 # Due to a bug in gcc 4.2.1 (the current version on hardy), we get
1388 # warnings about uninitialized this.
1389 'cflags': ['-Wno-uninitialized'],
1391 ['OS!="linux" and OS!="freebsd"', {
1393 ['exclude', '(Gtk|Linux)\\.cpp$'],
1397 'sources/': [['exclude', 'Mac\\.(cpp|mm?)$']]
1401 ['exclude', 'Win\\.cpp$'],
1407 'target_name': 'webcore_remaining',
1408 'type': '<(library)',
1410 'webcore_prerequisites',
1412 # This is needed for mac because of webkit_system_interface. It'd be nice
1413 # if this hard dependency could be split off the rest.
1414 'hard_dependency': 1,
1416 '<@(webcore_files)',
1419 ['exclude', 'html/'],
1420 ['exclude', 'platform/'],
1421 ['exclude', 'rendering/'],
1423 # Exclude most of bindings, except of the V8-related parts.
1424 ['exclude', 'bindings/[^/]+/'],
1425 ['include', 'bindings/generic/'],
1426 ['include', 'bindings/v8/'],
1428 # Exclude most of bridge, except for the V8-related parts.
1429 ['exclude', 'bridge/'],
1430 ['include', 'bridge/jni/'],
1431 ['exclude', 'bridge/jni/[^/]+_jsobject\\.mm$'],
1432 ['exclude', 'bridge/jni/[^/]+_objc\\.mm$'],
1433 ['exclude', 'bridge/jni/jsc/'],
1435 # FIXME: Figure out how to store these patterns in a variable.
1436 ['exclude', '(android|brew|cairo|ca|cf|cg|curl|efl|freetype|fftw|gstreamer|gtk|haiku|linux|mac|mkl|opengl|openvg|opentype|pango|posix|qt|soup|svg|symbian|texmap|iphone|win|wince|wx)/'],
1437 ['exclude', '(?<!Chromium)(Android|Cairo|CF|CG|Curl|Gtk|JSC|Linux|Mac|OpenType|POSIX|Posix|Qt|Safari|Soup|Symbian|Win|WinCE|Wx)\\.(cpp|mm?)$'],
1439 ['exclude', 'AllInOne\\.cpp$'],
1441 ['exclude', 'dom/StaticStringList\\.cpp$'],
1442 ['exclude', 'dom/default/PlatformMessagePortChannel\\.(cpp|h)$'],
1443 ['exclude', 'fileapi/LocalFileSystem\\.cpp$'],
1444 ['exclude', 'inspector/InspectorFrontendClientLocal\\.cpp$'],
1445 ['exclude', 'inspector/JavaScript[^/]*\\.cpp$'],
1446 ['exclude', 'loader/UserStyleSheetLoader\\.cpp$'],
1447 ['exclude', 'loader/appcache/'],
1448 ['exclude', 'loader/archive/ArchiveFactory\\.cpp$'],
1449 ['exclude', 'loader/archive/cf/LegacyWebArchiveMac\\.mm$'],
1450 ['exclude', 'loader/archive/cf/LegacyWebArchive\\.cpp$'],
1451 ['exclude', 'loader/icon/IconDatabase\\.cpp$'],
1452 ['exclude', 'plugins/PluginDataNone\\.cpp$'],
1453 ['exclude', 'plugins/PluginDatabase\\.cpp$'],
1454 ['exclude', 'plugins/PluginMainThreadScheduler\\.cpp$'],
1455 ['exclude', 'plugins/PluginPackageNone\\.cpp$'],
1456 ['exclude', 'plugins/PluginPackage\\.cpp$'],
1457 ['exclude', 'plugins/PluginStream\\.cpp$'],
1458 ['exclude', 'plugins/PluginView\\.cpp$'],
1459 ['exclude', 'plugins/npapi\\.cpp$'],
1460 ['exclude', 'storage/DatabaseTrackerClient\\.h$'],
1461 ['exclude', 'storage/DatabaseTracker\\.cpp$'],
1462 ['exclude', 'storage/IDBFactoryBackendInterface\\.cpp$'],
1463 ['exclude', 'storage/IDBKeyPathBackendImpl\\.cpp$'],
1464 ['exclude', 'storage/OriginQuotaManager\\.(cpp|h)$'],
1465 ['exclude', 'storage/OriginUsageRecord\\.(cpp|h)$'],
1466 ['exclude', 'storage/SQLTransactionClient\\.cpp$'],
1467 ['exclude', 'storage/StorageEventDispatcher\\.cpp$'],
1468 ['exclude', 'storage/StorageNamespace\\.cpp$'],
1469 ['exclude', 'workers/DefaultSharedWorkerRepository\\.(cpp|h)$'],
1471 ['include', 'loader/appcache/ApplicationCacheHost\.h$'],
1472 ['include', 'loader/appcache/DOMApplicationCache\.(cpp|h)$'],
1475 'mac_bundle_resources': [
1476 '../Resources/aliasCursor.png',
1477 '../Resources/cellCursor.png',
1478 '../Resources/contextMenuCursor.png',
1479 '../Resources/copyCursor.png',
1480 '../Resources/crossHairCursor.png',
1481 '../Resources/eastResizeCursor.png',
1482 '../Resources/eastWestResizeCursor.png',
1483 '../Resources/helpCursor.png',
1484 '../Resources/linkCursor.png',
1485 '../Resources/missingImage.png',
1486 '../Resources/moveCursor.png',
1487 '../Resources/noDropCursor.png',
1488 '../Resources/noneCursor.png',
1489 '../Resources/northEastResizeCursor.png',
1490 '../Resources/northEastSouthWestResizeCursor.png',
1491 '../Resources/northResizeCursor.png',
1492 '../Resources/northSouthResizeCursor.png',
1493 '../Resources/northWestResizeCursor.png',
1494 '../Resources/northWestSouthEastResizeCursor.png',
1495 '../Resources/notAllowedCursor.png',
1496 '../Resources/progressCursor.png',
1497 '../Resources/southEastResizeCursor.png',
1498 '../Resources/southResizeCursor.png',
1499 '../Resources/southWestResizeCursor.png',
1500 '../Resources/verticalTextCursor.png',
1501 '../Resources/waitCursor.png',
1502 '../Resources/westResizeCursor.png',
1503 '../Resources/zoomInCursor.png',
1504 '../Resources/zoomOutCursor.png',
1510 ['exclude', 'Posix\\.cpp$'],
1511 ['include', '/opentype/'],
1512 ['include', '/ScrollAnimatorWin\\.cpp$'],
1513 ['include', '/ScrollAnimatorWin\\.h$'],
1514 ['include', '/SkiaFontWin\\.cpp$'],
1515 ['include', '/TransparencyWin\\.cpp$'],
1518 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd") and gcc_version==42', {
1519 # Due to a bug in gcc 4.2.1 (the current version on hardy), we get
1520 # warnings about uninitialized this.
1521 'cflags': ['-Wno-uninitialized'],
1523 ['OS!="linux" and OS!="freebsd"', {
1525 ['exclude', '(Gtk|Linux)\\.cpp$'],
1529 'sources/': [['exclude', 'Mac\\.(cpp|mm?)$']]
1533 ['exclude', 'Win\\.cpp$'],
1534 ['exclude', '/(Windows|Uniscribe)[^/]*\\.cpp$']
1537 ['javascript_engine=="v8"', {
1539 '<(chromium_src_dir)/v8/src/extensions/experimental/experimental.gyp:i18n_api',
1545 'target_name': 'webcore',
1550 'webcore_remaining',
1551 'webcore_rendering',
1554 '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf',
1555 '<(chromium_src_dir)/build/temp_gyp/googleurl.gyp:googleurl',
1556 '<(chromium_src_dir)/skia/skia.gyp:skia',
1557 '<(chromium_src_dir)/third_party/npapi/npapi.gyp:npapi',
1559 'export_dependent_settings': [
1561 '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf',
1562 '<(chromium_src_dir)/build/temp_gyp/googleurl.gyp:googleurl',
1563 '<(chromium_src_dir)/skia/skia.gyp:skia',
1564 '<(chromium_src_dir)/third_party/npapi/npapi.gyp:npapi',
1566 'direct_dependent_settings': {
1568 '<@(webcore_include_dirs)',
1570 'mac_framework_dirs': [
1571 '$(SDKROOT)/System/Library/Frameworks/ApplicationServices.framework/Frameworks',
1572 '$(SDKROOT)/System/Library/Frameworks/Accelerate.framework',
1573 '$(SDKROOT)/System/Library/Frameworks/CoreServices.framework',
1574 '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
1575 '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
1576 '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
1577 '$(SDKROOT)/System/Library/Frameworks/AudioUnit.framework',
1578 '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
1582 ['javascript_engine=="v8"', {
1584 '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
1586 'export_dependent_settings': [
1587 '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
1591 'direct_dependent_settings': {
1593 '../../../WebKitLibraries',
1594 '../../WebKit/mac/WebCoreSupport',
1599 'direct_dependent_settings': {
1600 'include_dirs+++': ['../dom'],
1603 ['OS=="win" and "WTF_USE_WEBAUDIO_MKL=1" in feature_defines', {
1604 # FIXME: (kbr) figure out how to make these dependencies
1605 # work in a cross-platform way. Attempts to use
1606 # "link_settings" and "libraries" in conjunction with the
1607 # msvs-specific settings didn't work so far.
1608 'all_dependent_settings': {
1611 'AdditionalLibraryDirectories': [
1612 # This is a hack to make this directory correct
1613 # relative to targets like chrome_dll. Should use
1614 # <(chromium_src_dir).
1615 '../third_party/mkl/lib/win/ia32',
1617 'AdditionalDependencies': [
1619 'mkl_sequential.lib',
1626 ['OS=="linux" and "WTF_USE_WEBAUDIO_FFTW=1" in feature_defines', {
1627 # FIXME: (kbr) figure out how to make these dependencies
1628 # work in a cross-platform way. Attempts to use
1629 # "link_settings" and "libraries" in conjunction with the
1630 # msvs-specific settings didn't work so far.
1631 'all_dependent_settings': {
1633 # FIXME: (kbr) build the FFTW into PRODUCT_DIR using GYP.
1634 '-Lthird_party/fftw/.libs',