| # Copyright 2017 The Fuchsia Authors. 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. |
| |
| import("JavaScriptCore.gni") |
| import("JavaScriptCoreDerivedSources.gni") |
| import("JavaScriptCore_inspectorDerivedSources.gni") |
| import("MiniBrowser.gni") |
| import("WebCore.gni") |
| import("WebCoreDerivedSources.gni") |
| import("WebKit.gni") |
| import("wtf.gni") |
| |
| config("webkit_config") { |
| include_dirs = [ "Source/WebKit/fuchsia" ] |
| } |
| |
| shared_library("webkit") { |
| deps = [ |
| ":WebKit_source_set", |
| ] |
| public_configs = [ ":webkit_config" ] |
| } |
| |
| config("features") { |
| # Target configuration - what OS we are building for, what libraries we use. |
| defines = [ |
| "OS_FUCHSIA=1", |
| "USE_CAIRO=1", |
| "USE_CURL=1", |
| "USE_HARFBUZZ=1", |
| "BUILDING_WITH_CMAKE", # A lie, but we are using cmakeconfig.h |
| ] |
| |
| # Features of our build. |
| defines += [ |
| "HAVE_ACCESSIBILITY=1", |
| "HAVE_CONFIG_H=1", |
| "HAVE_FEATURES_H=1", |
| |
| #"NDEBUG", |
| ] |
| |
| # Where we put cmakeconfig.h |
| include_dirs = [ "Source/config" ] |
| } |
| |
| config("flags") { |
| cflags = [ |
| "-fno-sanitize=safe-stack", |
| |
| # TODO(phosek): This is consistent with how we were building WebKit before |
| # the default flags changed. However, it is likely that using |
| # stack-protector-strong is just fine. We should drop -fno-stack-protector |
| # here after it's been thoroughly tested. |
| "-fno-stack-protector", |
| "-Wall", |
| "-Wcast-align", |
| "-Wextra", |
| "-Wformat-security", |
| "-Wmissing-format-attribute", |
| "-Wno-deprecated-register", |
| "-Wno-expansion-to-defined", |
| "-Wno-format", |
| "-Wno-max-unsigned-zero", |
| "-Wno-null-pointer-arithmetic", |
| "-Wno-parentheses-equality", |
| "-Wno-pessimizing-move", |
| "-Wno-tautological-compare", |
| "-Wno-unused-function", |
| "-Wno-unused-label", |
| "-Wno-unused-lambda-capture", |
| "-Wno-unused-parameter", |
| "-Wno-unused-private-field", |
| "-Wno-unused-variable", |
| "-Wpointer-arith", |
| "-Wundef", |
| "-Wwrite-strings", |
| ] |
| |
| cflags_cc = [ "-std=c++14" ] |
| } |
| |
| source_set("WebKit_source_set") { |
| sources = WebKit_sources |
| |
| deps = [ |
| ":JavaScriptCore", |
| ":WebCore", |
| ":wtf", |
| "//zircon/public/lib/hid", |
| ] |
| |
| configs += [ |
| ":features", |
| ":flags", |
| ] |
| configs -= [ "//build/config:symbol_visibility_hidden" ] |
| |
| defines = [ "BUILDING_WebKit" ] |
| |
| include_dirs = [ |
| ".", |
| "DerivedSources", |
| "DerivedSources/ForwardingHeaders", |
| "DerivedSources/ForwardingHeaders/JavaScriptCore", |
| "DerivedSources/ForwardingHeaders/WebCore", |
| "DerivedSources/ForwardingHeaders/WebKitLegacy", |
| "DerivedSources/JavaScriptCore", |
| "DerivedSources/WebCore", |
| "DerivedSources/WebKitLegacy", |
| "Source", |
| "Source/WebKit/Storage", |
| "Source/WebKit/WebCoreSupport", |
| "Source/WebKit/fuchsia", |
| "Source/WebKit/fuchsia/WebCoreSupport", |
| ] |
| cflags = [ "-includeWebKitPrefix.h" ] |
| } |
| |
| config("WebCore_config") { |
| include_dirs = [ |
| ".", |
| "DerivedSources", |
| "DerivedSources/WebCore", |
| "Source/ThirdParty/ANGLE", |
| "Source/ThirdParty/ANGLE/include/KHR", |
| "Source/WebCore/Modules/airplay", |
| "Source/WebCore/Modules/applepay", |
| "Source/WebCore/Modules/battery", |
| "Source/WebCore/Modules/encryptedmedia", |
| "Source/WebCore/Modules/fetch", |
| "Source/WebCore/Modules/geolocation", |
| "Source/WebCore/Modules/indexeddb", |
| "Source/WebCore/Modules/indexeddb/client", |
| "Source/WebCore/Modules/indexeddb/server", |
| "Source/WebCore/Modules/indexeddb/shared", |
| "Source/WebCore/Modules/indieui", |
| "Source/WebCore/Modules/mediacontrols", |
| "Source/WebCore/Modules/mediasession", |
| "Source/WebCore/Modules/mediasource", |
| "Source/WebCore/Modules/mediastream", |
| "Source/WebCore/Modules/navigatorcontentutils", |
| "Source/WebCore/Modules/notifications", |
| "Source/WebCore/Modules/plugins", |
| "Source/WebCore/Modules/proximity", |
| "Source/WebCore/Modules/quota", |
| "Source/WebCore/Modules/speech", |
| "Source/WebCore/Modules/streams", |
| "Source/WebCore/Modules/vibration", |
| "Source/WebCore/Modules/webaudio", |
| "Source/WebCore/Modules/webdatabase", |
| "Source/WebCore/Modules/websockets", |
| "Source/WebCore/accessibility", |
| "Source/WebCore/animation", |
| "Source/WebCore/bindings", |
| "Source/WebCore/bindings/generic", |
| "Source/WebCore/bindings/js", |
| "Source/WebCore/bridge", |
| "Source/WebCore/bridge/c", |
| "Source/WebCore/bridge/jsc", |
| "Source/WebCore/contentextensions", |
| "Source/WebCore/crypto", |
| "Source/WebCore/crypto/algorithms", |
| "Source/WebCore/crypto/keys", |
| "Source/WebCore/crypto/parameters", |
| "Source/WebCore/css", |
| "Source/WebCore/css/parser", |
| "Source/WebCore/cssjit", |
| "Source/WebCore/dom", |
| "Source/WebCore/dom/default", |
| "Source/WebCore/editing", |
| "Source/WebCore/fileapi", |
| "Source/WebCore/history", |
| "Source/WebCore/html", |
| "Source/WebCore/html/canvas", |
| "Source/WebCore/html/forms", |
| "Source/WebCore/html/parser", |
| "Source/WebCore/html/shadow", |
| "Source/WebCore/html/track", |
| "Source/WebCore/inspector", |
| "Source/WebCore/loader", |
| "Source/WebCore/loader/appcache", |
| "Source/WebCore/loader/archive", |
| "Source/WebCore/loader/archive/mhtml", |
| "Source/WebCore/loader/cache", |
| "Source/WebCore/loader/icon", |
| "Source/WebCore/mathml", |
| "Source/WebCore/page", |
| "Source/WebCore/page/animation", |
| "Source/WebCore/page/csp", |
| "Source/WebCore/page/scrolling", |
| "Source/WebCore/platform", |
| "Source/WebCore/platform/animation", |
| "Source/WebCore/platform/audio", |
| "Source/WebCore/platform/cairo", |
| "Source/WebCore/platform/crypto", |
| "Source/WebCore/platform/gamepad", |
| "Source/WebCore/platform/gamepad/deprecated", |
| "Source/WebCore/platform/gamepad/linux", |
| "Source/WebCore/platform/graphics", |
| "Source/WebCore/platform/graphics/cairo", |
| "Source/WebCore/platform/graphics/cpu/arm", |
| "Source/WebCore/platform/graphics/cpu/arm/filters", |
| "Source/WebCore/platform/graphics/displaylists", |
| "Source/WebCore/platform/graphics/filters", |
| "Source/WebCore/platform/graphics/freetype", |
| "Source/WebCore/platform/graphics/harfbuzz", |
| "Source/WebCore/platform/graphics/harfbuzz/ng", |
| "Source/WebCore/platform/graphics/opengl", |
| "Source/WebCore/platform/graphics/opentype", |
| "Source/WebCore/platform/graphics/transforms", |
| "Source/WebCore/platform/image-decoders", |
| "Source/WebCore/platform/image-decoders/bmp", |
| "Source/WebCore/platform/image-decoders/gif", |
| "Source/WebCore/platform/image-decoders/ico", |
| "Source/WebCore/platform/image-decoders/jpeg", |
| "Source/WebCore/platform/image-decoders/png", |
| "Source/WebCore/platform/image-decoders/webp", |
| "Source/WebCore/platform/mediastream", |
| "Source/WebCore/platform/mock", |
| "Source/WebCore/platform/mock/mediasource", |
| "Source/WebCore/platform/network", |
| "Source/WebCore/platform/network/curl", |
| "Source/WebCore/platform/sql", |
| "Source/WebCore/platform/text", |
| "Source/WebCore/platform/text/icu", |
| "Source/WebCore/plugins", |
| "Source/WebCore/rendering", |
| "Source/WebCore/rendering/line", |
| "Source/WebCore/rendering/mathml", |
| "Source/WebCore/rendering/shapes", |
| "Source/WebCore/rendering/style", |
| "Source/WebCore/rendering/svg", |
| "Source/WebCore/replay", |
| "Source/WebCore/storage", |
| "Source/WebCore/style", |
| "Source/WebCore/svg", |
| "Source/WebCore/svg/animation", |
| "Source/WebCore/svg/graphics", |
| "Source/WebCore/svg/graphics/filters", |
| "Source/WebCore/svg/properties", |
| "Source/WebCore/testing", |
| "Source/WebCore/websockets", |
| "Source/WebCore/workers", |
| "Source/WebCore/xml", |
| "Source/WebCore/xml/parser", |
| "Source/WebCore", |
| ] |
| defines = [] |
| } |
| |
| source_set("WebCore") { |
| sources = WebCore_sources + WebCoreDerivedSources_sources |
| |
| public_deps = [ |
| ":JavaScriptCore", |
| ":wtf", |
| "//third_party/boringssl", |
| "//third_party/cairo", |
| "//third_party/curl:libcurl", |
| "//third_party/freetype2", |
| "//third_party/harfbuzz", |
| "//third_party/icu:icui18n", |
| "//third_party/icu:icuuc", |
| "//third_party/libjpeg-turbo:libjpeg", |
| "//third_party/libpng", |
| "//third_party/libxml2", |
| "//third_party/sqlite", |
| "//third_party/zlib", |
| ] |
| |
| public_configs = [ ":WebCore_config" ] |
| |
| configs += [ |
| ":features", |
| ":flags", |
| ] |
| } |
| |
| config("JavaScriptCore_config") { |
| include_dirs = [ |
| "Source/JavaScriptCore", |
| "Source/JavaScriptCore/..", |
| "Source/JavaScriptCore/API", |
| "Source/JavaScriptCore/ForwardingHeaders", |
| "Source/JavaScriptCore/assembler", |
| "Source/JavaScriptCore/b3", |
| "Source/JavaScriptCore/b3/air", |
| "Source/JavaScriptCore/bindings", |
| "Source/JavaScriptCore/builtins", |
| "Source/JavaScriptCore/bytecode", |
| "Source/JavaScriptCore/bytecompiler", |
| "Source/JavaScriptCore/dfg", |
| "Source/JavaScriptCore/disassembler", |
| "Source/JavaScriptCore/disassembler/udis86", |
| "Source/JavaScriptCore/ftl", |
| "Source/JavaScriptCore/heap", |
| "Source/JavaScriptCore/debugger", |
| "Source/JavaScriptCore/inspector", |
| "Source/JavaScriptCore/inspector/agents", |
| "Source/JavaScriptCore/inspector/augmentable", |
| "Source/JavaScriptCore/inspector/remote", |
| "Source/JavaScriptCore/interpreter", |
| "Source/JavaScriptCore/jit", |
| "Source/JavaScriptCore/llint", |
| "Source/JavaScriptCore/parser", |
| "Source/JavaScriptCore/profiler", |
| "Source/JavaScriptCore/replay", |
| "Source/JavaScriptCore/runtime", |
| "Source/JavaScriptCore/tools", |
| "Source/JavaScriptCore/wasm", |
| "Source/JavaScriptCore/yarr", |
| "DerivedSources/JavaScriptCore", |
| "DerivedSources/JavaScriptCore/inspector", |
| "DerivedSources/ForwardingHeaders", |
| ] |
| if (is_debug) { |
| include_dirs += [ "DerivedSources/JavaScriptCore/Debug" ] |
| } else { |
| include_dirs += [ "DerivedSources/JavaScriptCore/Release" ] |
| } |
| } |
| |
| source_set("JavaScriptCore") { |
| sources = JavaScriptCore_sources + JavaScriptCoreDerivedSources_sources + |
| JavaScriptCore_inspectorDerivedSources_sources |
| |
| public_configs = [ ":JavaScriptCore_config" ] |
| configs += [ |
| ":features", |
| ":flags", |
| ] |
| |
| public_deps = [ |
| ":wtf", |
| ] |
| |
| defines = [ |
| "BUILDING_JavaScriptCore", |
| "STATICALLY_LINKED_WITH_WTF", |
| ] |
| } |
| |
| config("wtf_config") { |
| include_dirs = [ "Source/WTF" ] |
| } |
| |
| config("wtf_private_config") { |
| # WTF has Source/WTF/wtf/unicode/UTF8.h and Source/WTF/wtf on the include |
| # path. The ICU library, which WTF depends on, has <unicode/utf8.h> in its |
| # include path. This means on case-insensitive filesystems, #includes for |
| # <unicode/utf8.h> will match Soruce/WTF/wtf/unicode/UTF8.h, which will |
| # internally include ICU's <unicode/utf8.h>. |
| |
| # To get around all this, we manually add ICU's include path to our |
| # include_dirs before adding the WTF headers so includes for |
| # <unicode/utf8.h> match ICU regardless of the case sensitivity of the |
| # filesystem. As it turns out, all of the includes of UTF8.h (uppercase) are |
| # written <wtf/unicode/UTF8.h> so they will unambiguously resolve to |
| # Source/WTF/wtf/unicode/UTF8.h even with this include path first. |
| include_dirs = [ "//third_party/icu/source/common" ] |
| |
| include_dirs += [ |
| "Source/WTF/wtf", |
| "Source/WTF/wtf/dtoa", |
| "Source/WTF/wtf/text", |
| "Source/WTF/wtf/text/icu", |
| "Source/WTF/wtf/threads", |
| "Source/WTF/wtf/unicode", |
| ] |
| } |
| |
| source_set("wtf") { |
| sources = wtf_sources |
| |
| public_configs = [ ":wtf_config" ] |
| public_deps = [ |
| "//third_party/icu:icui18n", |
| "//third_party/icu:icuuc", |
| ] |
| configs += [ |
| ":features", |
| ":flags", |
| ":wtf_private_config", |
| ] |
| |
| defines = [ "BUILDING_WTF" ] |
| } |