# Copyright 2023 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

config("cxxabi_dependents_config") {
  defines = [ "LIBCXXABI_USE_LLVM_UNWINDER" ]
}

config("cxxabi_config") {
  cflags = [ "-nostdinc" ]

  cflags_cc = [
    "-std=c++20",
    "-nostdinc++",
    "-fPIC",
    "-frtti",
    "-Werror=return-type",
    "-fvisibility-inlines-hidden",
    "-fms-compatibility-version=19.00",
    "-funwind-tables",
    "-Wall",
    "-Wextra",
    "-Wwrite-strings",
    "-Wshorten-64-to-32",
    "-Wno-error",
    "-Wno-unused-command-line-argument",
  ]

  defines = [
    # This macro is used to re-enable the `set_unexpected`, `get_unexpected`, and
    # `unexpected` functions, which were removed in C++17.
    "_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS",

    "_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION",

    "_LIBCPP_HAS_MUSL_LIBC",
    "_LIBCPP_HAS_THREAD_API_EXTERNAL",

    # Let the library headers know they are currently being used to build the
    # library.
    "_LIBCXXABI_BUILDING_LIBRARY",
    "_LIBCPP_BUILDING_LIBRARY",
  ]

  include_dirs = [
    "include",
    "//third_party/llvm-project/libcxx/src",
  ]
}

static_library("cxxabi") {
  sources = [
    "src/abort_message.cpp",
    "src/cxa_aux_runtime.cpp",
    "src/cxa_default_handlers.cpp",
    "src/cxa_demangle.cpp",

    # Requires exception support
    #"src/cxa_exception.cpp",

    "src/cxa_exception_storage.cpp",
    "src/cxa_guard.cpp",
    "src/cxa_handlers.cpp",
    "src/cxa_noexception.cpp",

    # Requires exception support
    #"src/cxa_personality.cpp",

    "src/cxa_vector.cpp",
    "src/cxa_virtual.cpp",
    "src/fallback_malloc.cpp",
    "src/private_typeinfo.cpp",
    "src/stdlib_exception.cpp",
    "src/stdlib_new_delete.cpp",
    "src/stdlib_stdexcept.cpp",
    "src/stdlib_typeinfo.cpp",

    # src/cxa_thread_atexit.cpp is unneeded. It introduces
    # "__cxa_thread_atexit_impl" as an API leak.
  ]

  configs += [ ":cxxabi_config" ]
  configs -= [ "//starboard/build/config:default_cpp_standard" ]

  all_dependent_configs = [ ":cxxabi_dependents_config" ]

  deps = [ "//third_party/musl:c" ]
}
