# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/sanitizers/sanitizers.gni")
import("//build/toolchain/goma.gni")

declare_args() {
  # The platform on which the instrumented libraries are being built.
  instrumented_libraries_platform = "trusty"
}

group("deps") {
  if (use_prebuilt_instrumented_libraries) {
    assert(prebuilt_instrumented_libraries_available,
           "Prebuilt instrumented libraries are only available when " +
               "is_msan = true and msan_track_origins = {0, 2}")
    deps = [
      ":prebuilt",
    ]
    data_deps = [
      ":prebuilt",
    ]
  }
  if (use_locally_built_instrumented_libraries) {
    deps = [
      ":locally_built",
    ]
  }
}

if (is_msan) {
  sanitizer_type = "msan"
} else if (is_asan) {
  sanitizer_type = "asan"
} else if (is_tsan) {
  sanitizer_type = "tsan"
}

if (prebuilt_instrumented_libraries_available) {
  group("prebuilt") {
    visibility = [ ":deps" ]

    deps = [
      ":extract_prebuilt_instrumented_libraries",
    ]
    data_deps = [
      ":extract_prebuilt_instrumented_libraries",
    ]
  }

  if (is_msan) {
    if (msan_track_origins == 0) {
      archive_prefix = "msan-no-origins"
    } else if (msan_track_origins == 2) {
      archive_prefix = "msan-chained-origins"
    }
  }

  # TODO(GYP): scripts/download_binaries.py uses GYP_DEFINES to decide whether
  # to download the archives extracted here.
  # Note: This requires a clobber whenever Ubuntu version changes.
  action("extract_prebuilt_instrumented_libraries") {
    visibility = [ ":prebuilt" ]
    script = "scripts/unpack_binaries.py"
    depfile = "$target_out_dir/$archive_prefix.d"
    args = [
      archive_prefix,
      rebase_path("binaries", root_build_dir),
      rebase_path(root_out_dir + "/instrumented_libraries_prebuilt",
                  root_build_dir),
      rebase_path(target_out_dir, root_out_dir),
    ]
    outputs = [
      "$target_out_dir/$archive_prefix.txt",
    ]
    data = [
      "$root_out_dir/instrumented_libraries_prebuilt/",
    ]
  }

  config("prebuilt_ldflags") {
    ldflags = [
      # Add a relative RPATH entry to Chromium binaries. This puts instrumented
      # DSOs before system-installed versions in library search path.
      "-Wl,-R,\$ORIGIN/instrumented_libraries_prebuilt/$sanitizer_type/lib",
      "-Wl,-z,origin",
      # Add some padding to allow RPATHs to be modified later.
      "-Wl,-R,________________________________________________________________PADDING________________________________________________________________"
    ]
  }
}

