# 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",
  ]
  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 = [
    "-Wall",
    "-Wcast-align",
    "-Wextra",
    "-Wformat-security",
    "-Wmissing-format-attribute",
    "-Wno-format",
    "-Wno-expansion-to-defined",
    "-Wno-max-unsigned-zero",
    "-Wno-parentheses-equality",
    "-Wno-unused-function",
    "-Wno-unused-label",
    "-Wno-unused-lambda-capture",
    "-Wno-unused-parameter",
    "-Wno-unused-variable",
    "-Wno-pessimizing-move",
    "-Wno-tautological-compare",
    "-Wpointer-arith",
    "-Wundef",
    "-Wwrite-strings",
  ]
}

source_set("WebKit") {
  sources = WebKit_sources

  deps = [
    ":JavaScriptCore",
    ":WebCore",
    ":wtf",
  ]

  configs += [
    ":features",
    ":flags",
  ]
  configs -= [
    "//build/config/fuchsia:safestack",
    "//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",
  ]
  configs -= [ "//build/config/fuchsia:safestack" ]
}

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",
  ]
  configs -= [ "//build/config/fuchsia:safestack" ]

  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",
  ]
  configs -= [ "//build/config/fuchsia:safestack" ]

  defines = [ "BUILDING_WTF" ]
}
