# Copyright 2017 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/c++/c++.gni")

config("libunwind_config") {
  # ValueAsBitPattern in Unwind-EHABI.cpp is only used on Debug builds.
  cflags = [ "-Wno-unused-function" ]
}

source_set("libunwind") {
  visibility = [ "//buildtools/third_party/libc++abi" ]

  if (libcpp_is_static) {
    defines = [ "_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS" ]
  }
  include_dirs = [ "//buildtools/third_party/libunwind/trunk/include" ]
  sources = [
    # C++ sources
    "trunk/src/Unwind-EHABI.cpp",
    "trunk/src/libunwind.cpp",

    # C sources
    "trunk/src/Unwind-sjlj.c",
    "trunk/src/UnwindLevel1-gcc-ext.c",
    "trunk/src/UnwindLevel1.c",

    # ASM sources
    "trunk/src/UnwindRegistersRestore.S",
    "trunk/src/UnwindRegistersSave.S",
  ]
  configs -= [
    "//build/config/compiler:chromium_code",
    "//build/config/compiler:no_exceptions",
    "//build/config/compiler:no_rtti",
    "//build/config/coverage:default_coverage",
  ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//build/config/compiler:exceptions",
    "//build/config/compiler:rtti",
    "//buildtools/third_party/libc++:config",

    # Must be after no_chromium_code
    ":libunwind_config",
  ]
}
