# # Copyright (C) 2009 Google Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following disclaimer # in the documentation and/or other materials provided with the # distribution. # * Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # { 'includes': [ '../../WebKit/chromium/WinPrecompile.gypi', # FIXME: Sense whether upstream or downstream build, and # include the right features.gypi '../../WebKit/chromium/features.gypi', '../WebCore.gypi', ], 'variables': { # If set to 1, doesn't compile debug symbols into webcore reducing the # size of the binary and increasing the speed of gdb. gcc only. 'remove_webcore_debug_symbols%': 0, # If set to 0, doesn't build SVG support, reducing the size of the # binary and increasing the speed of gdb. 'enable_svg%': 1, 'enable_wexit_time_destructors': 1, 'webcore_include_dirs': [ '../', '../..', '../Modules/battery', '../Modules/filesystem', '../Modules/filesystem/chromium', '../Modules/gamepad', '../Modules/geolocation', '../Modules/intents', '../Modules/indexeddb', '../Modules/mediastream', '../Modules/speech', '../Modules/webaudio', '../Modules/webdatabase', '../Modules/webdatabase/chromium', '../Modules/websockets', '../accessibility', '../accessibility/chromium', '../bindings', '../bindings/generic', '../bindings/v8', '../bindings/v8/custom', '../bindings/v8/specialization', '../bridge', '../bridge/jni', '../bridge/jni/v8', '../css', '../dom', '../dom/default', '../editing', '../fileapi', '../history', '../html', '../html/canvas', '../html/parser', '../html/shadow', '../html/track', '../inspector', '../loader', '../loader/appcache', '../loader/archive', '../loader/archive/cf', '../loader/archive/mhtml', '../loader/cache', '../loader/icon', '../mathml', '../notifications', '../page', '../page/animation', '../page/chromium', '../page/scrolling', '../platform', '../platform/animation', '../platform/audio', '../platform/audio/chromium', '../platform/chromium', '../platform/chromium/support', '../platform/graphics', '../platform/graphics/chromium', '../platform/graphics/filters', '../platform/graphics/filters/arm', '../platform/graphics/gpu', '../platform/graphics/opentype', '../platform/graphics/skia', '../platform/graphics/transforms', '../platform/image-decoders', '../platform/image-decoders/bmp', '../platform/image-decoders/gif', '../platform/image-decoders/ico', '../platform/image-decoders/jpeg', '../platform/image-decoders/png', '../platform/image-decoders/skia', '../platform/image-decoders/xbm', '../platform/image-decoders/webp', '../platform/image-encoders/skia', '../platform/leveldb', '../platform/mediastream', '../platform/mediastream/chromium', '../platform/mock', '../platform/network', '../platform/network/chromium', '../platform/sql', '../platform/text', '../platform/text/transcoder', '../plugins', '../plugins/chromium', '../rendering', '../rendering/style', '../rendering/svg', '../storage', '../storage/chromium', '../svg', '../svg/animation', '../svg/graphics', '../svg/graphics/filters', '../svg/properties', '../../ThirdParty/glu', '../workers', '../xml', '../xml/parser', ], 'bindings_idl_files': [ '<@(webcore_bindings_idl_files)', ], 'bindings_idl_files!': [ # Custom bindings in bindings/v8/custom exist for these. '../dom/EventListener.idl', '../dom/EventTarget.idl', '../html/VoidCallback.idl', # Bindings with custom Objective-C implementations. '../page/AbstractView.idl', # These bindings are excluded, as they're only used through inheritance and don't define constants that would need a constructor. '../svg/ElementTimeControl.idl', '../svg/SVGExternalResourcesRequired.idl', '../svg/SVGFilterPrimitiveStandardAttributes.idl', '../svg/SVGFitToViewBox.idl', '../svg/SVGLangSpace.idl', '../svg/SVGLocatable.idl', '../svg/SVGStylable.idl', '../svg/SVGTests.idl', '../svg/SVGTransformable.idl', '../svg/SVGViewSpec.idl', '../svg/SVGZoomAndPan.idl', # FIXME: I don't know why these are excluded, either. # Someone (me?) should figure it out and add appropriate comments. '../css/CSSUnknownRule.idl', ], 'conditions': [ # Location of the chromium src directory. ['inside_chromium_build==0', { # webkit is being built outside of the full chromium project. 'chromium_src_dir': '../../WebKit/chromium', 'libjpeg_gyp_path': '../../WebKit/chromium/third_party/libjpeg_turbo/libjpeg.gyp', },{ # webkit is checked out in src/chromium/third_party/webkit 'chromium_src_dir': '../../../../..', }], # TODO(maruel): Move it in its own project or generate it anyway? ['enable_svg!=0', { 'bindings_idl_files': [ '<@(webcore_svg_bindings_idl_files)', ], }], ['OS=="mac"', { 'webcore_include_dirs': [ # FIXME: Eliminate dependency on platform/mac and related # directories. # FIXME: Eliminate dependency on platform/graphics/mac and # related directories. # platform/graphics/cg may need to stick around, though. '../platform/audio/mac', '../platform/cocoa', '../platform/graphics/cg', '../platform/graphics/cocoa', '../platform/graphics/mac', '../platform/mac', '../platform/text/mac', ], }], ['OS=="win"', { 'webcore_include_dirs': [ '../page/win', '../platform/audio/win', '../platform/graphics/win', '../platform/text/win', '../platform/win', ], },{ # enable -Wall and -Werror, just for Mac and Linux builds for now # FIXME: Also enable this for Windows after verifying no warnings 'chromium_code': 1, }], ['use_x11==1 or OS=="android"', { 'webcore_include_dirs': [ '../platform/graphics/harfbuzz', ], }], ['OS=="win" and buildtype=="Official"', { # On windows official release builds, we try to preserve symbol space. 'derived_sources_aggregate_files': [ '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSourcesAll.cpp', ], },{ 'derived_sources_aggregate_files': [ '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources01.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources02.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources03.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources04.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources05.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources06.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources07.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources08.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources09.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources10.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources11.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources12.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources13.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources14.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources15.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources16.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources17.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources18.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/V8DerivedSources19.cpp', ], }], ], }, # variables 'target_defaults': { 'variables': { 'optimize': 'max', }, }, 'conditions': [ ['OS!="win" and remove_webcore_debug_symbols==1', { # Remove -g from all targets defined here. 'target_defaults': { 'cflags!': ['-g'], }, }], ['os_posix==1 and OS!="mac" and OS!="android" and gcc_version==46', { 'target_defaults': { # Disable warnings about c++0x compatibility, as some names (such as nullptr) conflict # with upcoming c++0x types. 'cflags_cc': ['-Wno-c++0x-compat'], }, }], ['OS=="linux" and target_arch=="arm"', { # Due to a bug in gcc arm, we get warnings about uninitialized timesNewRoman.unstatic.3258 # and colorTransparent.unstatic.4879. 'target_defaults': { 'cflags': ['-Wno-uninitialized'], }, }], ['OS == "mac"', { 'targets': [ { # On the Mac, libWebKitSystemInterface*.a is used to help WebCore # interface with the system. This library is supplied as a static # library in binary format. At present, it contains many global # symbols not marked private_extern. It should be considered an # implementation detail of WebCore, and does not need these symbols # to be exposed so widely. # # This target contains an action that cracks open the existing # static library and rebuilds it with these global symbols # transformed to private_extern. 'target_name': 'webkit_system_interface', 'type': 'none', 'variables': { 'adjusted_library_path': '<(PRODUCT_DIR)/libWebKitSystemInterfaceLeopardPrivateExtern.a', }, 'actions': [ { 'action_name': 'Adjust Visibility', 'inputs': [ 'mac/adjust_visibility.sh', '<(chromium_src_dir)/third_party/apple_webkit/libWebKitSystemInterfaceLeopard.a', ], 'outputs': [ '<(adjusted_library_path)', ], 'action': [ '<@(_inputs)', '<@(_outputs)', '<(INTERMEDIATE_DIR)/adjust_visibility', # work directory ], }, ], # actions 'link_settings': { 'libraries': [ '<(adjusted_library_path)', ], }, # link_settings }, # target webkit_system_interface ], # targets }], # condition OS == "mac" ['clang==1', { 'target_defaults': { 'cflags': ['-Wglobal-constructors'], 'xcode_settings': { 'WARNING_CFLAGS': ['-Wglobal-constructors'], }, }, }], ], # conditions 'targets': [ { 'target_name': 'inspector_protocol_sources', 'type': 'none', 'dependencies': [ 'generate_inspector_protocol_version' ], 'actions': [ { 'action_name': 'generateInspectorProtocolSources', 'inputs': [ # First input. It stands for python script in action below. '../inspector/CodeGeneratorInspector.py', # Other inputs. They go as arguments to the python script. '../inspector/Inspector.json', ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorBackendDispatcher.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/InspectorBackendDispatcher.h', '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorFrontend.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/InspectorFrontend.h', '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorTypeBuilder.cpp', '<(SHARED_INTERMEDIATE_DIR)/webkit/InspectorTypeBuilder.h', '<(SHARED_INTERMEDIATE_DIR)/webcore/InspectorBackendStub.js', ], 'variables': { 'generator_include_dirs': [ ], }, 'action': [ 'python', '<@(_inputs)', '--output_h_dir', '<(SHARED_INTERMEDIATE_DIR)/webkit', '--output_cpp_dir', '<(SHARED_INTERMEDIATE_DIR)/webcore', ], 'message': 'Generating Inspector protocol sources from Inspector.json', }, ] }, { 'target_name': 'generate_inspector_protocol_version', 'type': 'none', 'actions': [ { 'action_name': 'generateInspectorProtocolVersion', 'inputs': [ '../inspector/generate-inspector-protocol-version', '../inspector/Inspector.json', ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/webkit/InspectorProtocolVersion.h', ], 'variables': { 'generator_include_dirs': [ ], }, 'action': [ 'python', '../inspector/generate-inspector-protocol-version', '-o', '<@(_outputs)', '<@(_inputs)' ], 'message': 'Validate inspector protocol for backwards compatibility and generate version file', } ] }, { 'target_name': 'injected_script_source', 'type': 'none', 'actions': [ { 'action_name': 'generateInjectedScriptSource', 'inputs': [ '../inspector/InjectedScriptSource.js', ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/webkit/InjectedScriptSource.h', ], 'action': [ 'perl', '../inspector/xxd.pl', 'InjectedScriptSource_js', '<@(_inputs)', '<@(_outputs)' ], 'message': 'Generating InjectedScriptSource.h from InjectedScriptSource.js', }, ] }, { 'target_name': 'debugger_script_source', 'type': 'none', 'actions': [ { 'action_name': 'generateDebuggerScriptSource', 'inputs': [ '../bindings/v8/DebuggerScript.js', ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/webkit/DebuggerScriptSource.h', ], 'action': [ 'perl', '../inspector/xxd.pl', 'DebuggerScriptSource_js', '<@(_inputs)', '<@(_outputs)' ], 'message': 'Generating DebuggerScriptSource.h from DebuggerScript.js', }, ] }, { 'target_name': 'generate_supplemental_dependency', 'type': 'none', 'actions': [ { 'action_name': 'generateSupplementalDependency', 'variables': { # Write sources into a file, so that the action command line won't # exceed OS limits. 'idl_files_list': '<|(idl_files_list.tmp <@(bindings_idl_files))', }, 'inputs': [ '../bindings/scripts/preprocess-idls.pl', '../bindings/scripts/IDLParser.pm', '../bindings/scripts/IDLAttributes.txt', '<(idl_files_list)', '. 'action_name': 'WebCoreSystemInterface.h', 'inputs': [ '../platform/mac/WebCoreSystemInterface.h', ], 'outputs': [ '<(INTERMEDIATE_DIR)/WebCore/WebCoreSystemInterface.h', ], 'action': ['cp', '<@(_inputs)', '<@(_outputs)'], }, ], 'sources/': [ # Additional files from the WebCore Mac build that are presently # used in the WebCore Chromium Mac build too. # The Mac build is USE(CF) but does not use CFNetwork. ['include', 'CF\\.cpp$'], ['exclude', 'network/cf/'], # Use native Mac font code from WebCore. ['include', 'platform/(graphics/)?mac/[^/]*Font[^/]*\\.(cpp|mm?)$'], ['include', 'platform/graphics/mac/ComplexText[^/]*\\.(cpp|h)$'], # We can use this for the fast Accelerate.framework FFT. ['include', 'platform/audio/mac/FFTFrameMac\\.cpp$'], # Cherry-pick some files that can't be included by broader regexps. # Some of these are used instead of Chromium platform files, see # the specific exclusions in the "exclude" list below. ['include', 'rendering/RenderThemeMac\\.mm$'], ['include', 'platform/graphics/mac/ColorMac\\.mm$'], ['include', 'platform/graphics/mac/ComplexTextControllerCoreText\\.mm$'], ['include', 'platform/graphics/mac/FloatPointMac\\.mm$'], ['include', 'platform/graphics/mac/FloatRectMac\\.mm$'], ['include', 'platform/graphics/mac/FloatSizeMac\\.mm$'], ['include', 'platform/graphics/mac/GlyphPageTreeNodeMac\\.cpp$'], ['include', 'platform/graphics/mac/IntPointMac\\.mm$'], ['include', 'platform/graphics/mac/IntRectMac\\.mm$'], ['include', 'platform/mac/BlockExceptions\\.mm$'], ['include', 'platform/mac/KillRingMac\\.mm$'], ['include', 'platform/mac/LocalCurrentGraphicsContext\\.mm$'], ['include', 'platform/mac/NSScrollerImpDetails\\.mm$'], ['include', 'platform/mac/PurgeableBufferMac\\.cpp$'], ['include', 'platform/mac/ScrollbarThemeMac\\.mm$'], ['include', 'platform/mac/ScrollAnimatorMac\\.mm$'], ['include', 'platform/mac/ScrollElasticityController\\.mm$'], ['include', 'platform/mac/WebCoreSystemInterface\\.mm$'], ['include', 'platform/mac/WebCoreTextRenderer\\.mm$'], ['include', 'platform/text/mac/ShapeArabic\\.c$'], ['include', 'platform/text/mac/String(Impl)?Mac\\.mm$'], # Use USE_NEW_THEME on Mac. ['include', 'platform/Theme\\.cpp$'], ['include', 'WebKit/mac/WebCoreSupport/WebSystemInterface\\.mm$'], # We use LocalizedDateMac.mm instead of LocalizedDateICU.cpp. ['exclude', 'platform/text/LocalizedDateICU\\.cpp$'], ['include', 'platform/text/mac/LocalizedDateMac\\.mm$'], # The Mac uses platform/mac/KillRingMac.mm instead of the dummy # implementation. ['exclude', 'platform/KillRingNone\\.cpp$'], # The Mac currently uses FontCustomPlatformData.cpp from # platform/graphics/mac, included by regex above, instead. ['exclude', 'platform/graphics/skia/FontCustomPlatformData\\.cpp$'], # The Mac currently uses ScrollbarThemeChromiumMac.mm, which is not # related to ScrollbarThemeChromium.cpp. ['exclude', 'platform/chromium/ScrollbarThemeChromium\\.cpp$'], # The Mac does not use ImageSourceCG.cpp from platform/graphics/cg # even though it is included by regex above. ['exclude', 'platform/graphics/cg/ImageSourceCG\\.cpp$'], ['exclude', 'platform/graphics/cg/PDFDocumentImage\\.cpp$'], # Mac uses only ScrollAnimatorMac. ['exclude', 'platform/ScrollAnimatorNone\\.cpp$'], ['exclude', 'platform/ScrollAnimatorNone\\.h$'], ['include', 'platform/graphics/cg/FloatPointCG\\.cpp$'], ['include', 'platform/graphics/cg/FloatRectCG\\.cpp$'], ['include', 'platform/graphics/cg/FloatSizeCG\\.cpp$'], ['include', 'platform/graphics/cg/IntPointCG\\.cpp$'], ['include', 'platform/graphics/cg/IntRectCG\\.cpp$'], ['include', 'platform/graphics/cg/IntSizeCG\\.cpp$'], ['exclude', 'platform/graphics/chromium/ImageChromiumMac\\.mm$'], ['exclude', 'platform/graphics/mac/FontMac\\.mm$'], ['exclude', 'platform/graphics/skia/FontCacheSkia\\.cpp$'], ['exclude', 'platform/graphics/skia/GlyphPageTreeNodeSkia\\.cpp$'], ['exclude', 'platform/graphics/skia/SimpleFontDataSkia\\.cpp$'], ['exclude', 'platform/chromium/DragImageChromiumMac\\.cpp$'], ], },{ # OS!="mac" 'sources/': [ ['exclude', 'Mac\\.(cpp|mm?)$'], # Linux uses FontLinux; Windows uses FontWin. Additionally, FontSkia # is excluded by a rule above if WebKit uses CG instead of Skia. ['exclude', 'platform/graphics/skia/FontSkia\\.cpp$'], # FIXME: We will eventually compile this too, but for now it's # only used on mac. ['exclude', 'platform/graphics/FontPlatformData\\.cpp$'], ], }], ['use_x11 == 0 and OS != "mac"', { 'sources/': [ ['exclude', 'VDMX[^/]+\\.(cpp|h)$'], ], }], ['OS=="win"', { 'sources/': [ ['exclude', 'Posix\\.cpp$'], # The Chromium Win currently uses GlyphPageTreeNodeChromiumWin.cpp from # platform/graphics/chromium, included by regex above, instead. ['exclude', 'platform/graphics/skia/FontCacheSkia\\.cpp$'], ['exclude', 'platform/graphics/skia/GlyphPageTreeNodeSkia\\.cpp$'], ['exclude', 'platform/graphics/skia/SimpleFontDataSkia\\.cpp$'], # SystemInfo.cpp is useful and we don't want to copy it. ['include', 'platform/win/SystemInfo\\.cpp$'], ['exclude', 'platform/text/LocalizedDateICU\.cpp$'], ['include', 'platform/text/LocalizedDateWin\.cpp$'], ['include', 'platform/text/LocaleWin\.cpp$'], ['include', 'platform/text/LocaleWin\.h$'], ], },{ # OS!="win" 'sources/': [ ['exclude', 'Win\\.cpp$'], ['exclude', '/(Windows|Uniscribe)[^/]*\\.cpp$'], ['include', 'platform/graphics/opentype/OpenTypeSanitizer\\.cpp$'], ], }], ['OS=="android"', { 'sources/': [ ['include', 'platform/chromium/ClipboardChromiumLinux\\.cpp$'], ['include', 'platform/chromium/FileSystemChromiumLinux\\.cpp$'], ['include', 'platform/graphics/chromium/GlyphPageTreeNodeLinux\\.cpp$'], ['exclude', 'platform/graphics/chromium/IconChromium\\.cpp$'], ['include', 'platform/graphics/chromium/VDMXParser\\.cpp$'], ['include', 'platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz\\.cpp$'], ['include', 'platform/graphics/harfbuzz/FontHarfBuzz\\.cpp$'], ['include', 'platform/graphics/harfbuzz/FontPlatformDataHarfBuzz\\.cpp$'], ['include', 'platform/graphics/harfbuzz/HarfBuzzSkia\\.cpp$'], ['include', 'platform/graphics/harfbuzz/HarfBuzzShaperBase\\.cpp$'], ['exclude', 'platform/graphics/skia/FontCacheSkia\\.cpp$'], ['include', 'platform/graphics/skia/SimpleFontDataSkia\\.cpp$'], ], }, { # OS!="android" 'sources/': [ ['exclude', 'Android\\.cpp$'], ], }], ], }, # The *NEON.cpp files fail to compile when -mthumb is passed. Force # them to build in ARM mode. # See https://bugs.webkit.org/show_bug.cgi?id=62916. { 'target_name': 'webcore_arm_neon', 'conditions': [ ['target_arch=="arm"', { 'type': 'static_library', 'dependencies': [ 'webcore_prerequisites', ], 'hard_dependency': 1, 'sources': [ '<@(webcore_files)', ], 'sources/': [ ['exclude', '.*'], ['include', 'platform/graphics/filters/arm/.*NEON\\.(cpp|h)'], ], 'cflags': ['-marm'], 'conditions': [ ['OS=="android"', { 'cflags!': ['-mthumb'], }], ], },{ # target_arch!="arm" 'type': 'none', }], ], }, { 'target_name': 'webcore_rendering', 'type': 'static_library', 'dependencies': [ 'webcore_prerequisites', ], 'sources': [ '<@(webcore_privateheader_files)', '<@(webcore_files)', ], 'sources/': [ ['exclude', '.*'], ['include', 'rendering/'], # FIXME: Figure out how to store these patterns in a variable. ['exclude', '(cairo|ca|cf|cg|curl|efl|freetype|gstreamer|gtk|linux|mac|opengl|openvg|opentype|pango|posix|qt|soup|svg|symbian|texmap|iphone|win|wince|wx)/'], ['exclude', '(?