if (use_locally_built_instrumented_libraries) {
  assert(instrumented_libraries_platform == "trusty",
         "Currently, the only supported platform is Trusty.")
  group("locally_built") {
    visibility = [ ":deps" ]
    deps = [
      ":atk1.0",
      ":brltty",
      ":dee",
      ":freetype",
      ":harfbuzz",
      ":libappindicator3-1",
      ":libasound2",
      ":libatk-bridge2.0-0",
      ":libatspi2.0-0",
      ":libcairo2",
      ":libcap2",
      ":libcredentialkit_pkcs11",
      ":libdbus-1-3",
      ":libdbus-glib-1-2",
      ":libdbusmenu",
      ":libdbusmenu-glib4",
      ":libexpat1",
      ":libffi6",
      ":libfontconfig1",
      ":libgcrypt11",
      ":libgdk-pixbuf2.0-0",
      ":libglib2.0-0",
      ":libgnome-keyring0",
      ":libgpg-error0",
      ":libgtk-3-0",
      ":libgtk2.0-0",
      ":libido3-0.1-0",
      ":libindicator3-7",
      ":libnspr4",
      ":libp11-kit0",
      ":libpci3",
      ":libpcre3",
      ":libpixman-1-0",
      ":libsecret",
      ":libtasn1-6",
      ":libunity9",
      ":libva1",
      ":libx11-6",
      ":libxau6",
      ":libxcb1",
      ":libxcomposite1",
      ":libxcursor1",
      ":libxdamage1",
      ":libxdmcp6",
      ":libxext6",
      ":libxfixes3",
      ":libxi6",
      ":libxinerama1",
      ":libxrandr2",
      ":libxrender1",
      ":libxss1",
      ":libxtst6",
      ":nss",
      ":pango1.0",
      ":pulseaudio",
      ":udev",
      ":zlib1g",
    ]
    if (is_msan) {
      deps += [
        ":libcups2",
        ":libgnutls26",
      ]
    }
    if (!is_tsan) {
      deps += [ ":libpng12-0" ]
    }
    data = [
      "${root_out_dir}/instrumented_libraries/${sanitizer_type}/lib",
    ]
  }

  config("locally_built_ldflags") {
    ldflags = [
      # Add a relative RPATH entry to Chromium binaries. This puts instrumented
      # DSOs before system-installed versions in library search path.
      "-Wl,-R,\$ORIGIN/instrumented_libraries/${sanitizer_type}/lib",
      "-Wl,-z,origin",
      # Add some padding to allow RPATHs to be modified later.
      "-Wl,-R,________________________________________________________________PADDING________________________________________________________________"
    ]
  }

  template("instrumented_library") {
    action(target_name) {
      script = "scripts/download_build_install.py"
      build_method = "destdir"
      if (defined(invoker.build_method)) {
        build_method = invoker.build_method
      }

      cc = rebase_path("//third_party/llvm-build/Release+Asserts/bin/clang")
      cxx = rebase_path("//third_party/llvm-build/Release+Asserts/bin/clang++")
      if (use_goma) {
        cc = "${goma_dir}/gomacc ${cc}"
        cxx = "${goma_dir}/gomacc ${cxx}"
      }
      package_cflags = [
        "-O2",
        "-gline-tables-only",
        "-fPIC",
        "-w",
        "-U_FORITFY_SOURCE",
        "-fno-omit-frame-pointer",
      ]
      package_ldflags = []
      if (is_asan) {
        package_cflags += [ "-fsanitize=address" ]
        package_ldflags = [ "-fsanitize=address" ]
      } else if (is_msan) {
        package_cflags += [
          "-fsanitize=memory",
          "-fsanitize-memory-track-origins=${msan_track_origins}",
        ]
        package_ldflags = [ "-fsanitize=memory" ]
      } else if (is_tsan) {
        package_cflags += [ "-fsanitize=thread" ]
        package_ldflags = [ "-fsanitize=thread" ]
      }
      if (defined(invoker.package_cflags)) {
        package_cflags += invoker.package_cflags
      }
      if (defined(invoker.package_ldflags)) {
        package_ldflags += invoker.package_ldflags
      }
      if (defined(invoker.deps)) {
        deps = invoker.deps
      }
      product_dir = rebase_path(root_out_dir)
      intermediate_dir = rebase_path(target_gen_dir)
      args = [
        "--build-method=${build_method}",
        "--cc=${cc}",
        "--cxx=${cxx}",
        "--intermediate-dir=${intermediate_dir}",
        "--libdir=lib",
        "--package=${target_name}",
        "--product-dir=${product_dir}",
        "--cflags=${package_cflags}",
        "--ldflags=${package_ldflags}",
        "--sanitizer=${sanitizer_type}",
      ]
      outputs = [
        "${root_out_dir}/instrumented_libraries/${sanitizer_type}/${target_name}.txt",
      ]
      inputs = []
      if (defined(invoker.pre_build)) {
        inputs += [ invoker.pre_build ]
        args += [ "--pre-build=${invoker.pre_build}" ]
      }
      if (defined(invoker.patch)) {
        inputs += [ invoker.patch ]
        args += [ "--patch=${invoker.patch}" ]
      }
      if (defined(invoker.asan_blacklist)) {
        if (is_asan) {
          inputs += [ invoker.asan_blacklist ]
          args += [ "--sanitizer-blacklist=${invoker.asan_blacklist}" ]
        } else {
          assert(invoker.asan_blacklist != "", "")
        }
      }
      if (defined(invoker.msan_blacklist)) {
        if (is_msan) {
          inputs += [ invoker.msan_blacklist ]
          args += [ "--sanitizer-blacklist=${invoker.msan_blacklist}" ]
        } else {
          assert(invoker.msan_blacklist != "", "")
        }
      }

      if (defined(invoker.extra_configure_flags)) {
        args += [ "--extra-configure-flags=${invoker.extra_configure_flags}" ]
      }
    }
  }

  instrumented_library("atk1.0") {
    extra_configure_flags = [
      "--disable-static",

      # See above.
      "--disable-introspection",
    ]
  }

  instrumented_library("brltty") {
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--without-viavoice",
      "--without-theta",
      "--without-swift",
      "--bindir=/sbin",
      "--with-curses=ncursesw",
      "--disable-stripping",

      # We don't need any of those.
      "--disable-java-bindings",
      "--disable-lisp-bindings",
      "--disable-ocaml-bindings",
      "--disable-python-bindings",
      "--disable-tcl-bindings",
    ]
  }

  instrumented_library("dee") {
    extra_configure_flags = [
      "--disable-static",

      # See above.
      "--disable-introspection",
    ]
    pre_build = "scripts/pre-build/autogen.sh"
  }

  instrumented_library("freetype") {
    pre_build = "scripts/pre-build/freetype.sh"
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("harfbuzz") {
    package_cflags = [ "-Wno-c++11-narrowing" ]
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--with-graphite2=yes",
      "--with-gobject",

      # See above.
      "--disable-introspection",
    ]
  }

  instrumented_library("libappindicator3-1") {
    extra_configure_flags = [
      "--disable-static",

      # See above.
      "--disable-introspection",

      "--with-gtk=3",
    ]
    pre_build = "scripts/pre-build/autogen.sh"
  }

  instrumented_library("libasound2") {
    extra_configure_flags = [ "--disable-static" ]
    pre_build = "scripts/pre-build/libasound2.sh"
  }

  instrumented_library("libatk-bridge2.0-0") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libatspi2.0-0") {
    extra_configure_flags = [
      "--disable-static",
      "--disable-introspection",
    ]
  }

  instrumented_library("libcairo2") {
    extra_configure_flags = [
      "--disable-gtk-doc",
      "--disable-static",
    ]
  }

  instrumented_library("libcap2") {
    extra_configure_flags = [ "--disable-static" ]
    build_method = "custom_libcap"
  }

  instrumented_library("libcredentialkit_pkcs11") {
    build_method = "stub"
  }

  instrumented_library("libcups2") {
    patch = "patches/libcups2.diff"
    extra_configure_flags = [
      "--disable-static",

      # All from debian/rules.
      "--localedir=/usr/share/cups/locale",
      "--enable-slp",
      "--enable-libpaper",
      "--enable-ssl",
      "--enable-gnutls",
      "--disable-openssl",
      "--enable-threads",
      "--enable-debug",
      "--enable-dbus",
      "--with-dbusdir=/etc/dbus-1",
      "--enable-gssapi",
      "--enable-avahi",
      "--with-pdftops=/usr/bin/gs",
      "--disable-launchd",
      "--with-cups-group=lp",
      "--with-system-groups=lpadmin",
      "--with-printcap=/var/run/cups/printcap",
      "--with-log-file-perm=0640",
      "--with-local_protocols=\"CUPS dnssd\"",
      "--with-remote_protocols=\"CUPS dnssd\"",
      "--enable-libusb",
    ]
    pre_build = "scripts/pre-build/libcups2.sh"
  }

  instrumented_library("libdbus-1-3") {
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--disable-libaudit",
      "--enable-apparmor",
      "--enable-systemd",
      "--libexecdir=/lib/dbus-1.0",
      "--with-systemdsystemunitdir=/lib/systemd/system",
      "--disable-tests",
      "--exec-prefix=/",

      # From dh_auto_configure.
      "--prefix=/usr",
      "--localstatedir=/var",
    ]
  }

  instrumented_library("libdbus-glib-1-2") {
    extra_configure_flags = [
      # Use system dbus-binding-tool. The just-built one is instrumented but
      # doesn't have the correct RPATH, and will crash.
      "--with-dbus-binding-tool=dbus-binding-tool",
      "--disable-static",
    ]
  }

  instrumented_library("libdbusmenu") {
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--disable-scrollkeeper",
      "--with-gtk=2",

      # See above.
      "--disable-introspection",
      "--disable-vala",
    ]
    pre_build = "scripts/pre-build/autogen.sh"
  }

  instrumented_library("libdbusmenu-glib4") {
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--disable-scrollkeeper",
      "--enable-gtk-doc",

      # --enable-introspection introduces a build step that attempts to run
      # a just-built binary and crashes. Vala requires introspection.
      # TODO(eugenis): find a better fix.
      "--disable-introspection",
      "--disable-vala",
    ]
    pre_build = "scripts/pre-build/autogen.sh"
  }

  instrumented_library("libexpat1") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libffi6") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libfontconfig1") {
    extra_configure_flags = [
      "--disable-docs",
      "--sysconfdir=/etc/",
      "--disable-static",

      # From debian/rules.
      "--with-add-fonts=/usr/X11R6/lib/X11/fonts,/usr/local/share/fonts",
    ]
    patch = "patches/libfontconfig.${instrumented_libraries_platform}.diff"
  }

  instrumented_library("libgcrypt11") {
    package_ldflags = [ "-Wl,-z,muldefs" ]
    extra_configure_flags = [
      # From debian/rules.
      "--enable-noexecstack",
      "--enable-ld-version-script",
      "--disable-static",

      # http://crbug.com/344505
      "--disable-asm",
    ]
  }

  instrumented_library("libgdk-pixbuf2.0-0") {
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--with-libjasper",
      "--with-x11",

      # Make the build less problematic.
      "--disable-introspection",

      # Do not use loadable modules. Same as with Pango, there's no easy way
      # to make gdk-pixbuf pick instrumented versions over system-installed
      # ones.
      "--disable-modules",
    ]
    pre_build = "scripts/pre-build/libgdk-pixbuf2.0-0.sh"
  }

  instrumented_library("libglib2.0-0") {
    extra_configure_flags = [
      "--disable-gtk-doc",
      "--disable-gtk-doc-html",
      "--disable-gtk-doc-pdf",
      "--disable-static",
    ]
    asan_blacklist = "blacklists/asan/libglib2.0-0.txt"
    msan_blacklist = "blacklists/msan/libglib2.0-0.txt"
    pre_build = "scripts/pre-build/autogen.sh"
  }

  instrumented_library("libgnome-keyring0") {
    extra_configure_flags = [
      "--disable-static",
      "--enable-tests=no",

      # Make the build less problematic.
      "--disable-introspection",
    ]
    package_ldflags = [ "-Wl,--as-needed" ]
  }

  instrumented_library("libgnutls26") {
    extra_configure_flags = [
      # from debian/rules.
      "--enable-ld-version-script",
      "--enable-cxx",
      "--without-lzo",
      "--disable-guile",
      "--with-libgcrypt",
      "--with-packager=Debian",
    ]
  }

  instrumented_library("libgpg-error0") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libgtk2.0-0") {
    package_cflags = [ "-Wno-return-type" ]
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--prefix=/usr",
      "--sysconfdir=/etc",
      "--enable-test-print-backend",
      "--enable-introspection=no",
      "--with-xinput=yes",
    ]
    patch = "patches/libgtk2.0-0.${instrumented_libraries_platform}.diff"
    pre_build = "scripts/pre-build/libgtk2.0-0.sh"
  }

  instrumented_library("libgtk-3-0") {
    package_cflags = [ "-Wno-return-type" ]
    extra_configure_flags = [
      "--disable-static",
      "--disable-introspection",

      # From debian/rules.
      "--enable-test-print-backend",
      "--enable-x11-backend",
    ]
    pre_build = "scripts/pre-build/libgtk-3-0.sh"
  }

  instrumented_library("libido3-0.1-0") {
    package_cflags = [ "-Wno-return-type" ]
    extra_configure_flags = [
      "--disable-static",

      # See above.
      "--disable-introspection",

      "--with-gtk=3",
    ]
    pre_build = "scripts/pre-build/autogen.sh"
  }

  instrumented_library("libindicator3-7") {
    extra_configure_flags = [
      "--disable-static",

      # See above.
      "--disable-introspection",
    ]
    pre_build = "scripts/pre-build/autogen.sh"
  }

  instrumented_library("libnspr4") {
    extra_configure_flags = [
      "--enable-64bit",
      "--disable-static",

      # TSan reports data races on debug variables.
      "--disable-debug",
    ]
    pre_build = "scripts/pre-build/libnspr4.sh"
  }

  instrumented_library("libp11-kit0") {
    extra_configure_flags = [ "--disable-static" ]

    # Required on Trusty due to autoconf version mismatch.
    pre_build = "scripts/pre-build/autoreconf.sh"
  }

  instrumented_library("libpci3") {
    extra_configure_flags = [ "--disable-static" ]
    build_method = "custom_libpci3"
  }

  instrumented_library("libpcre3") {
    extra_configure_flags = [
      "--enable-utf8",
      "--enable-unicode-properties",
      "--disable-static",
    ]
  }

  instrumented_library("libpixman-1-0") {
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--disable-gtk",
      "--disable-silent-rules",

      # Avoid a clang issue. http://crbug.com/449183
      "--disable-mmx",
    ]
    patch = "patches/libpixman-1-0.diff"
  }

  instrumented_library("libpng12-0") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libsecret") {
    extra_configure_flags = [
      "--disable-static",

      # See above.
      "--disable-introspection",
    ]
    pre_build = "scripts/pre-build/autoreconf.sh"
  }

  instrumented_library("libtasn1-3") {
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--enable-ld-version-script",
    ]
  }

  instrumented_library("libtasn1-6") {
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--enable-ld-version-script",
    ]
  }

  instrumented_library("libunity9") {
    extra_configure_flags = [ "--disable-static" ]
    pre_build = "scripts/pre-build/autogen.sh"
  }

  instrumented_library("libva1") {
    extra_configure_flags = [ "--disable-static" ]

    # Backport a use-after-free fix:
    # http://cgit.freedesktop.org/libva/diff/va/va.c?h=staging&id=d4988142a3f2256e38c5c5cdcdfc1b4f5f3c1ea9
    patch = "patches/libva1.diff"
    pre_build = "scripts/pre-build/libva1.sh"
  }

  instrumented_library("libx11-6") {
    extra_configure_flags = [
      "--disable-specs",
      "--disable-static",
    ]
    msan_blacklist = "blacklists/msan/libx11-6.txt"

    # Required on Trusty due to autoconf version mismatch.
    pre_build = "scripts/pre-build/autoreconf.sh"
  }

  instrumented_library("libxau6") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxcb1") {
    extra_configure_flags = [
      "--disable-build-docs",
      "--disable-static",
    ]
    pre_build = "scripts/pre-build/autoreconf.sh"
  }

  instrumented_library("libxcomposite1") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxcursor1") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxdamage1") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxdmcp6") {
    extra_configure_flags = [
      "--disable-docs",
      "--disable-static",
    ]
  }

  instrumented_library("libxext6") {
    extra_configure_flags = [
      "--disable-specs",
      "--disable-static",
    ]
  }

  instrumented_library("libxfixes3") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxi6") {
    extra_configure_flags = [
      "--disable-specs",
      "--disable-docs",
      "--disable-static",
    ]
  }

  instrumented_library("libxinerama1") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxrandr2") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxrender1") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxss1") {
    extra_configure_flags = [ "--disable-static" ]
  }

  instrumented_library("libxtst6") {
    extra_configure_flags = [
      "--disable-specs",
      "--disable-static",
    ]
  }

  instrumented_library("nss") {
    # TODO(eugenis): get rid of this dependency
    deps = [
      ":libnspr4",
    ]
    patch = "patches/nss.diff"
    build_method = "custom_nss"
  }

  instrumented_library("pango1.0") {
    extra_configure_flags = [
      "--disable-static",

      # Avoid https://bugs.gentoo.org/show_bug.cgi?id=425620
      "--enable-introspection=no",

      # Pango is normally used with dynamically loaded modules. However,
      # ensuring pango is able to find instrumented versions of those modules
      # is a huge pain in the neck. Let's link them statically instead, and
      # hope for the best.
      "--with-included-modules=yes",
    ]
  }

  instrumented_library("pulseaudio") {
    # New location of libpulsecommon.
    package_ldflags = [ "-Wl,-R,XORIGIN/pulseaudio/." ]
    extra_configure_flags = [
      "--disable-static",

      # From debian/rules.
      "--enable-x11",
      "--disable-hal-compat",

      # Disable some ARM-related code that fails compilation. No idea why
      # this even impacts x86-64 builds.
      "--disable-neon-opt",
    ]
    pre_build = "scripts/pre-build/pulseaudio.sh"
  }

  instrumented_library("udev") {
    extra_configure_flags = [
      "--disable-static",

      # Without this flag there's a linking step that doesn't honor LDFLAGS
      # and fails.
      # TODO(eugenis): find a better fix.
      "--disable-gudev",
    ]
    pre_build = "scripts/pre-build/udev.sh"
  }

  instrumented_library("zlib1g") {
    # --disable-static is not supported
    patch = "patches/zlib1g.diff"
  }
}
