import("//libcxx/config.gni")
import("//llvm/utils/gn/build/write_cmake_config.gni")

libcxx_generated_include_dir = "$root_build_dir/include/c++/v1"

# This is a bit weird. For now, we assume that __config_site is identical
# in all toolchains, and only copy it (and all other libcxx headers)
# to 'include' in the root build dir, so that it's the same for all toolchains.
# Maybe we want to make this per-toolchain eventually (and then use root_out_dir
# in libcxx_generated_include_dir) -- e.g. for cross-builds that for example
# use for-linux-configured libc++ for the host build but for-windows-configured
# libc++ for the target build.
if (current_toolchain == default_toolchain) {
  write_cmake_config("write_config_site") {
    input = "__config_site.in"
    output = "$libcxx_generated_include_dir/__config_site"

    values = [
      "_LIBCPP_ABI_FORCE_ITANIUM=",
      "_LIBCPP_ABI_FORCE_MICROSOFT=",
      "_LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT=",
      "_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY=",
      "_LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE=",
      "_LIBCPP_HAS_NO_STDIN=",
      "_LIBCPP_HAS_NO_STDOUT=",
      "_LIBCPP_HAS_NO_THREADS=",
      "_LIBCPP_HAS_NO_MONOTONIC_CLOCK=",
      "_LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS=",
      "_LIBCPP_HAS_MUSL_LIBC=",
      "_LIBCPP_HAS_THREAD_API_PTHREAD=",
      "_LIBCPP_HAS_THREAD_API_EXTERNAL=",
      "_LIBCPP_HAS_THREAD_API_WIN32=",
      "_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL=",
      "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=",
      "_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS=1",
      "_LIBCPP_NO_VCRUNTIME=",
      "_LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION=",
      "_LIBCPP_HAS_PARALLEL_ALGORITHMS=",
      "_LIBCPP_HAS_NO_RANDOM_DEVICE=",
      "_LIBCPP_HAS_NO_LOCALIZATION=",
      "_LIBCPP_ABI_DEFINES=",
    ]
    if (libcxx_abi_version != 1) {
      values += [ "_LIBCPP_ABI_VERSION=$libcxx_abi_version" ]
    } else {
      values += [ "_LIBCPP_ABI_VERSION=" ]
    }
    if (libcxx_abi_namespace != "") {
      values += [ "_LIBCPP_ABI_NAMESPACE=$libcxx_abi_namespace" ]
    } else {
      values += [ "_LIBCPP_ABI_NAMESPACE=" ]
    }
    if (libcxx_abi_unstable) {
      values += [ "_LIBCPP_ABI_UNSTABLE=1" ]
    } else {
      values += [ "_LIBCPP_ABI_UNSTABLE=" ]
    }
  }

  copy("copy_headers") {
    sources = [
      "__availability",
      "__bit_reference",
      "__bits",
      "__bsd_locale_defaults.h",
      "__bsd_locale_fallbacks.h",
      "__config",
      "__debug",
      "__errc",
      "__functional_03",
      "__functional_base",
      "__functional_base_03",
      "__hash_table",
      "__iterator/concepts.h",
      "__iterator/incrementable_traits.h",
      "__iterator/iter_move.h",
      "__iterator/iterator_traits.h",
      "__iterator/readable_traits.h",
      "__libcpp_version",
      "__locale",
      "__memory/addressof.h",
      "__memory/allocation_guard.h",
      "__memory/allocator.h",
      "__memory/allocator_traits.h",
      "__memory/auto_ptr.h",
      "__memory/compressed_pair.h",
      "__memory/construct_at.h",
      "__memory/pointer_safety.h",
      "__memory/pointer_traits.h",
      "__memory/raw_storage_iterator.h",
      "__memory/shared_ptr.h",
      "__memory/temporary_buffer.h",
      "__memory/uninitialized_algorithms.h",
      "__memory/unique_ptr.h",
      "__mutex_base",
      "__node_handle",
      "__nullptr",
      "__ranges/access.h",
      "__ranges/concepts.h",
      "__ranges/enable_borrowed_range.h",
      "__ranges/size.h",
      "__ranges/view.h",
      "__split_buffer",
      "__sso_allocator",
      "__std_stream",
      "__string",
      "__support/android/locale_bionic.h",
      "__support/fuchsia/xlocale.h",
      "__support/ibm/gettod_zos.h",
      "__support/ibm/limits.h",
      "__support/ibm/locale_mgmt_aix.h",
      "__support/ibm/locale_mgmt_zos.h",
      "__support/ibm/nanosleep.h",
      "__support/ibm/support.h",
      "__support/ibm/xlocale.h",
      "__support/musl/xlocale.h",
      "__support/newlib/xlocale.h",
      "__support/nuttx/xlocale.h",
      "__support/openbsd/xlocale.h",
      "__support/solaris/floatingpoint.h",
      "__support/solaris/wchar.h",
      "__support/solaris/xlocale.h",
      "__support/win32/limits_msvc_win32.h",
      "__support/win32/locale_win32.h",
      "__support/xlocale/__nop_locale_mgmt.h",
      "__support/xlocale/__posix_l_fallback.h",
      "__support/xlocale/__strtonum_fallback.h",
      "__threading_support",
      "__tree",
      "__tuple",
      "__undef_macros",
      "__utility/to_underlying.h",
      "algorithm",
      "any",
      "array",
      "atomic",
      "barrier",
      "bit",
      "bitset",
      "cassert",
      "ccomplex",
      "cctype",
      "cerrno",
      "cfenv",
      "cfloat",
      "charconv",
      "chrono",
      "cinttypes",
      "ciso646",
      "climits",
      "clocale",
      "cmath",
      "codecvt",
      "compare",
      "complex",
      "complex.h",
      "concepts",
      "condition_variable",
      "csetjmp",
      "csignal",
      "cstdarg",
      "cstdbool",
      "cstddef",
      "cstdint",
      "cstdio",
      "cstdlib",
      "cstring",
      "ctgmath",
      "ctime",
      "ctype.h",
      "cwchar",
      "cwctype",
      "deque",
      "errno.h",
      "exception",
      "execution",
      "experimental/__config",
      "experimental/__memory",
      "experimental/algorithm",
      "experimental/coroutine",
      "experimental/deque",
      "experimental/filesystem",
      "experimental/forward_list",
      "experimental/functional",
      "experimental/iterator",
      "experimental/list",
      "experimental/map",
      "experimental/memory_resource",
      "experimental/propagate_const",
      "experimental/regex",
      "experimental/set",
      "experimental/simd",
      "experimental/string",
      "experimental/type_traits",
      "experimental/unordered_map",
      "experimental/unordered_set",
      "experimental/utility",
      "experimental/vector",
      "ext/__hash",
      "ext/hash_map",
      "ext/hash_set",
      "fenv.h",
      "filesystem",
      "float.h",
      "format",
      "forward_list",
      "fstream",
      "functional",
      "future",
      "initializer_list",
      "inttypes.h",
      "iomanip",
      "ios",
      "iosfwd",
      "iostream",
      "istream",
      "iterator",
      "latch",
      "limits",
      "limits.h",
      "list",
      "locale",
      "locale.h",
      "map",
      "math.h",
      "memory",
      "module.modulemap",
      "mutex",
      "new",
      "numbers",
      "numeric",
      "optional",
      "ostream",
      "queue",
      "random",
      "ratio",
      "regex",
      "scoped_allocator",
      "semaphore",
      "set",
      "setjmp.h",
      "shared_mutex",
      "span",
      "sstream",
      "stack",
      "stdbool.h",
      "stddef.h",
      "stdexcept",
      "stdint.h",
      "stdio.h",
      "stdlib.h",
      "streambuf",
      "string",
      "string.h",
      "string_view",
      "strstream",
      "system_error",
      "tgmath.h",
      "thread",
      "tuple",
      "type_traits",
      "typeindex",
      "typeinfo",
      "unordered_map",
      "unordered_set",
      "utility",
      "valarray",
      "variant",
      "vector",
      "version",
      "wchar.h",
      "wctype.h",
    ]
    deps = [ ":write_config_site" ]
    if (target_os != "mac" && target_os != "win") {
      # libcxx/cmake/Modules/HandleLibCXXABI.cmake sets
      # LIBCXX_CXX_ABI_HEADER_TARGET if the libcxx abi library either of
      # "libstdc++", "libsupc++", "libcxxabi", "libcxxrt", but not if it's "none",
      # "default", or "vcruntime". So on Windows, these don't get copied due to
      # LIBCXX_CXX_ABI_HEADER_TARGET not being set.
      # On macOS, libcxx/CMakeLists.txt sets LIBCXX_CXX_ABI_SYSTEM to 1, which
      # causes an empty header list to be passed to setup_abi_lib, so these
      # don't get copied on macOS due to that.
      deps += [ "//libcxxabi/include" ]
    }
    outputs = [ "$root_build_dir/include/c++/v1/{{source_target_relative}}" ]
  }
}

config("include_config") {
  include_dirs = [ libcxx_generated_include_dir ]
}

group("include") {
  deps = [ ":copy_headers($default_toolchain)" ]
  public_configs = [ ":include_config" ]
}
