diff options
Diffstat (limited to 'toolchains/i386_elf_gcc.bzl')
-rw-r--r-- | toolchains/i386_elf_gcc.bzl | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/toolchains/i386_elf_gcc.bzl b/toolchains/i386_elf_gcc.bzl new file mode 100644 index 0000000..ad933d2 --- /dev/null +++ b/toolchains/i386_elf_gcc.bzl @@ -0,0 +1,123 @@ +load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES") +load( + "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", + "feature", + "flag_group", + "flag_set", + "tool_path", +) + +all_link_actions = [ + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, +] + +all_compile_actions = [ + ACTION_NAMES.assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.clif_match, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.lto_backend, + ACTION_NAMES.preprocess_assemble, +] + +def _impl(ctx): + tool_paths = [ + tool_path( + name = "gcc", + path = "/usr/bin/i686-elf-gcc", + ), + tool_path( + name = "ld", + path = "/usr/bin/i686-elf-ld", + ), + tool_path( + name = "ar", + path = "/usr/bin/i686-elf-ar", + ), + tool_path( + name = "cpp", + path = "/usr/bin/i686-elf-cpp", + ), + tool_path( + name = "gcov", + path = "/bin/false", + ), + tool_path( + name = "nm", + path = "/usr/bin/i686-elf-nm", + ), + tool_path( + name = "objdump", + path = "/usr/bin/i686-elf-objdump", + ), + tool_path( + name = "strip", + path = "/usr/bin/i686-elf-strip", + ), + ] + + features = [ + feature( + name = "default_compiler_flags", + enabled = True, + flag_sets = [ + flag_set( + actions = all_compile_actions, + flag_groups = [ + flag_group( + flags = [ + "-fanalyzer", + "-ffreestanding", + "-mgeneral-regs-only", + ], + ), + ], + ), + ], + ), + feature( + name = "default_linker_flags", + enabled = True, + flag_sets = [ + flag_set( + actions = all_link_actions, + flag_groups = ([ + flag_group( + flags = [ + "-nostdlib", + ], + ), + ]), + ), + ], + ), + ] + + return cc_common.create_cc_toolchain_config_info( + ctx = ctx, + features = features, + cxx_builtin_include_directories = [ + "/usr/lib/gcc/i686-elf", + ], + toolchain_identifier = "local", + host_system_name = "local", + target_system_name = "local", + target_cpu = "i686", + target_libc = "unknown", + compiler = "gcc", + abi_version = "unknown", + abi_libc_version = "unknown", + tool_paths = tool_paths, + ) + +cc_toolchain_config = rule( + implementation = _impl, + attrs = {}, + provides = [CcToolchainConfigInfo], +) |