| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- # Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- # Exceptions. See /LICENSE for license information.
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- load("@rules_cc//cc:defs.bzl", "cc_library")
- load("//bazel:carbon_runtimes.bzl", "carbon_runtimes")
- load("//bazel:make_include_copts.bzl", "make_include_copts")
- load(
- "//bazel:runtimes_build_vars.bzl",
- "builtins_aarch64_srcs",
- "builtins_aarch64_textual_srcs",
- "builtins_copts",
- "builtins_i386_srcs",
- "builtins_i386_textual_srcs",
- "builtins_x86_64_srcs",
- "builtins_x86_64_textual_srcs",
- "crt_copts",
- "crtbegin_src",
- "crtend_src",
- "libc_internal_libcxx_hdrs",
- "libcxx_copts",
- "libcxx_hdrs",
- "libcxx_linux_srcs",
- "libcxx_macos_srcs",
- "libcxx_win32_srcs",
- "libcxxabi_hdrs",
- "libcxxabi_srcs",
- "libcxxabi_textual_srcs",
- "libunwind_copts",
- "libunwind_hdrs",
- "libunwind_srcs",
- "llvm_version_major",
- )
- package(default_visibility = ["//visibility:public"])
- # Clang looks in a target-triple subdirectory of its resource directory for the
- # builtins and CRT files. Triples capture a large range of settings and aren't
- # even consistent structurally between platforms, so we expect to have roughly
- # one setting per supported target triple. By convention, we name them after the
- # target triple.
- #
- # TODO: Add constraints and other settings so we can select the correct target
- # triple for different `libc`s.
- #
- # TODO: Add other OS and CPU triples.
- config_setting(
- name = "x86_64-unknown-linux-gnu",
- constraint_values = [
- "@platforms//os:linux",
- "@platforms//cpu:x86_64",
- ],
- )
- config_setting(
- name = "aarch64-unknown-linux-gnu",
- constraint_values = [
- "@platforms//os:linux",
- "@platforms//cpu:aarch64",
- ],
- )
- cc_library(
- name = "builtins_internal",
- hdrs_check = "strict",
- textual_hdrs = select({
- "@platforms//cpu:aarch64": builtins_aarch64_textual_srcs,
- "@platforms//cpu:i386": builtins_i386_textual_srcs,
- "@platforms//cpu:x86_64": builtins_x86_64_textual_srcs,
- "//conditions:default": [],
- }),
- )
- cc_library(
- name = "builtins",
- srcs = select({
- "@platforms//cpu:aarch64": builtins_aarch64_srcs,
- "@platforms//cpu:i386": builtins_i386_srcs,
- "@platforms//cpu:x86_64": builtins_x86_64_srcs,
- "//conditions:default": [],
- }),
- copts = builtins_copts + make_include_copts([
- "builtins",
- ]),
- hdrs_check = "strict",
- deps = [":builtins_internal"],
- )
- filegroup(
- name = "builtins_archive",
- srcs = [":builtins"],
- output_group = "archive",
- )
- filegroup(
- name = "libunwind_hdrs",
- srcs = libunwind_hdrs,
- )
- cc_library(
- name = "libunwind",
- srcs = libunwind_srcs,
- hdrs = [":libunwind_hdrs"],
- copts = libunwind_copts + [
- # We disable all warnings as upstream isn't clean with the common
- # warning flags Carbon uses by default.
- "-w",
- ],
- hdrs_check = "strict",
- includes = ["libunwind/include"],
- linkstatic = 1,
- )
- filegroup(
- name = "libunwind_archive",
- srcs = [":libunwind"],
- output_group = "archive",
- )
- cc_library(
- name = "libcxxabi_internal",
- hdrs_check = "strict",
- textual_hdrs = libcxxabi_textual_srcs,
- )
- cc_library(
- name = "libc_internal_libcxx",
- hdrs = libc_internal_libcxx_hdrs,
- hdrs_check = "strict",
- )
- filegroup(
- name = "libcxx_hdrs",
- srcs = [
- "libcxx/include/__assertion_handler",
- "libcxx/include/__config_site",
- ] + libcxx_hdrs + libcxxabi_hdrs,
- )
- cc_library(
- name = "libcxx",
- srcs = select({
- "@platforms//os:macos": libcxx_macos_srcs,
- "@platforms//os:windows": libcxx_win32_srcs,
- "//conditions:default": libcxx_linux_srcs,
- }) + libcxxabi_srcs,
- hdrs = [":libcxx_hdrs"],
- copts = libcxx_copts + make_include_copts([
- "libcxx/src",
- "libc/internal",
- ]) + [
- # We disable all warnings as upstream isn't clean with the common
- # warning flags Carbon uses by default.
- "-w",
- ],
- hdrs_check = "strict",
- includes = [
- "libcxx/include",
- "libcxxabi/include",
- ],
- linkstatic = 1,
- deps = [
- ":libc_internal_libcxx",
- ":libcxxabi_internal",
- ],
- )
- filegroup(
- name = "libcxx_archive",
- srcs = [":libcxx"],
- output_group = "archive",
- )
- carbon_runtimes(
- name = "carbon_runtimes",
- builtins_archive = ":builtins_archive",
- clang_hdrs = [
- "//llvm/lib/clang/{0}:clang_hdrs".format(llvm_version_major),
- ],
- crt_copts = crt_copts,
- crtbegin_src = select({
- "@platforms//os:linux": crtbegin_src,
- "//conditions:default": None,
- }),
- crtend_src = select({
- "@platforms//os:linux": crtend_src,
- "//conditions:default": None,
- }),
- libcxx_archive = ":libcxx_archive",
- libunwind_archive = ":libunwind_archive",
- target_triple = select({
- ":aarch64-unknown-linux-gnu": "aarch64-unknown-linux-gnu",
- ":x86_64-unknown-linux-gnu": "x86_64-unknown-linux-gnu",
- "//conditions:default": "",
- }),
- )
|