aboutsummaryrefslogtreecommitdiff
path: root/toolchains/i386_elf_gcc.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'toolchains/i386_elf_gcc.bzl')
-rw-r--r--toolchains/i386_elf_gcc.bzl123
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],
+)