| load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES") |
| load( |
| "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", |
| "tool_path", |
| "feature", |
| "feature_set", |
| "flag_group", |
| "flag_set", |
| ) |
| |
| load( |
| "@crt//config:features.bzl", |
| "CPP_ALL_COMPILE_ACTIONS", |
| "C_ALL_COMPILE_ACTIONS", |
| "LD_ALL_ACTIONS", |
| ) |
| |
| |
| def _impl(ctx): |
| tool_paths = [ # NEW |
| tool_path( |
| name = "gcc", |
| path = "out/bin/riscv32-unknown-elf-g++", |
| ), |
| tool_path( |
| name = "ld", |
| path = "out/bin/riscv32-unknown-elf-ld", |
| ), |
| tool_path( |
| name = "ar", |
| path = "out/bin/riscv32-unknown-elf-gcc-ar", |
| ), |
| tool_path( |
| name = "cpp", |
| path = "out/bin/riscv32-unknown-elf-c++", |
| ), |
| tool_path( |
| name = "gcov", |
| path = "/bin/false", |
| ), |
| tool_path( |
| name = "nm", |
| path = "/bin/false", |
| ), |
| tool_path( |
| name = "objdump", |
| path = "/bin/false", |
| ), |
| tool_path( |
| name = "strip", |
| path = "/bin/false", |
| ), |
| ] |
| includes_feature = feature( |
| name = "includes", |
| enabled = True, |
| flag_sets = [ |
| flag_set( |
| actions = [ |
| ACTION_NAMES.assemble, |
| ACTION_NAMES.preprocess_assemble, |
| ACTION_NAMES.linkstamp_compile, |
| ACTION_NAMES.c_compile, |
| ACTION_NAMES.cpp_compile, |
| ACTION_NAMES.cpp_header_parsing, |
| ACTION_NAMES.cpp_module_compile, |
| ACTION_NAMES.cpp_module_codegen, |
| ACTION_NAMES.lto_backend, |
| ACTION_NAMES.clif_match |
| ], |
| flag_groups = [ |
| flag_group( |
| flags = [ |
| "-nostdinc", |
| "-u", "_printf_float", |
| "-lsemihosting", |
| "-isystem", "toolchain/out/riscv32-unknown-elf/include", |
| "-isystem", "toolchain/out/lib/gcc/riscv32-unknown-elf/15.0.1/include" |
| ], |
| ), |
| ], |
| ), |
| ], |
| |
| ) |
| |
| sys_feature = feature( |
| name = "sys_spec", |
| enabled = True, |
| flag_sets = [ |
| flag_set( |
| actions = CPP_ALL_COMPILE_ACTIONS, |
| flag_groups = [ |
| flag_group( |
| flags = [ |
| "-march=rv32im_zve32x_zicsr", |
| "-mabi=ilp32", |
| "-mcmodel=medany", |
| ], |
| ), |
| ], |
| ), |
| flag_set( |
| actions = LD_ALL_ACTIONS, |
| flag_groups = [ |
| flag_group( |
| flags = [ |
| "--specs=semihost.specs", |
| "-lsemihost", |
| "-lm", |
| "-lc", |
| "-lgcc", |
| ], |
| ), |
| ], |
| ), |
| ], |
| ) |
| |
| return cc_common.create_cc_toolchain_config_info( |
| ctx= ctx, |
| toolchain_identifier = "kelvin_rvv_rv32-toolchain", |
| host_system_name = "kelvin_v2", |
| target_system_name = "kelvin_rvv_rv32", |
| target_cpu = "kelvin_rvv_rv32", |
| target_libc = "newlib", |
| compiler = "clang", |
| abi_version = "ilp32 ", |
| abi_libc_version="ilp32", |
| features = [ |
| includes_feature, |
| sys_feature, |
| ], |
| tool_paths = tool_paths, |
| ) |
| |
| cc_kelvin_rvv_rv32_toolchain_config = rule( |
| implementation = _impl, |
| attrs = {}, |
| provides = [CcToolchainConfigInfo], |
| ) |
| |
| |