diff --git a/WORKSPACE b/WORKSPACE index 7202b1a5cb733a..b7a48f81998e6a 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -37,3 +37,9 @@ git_repository( # name = "TIM_VX", # path = "tensorflow/compiler/plugin/vsi/driver/TIM-VX", # ) + +new_local_repository( + name = 'toolchain-arm-imx865', + path = '/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots', + build_file = 'cross_compiler/toolchain-arm-imx865.BUILD' +) diff --git a/cross_compiler/BUILD b/cross_compiler/BUILD new file mode 100644 index 00000000000000..c9850ea51652a9 --- /dev/null +++ b/cross_compiler/BUILD @@ -0,0 +1,109 @@ +package(default_visibility = ["//visibility:public"]) + +# The following line is only here to make this project import into IDEs that embed +# a Bazel toolchain. +licenses(["notice"]) + +load(":cc_config.bzl", "cc_toolchain_config") + +cc_toolchain_suite( + name = "toolchain", + toolchains = { + "armeabi|compiler": ":cc-compiler-armeabi", + "local|compiler": ":cc-compiler-local", + "armeabi": ":cc-compiler-armeabi", + "aarch64": ":cc-compiler-aarch64", + "k8": ":cc-compiler-local", + "piii": ":cc-compiler-local", + "arm": ":cc-compiler-local", + "s390x": ":cc-compiler-local", + }, +) + +filegroup( + name = "empty", + srcs = [], +) + +filegroup( + name = "arm_linux_all_files", + srcs = [ + "@arm_compiler//:compiler_pieces", + ], +) + +filegroup( + name = "aarch64_linux_all_files", + srcs = [ + "@toolchain-arm-imx865//:compiler_pieces", + # "@aarch64_compiler//:compiler_pieces", + ], +) + +# filegroup( +# name = "aarch64_compiler_pieces", +# srcs = glob([ +# "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/lib/**", +# ]), +# ) + +# filegroup( +# name = "aarch64_linux_all_files", +# srcs = [ +# ":aarch64_compiler_pieces", +# ], +# ) + +cc_toolchain_config( + name = "local_config", + cpu = "local", +) + +cc_toolchain( + name = "cc-compiler-local", + all_files = ":empty", + compiler_files = ":empty", + dwp_files = ":empty", + linker_files = ":empty", + objcopy_files = ":empty", + strip_files = ":empty", + supports_param_files = 1, + toolchain_config = ":local_config", + toolchain_identifier = "local_linux", +) + +cc_toolchain_config( + name = "armeabi_config", + cpu = "armeabi", +) + +cc_toolchain( + name = "cc-compiler-armeabi", + all_files = ":arm_linux_all_files", + compiler_files = ":arm_linux_all_files", + dwp_files = ":empty", + linker_files = ":arm_linux_all_files", + objcopy_files = "arm_linux_all_files", + strip_files = "arm_linux_all_files", + supports_param_files = 1, + toolchain_config = ":armeabi_config", + toolchain_identifier = "arm-linux-gnueabihf", +) + +cc_toolchain_config( + name = "aarch64_config", + cpu = "aarch64", +) + +cc_toolchain( + name = "cc-compiler-aarch64", + all_files = ":aarch64_linux_all_files", + compiler_files = ":aarch64_linux_all_files", + dwp_files = ":empty", + linker_files = ":aarch64_linux_all_files", + objcopy_files = ":aarch64_linux_all_files", + strip_files = ":aarch64_linux_all_files", + supports_param_files = 1, + toolchain_config = ":aarch64_config", + toolchain_identifier = "aarch64-linux-gnu", +) diff --git a/cross_compiler/cc_config.bzl b/cross_compiler/cc_config.bzl new file mode 100644 index 00000000000000..f5c6b15d46188a --- /dev/null +++ b/cross_compiler/cc_config.bzl @@ -0,0 +1,858 @@ +load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", + "action_config", + "artifact_name_pattern", + "env_entry", + "env_set", + "feature", + "feature_set", + "flag_group", + "flag_set", + "make_variable", + "tool", + "tool_path", + "variable_with_value", + "with_feature_set", +) +load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES") + +def _impl(ctx): + if (ctx.attr.cpu == "armeabi"): + toolchain_identifier = "arm-linux-gnueabihf" + elif (ctx.attr.cpu == "aarch64"): + toolchain_identifier = "aarch64-linux-gnu" + elif (ctx.attr.cpu == "local"): + toolchain_identifier = "local_linux" + else: + fail("Unreachable") + + if (ctx.attr.cpu == "armeabi"): + host_system_name = "armeabi" + elif (ctx.attr.cpu == "aarch64"): + host_system_name = "aarch64" + elif (ctx.attr.cpu == "local"): + host_system_name = "local" + else: + fail("Unreachable") + + if (ctx.attr.cpu == "armeabi"): + target_system_name = "armeabi" + elif (ctx.attr.cpu == "aarch64"): + target_system_name = "aarch64" + elif (ctx.attr.cpu == "local"): + target_system_name = "local" + else: + fail("Unreachable") + + if (ctx.attr.cpu == "armeabi"): + target_cpu = "armeabi" + elif (ctx.attr.cpu == "aarch64"): + target_cpu = "aarch64" + elif (ctx.attr.cpu == "local"): + target_cpu = "local" + else: + fail("Unreachable") + + if (ctx.attr.cpu == "armeabi"): + target_libc = "armeabi" + elif (ctx.attr.cpu == "aarch64"): + target_libc = "aarch64" + elif (ctx.attr.cpu == "local"): + target_libc = "local" + else: + fail("Unreachable") + + compiler = "compiler" + + if (ctx.attr.cpu == "armeabi"): + abi_version = "armeabi" + elif (ctx.attr.cpu == "aarch64"): + abi_version = "aarch64" + elif (ctx.attr.cpu == "local"): + abi_version = "local" + else: + fail("Unreachable") + + if (ctx.attr.cpu == "armeabi"): + abi_libc_version = "armeabi" + elif (ctx.attr.cpu == "aarch64"): + abi_libc_version = "aarch64" + elif (ctx.attr.cpu == "local"): + abi_libc_version = "local" + else: + fail("Unreachable") + + cc_target_os = None + + builtin_sysroot = None + + all_compile_actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ACTION_NAMES.lto_backend, + ] + + all_cpp_compile_actions = [ + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ] + + preprocessor_compile_actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.clif_match, + ] + + codegen_compile_actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.lto_backend, + ] + + all_link_actions = [ + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ] + + objcopy_embed_data_action = action_config( + action_name = "objcopy_embed_data", + enabled = True, + tools = [tool(path = "/usr/bin/objcopy")], + ) + + if (ctx.attr.cpu == "armeabi"): + action_configs = [] + elif (ctx.attr.cpu == "aarch64"): + action_configs = [] + elif (ctx.attr.cpu == "local"): + action_configs = [objcopy_embed_data_action] + else: + fail("Unreachable") + + opt_feature = feature(name = "opt") + + dbg_feature = feature(name = "dbg") + + sysroot_feature = feature( + name = "sysroot", + enabled = True, + flag_sets = [ + flag_set( + actions = [ + 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, + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ], + flag_groups = [ + flag_group( + flags = ["--sysroot=%{sysroot}"], + expand_if_available = "sysroot", + ), + ], + ), + ], + ) + + if (ctx.attr.cpu == "armeabi" or ctx.attr.cpu == "aarch64"): + unfiltered_compile_flags_feature = feature( + name = "unfiltered_compile_flags", + 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 = [ + "-Wno-builtin-macro-redefined", + "-D__DATE__=\"redacted\"", + "-D__TIMESTAMP__=\"redacted\"", + "-D__TIME__=\"redacted\"", + "-no-canonical-prefixes", + "-fno-canonical-system-headers", + ], + ), + ], + ), + ], + ) + elif (ctx.attr.cpu == "local"): + unfiltered_compile_flags_feature = feature( + name = "unfiltered_compile_flags", + 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 = [ + "-no-canonical-prefixes", + "-fno-canonical-system-headers", + "-Wno-builtin-macro-redefined", + "-D__DATE__=\"redacted\"", + "-D__TIMESTAMP__=\"redacted\"", + "-D__TIME__=\"redacted\"", + ], + ), + ], + ), + ], + ) + else: + unfiltered_compile_flags_feature = None + + objcopy_embed_flags_feature = feature( + name = "objcopy_embed_flags", + enabled = True, + flag_sets = [ + flag_set( + actions = ["objcopy_embed_data"], + flag_groups = [flag_group(flags = ["-I", "binary"])], + ), + ], + ) + + if (ctx.attr.cpu == "armeabi"): + default_compile_flags_feature = feature( + name = "default_compile_flags", + 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 = [ + "-U_FORTIFY_SOURCE", + "-D_FORTIFY_SOURCE=1", + "-fstack-protector", + # "-DRASPBERRY_PI", + ], + ), + ], + ), + 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 = ["-g"])], + with_features = [with_feature_set(features = ["dbg"])], + ), + 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 = [ + "-g0", + "-O2", + "-DNDEBUG", + "-ffunction-sections", + "-fdata-sections", + ], + ), + ], + with_features = [with_feature_set(features = ["opt"])], + ), + flag_set( + actions = [ + ACTION_NAMES.linkstamp_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 = [ + "-std=c++11", + # "-isystem", + # "%{ARM_COMPILER_PATH}%/lib/gcc/arm-rpi-linux-gnueabihf/6.5.0/include", + # "-isystem", + # "%{ARM_COMPILER_PATH}%/lib/gcc/arm-rpi-linux-gnueabihf/6.5.0/include-fixed", + # "-isystem", + # "%{ARM_COMPILER_PATH}%/arm-rpi-linux-gnueabihf/include/c++/6.5.0/", + # "-isystem", + # "%{ARM_COMPILER_PATH}%/arm-rpi-linux-gnueabihf/sysroot/usr/include/", + # "-isystem", + # "%{PYTHON_INCLUDE_PATH}%", + "-isystem", + "/usr/include/", + ], + ), + ], + ), + ], + ) + elif (ctx.attr.cpu == "aarch64"): + default_compile_flags_feature = feature( + name = "default_compile_flags", + 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 = [ + "-U_FORTIFY_SOURCE", + "-D_FORTIFY_SOURCE=1", + "-fstack-protector", + # "-DRASPBERRY_PI", + ], + ), + ], + ), + 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 = ["-g"])], + with_features = [with_feature_set(features = ["dbg"])], + ), + 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 = [ + "-g0", + "-O2", + "-DNDEBUG", + "-ffunction-sections", + "-fdata-sections", + # "-mabi=lp64", + # "-mfloat128", + "-isystem", + # "%{AARCH64_COMPILER_PATH}%/lib/gcc/aarch64-none-linux-gnu/9.2.1/include", + "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/include/c++/10.2.0/", + "-isystem", + # "%{AARCH64_COMPILER_PATH}%/aarch64-none-linux-gnu/include/c++/9.2.1/", + "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/include/", + "-isystem", + # "%{AARCH64_COMPILER_PATH}%/lib/gcc/aarch64-none-linux-gnu/9.2.1/include-fixed", + "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/include/c++/10.2.0/aarch64-poky-linux/", + # "-isystem", + # "%{AARCH64_COMPILER_PATH}%/aarch64-none-linux-gnu/libc/usr/include/", + # "-isystem", + # "%{PYTHON_INCLUDE_PATH}%", + # "-isystem", + # "/usr/include/", + ], + ), + ], + with_features = [with_feature_set(features = ["opt"])], + ), + flag_set( + actions = [ + ACTION_NAMES.linkstamp_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 = [ + "-std=c++11", + ], + ), + ], + ), + ], + ) + elif (ctx.attr.cpu == "local"): + default_compile_flags_feature = feature( + name = "default_compile_flags", + 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 = [ + "-U_FORTIFY_SOURCE", + "-D_FORTIFY_SOURCE=1", + "-fstack-protector", + "-Wall", + "-Wunused-but-set-parameter", + "-Wno-free-nonheap-object", + "-fno-omit-frame-pointer", + ], + ), + ], + ), + 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 = ["-g"])], + with_features = [with_feature_set(features = ["dbg"])], + ), + 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 = [ + "-g0", + "-O2", + "-DNDEBUG", + "-ffunction-sections", + "-fdata-sections", + ], + ), + ], + with_features = [with_feature_set(features = ["opt"])], + ), + flag_set( + actions = [ + ACTION_NAMES.linkstamp_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 = ["-std=c++0x"])], + ), + ], + ) + else: + default_compile_flags_feature = None + + if (ctx.attr.cpu == "local"): + default_link_flags_feature = feature( + name = "default_link_flags", + enabled = True, + flag_sets = [ + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = [ + "-lstdc++", + "-B/usr/bin/", + "-Wl,-z,relro,-z,now", + "-no-canonical-prefixes", + "-pass-exit-codes", + "-Wl,--build-id=md5", + "-Wl,--hash-style=gnu", + ], + ), + ], + ), + flag_set( + actions = all_link_actions, + flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])], + with_features = [with_feature_set(features = ["opt"])], + ), + ], + ) + elif (ctx.attr.cpu == "armeabi" or ctx.attr.cpu == "aarch64"): + default_link_flags_feature = feature( + name = "default_link_flags", + enabled = True, + flag_sets = [ + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = [ + "-L/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/lib", + "-L/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/lib/aarch64-poky-linux/10.2.0", + "-lstdc++", + "-Wl,-z,relro,-z,now", + "-no-canonical-prefixes", + "-pass-exit-codes", + "-Wl,--build-id=md5", + "-Wl,--hash-style=gnu", + ], + ), + ], + ), + flag_set( + actions = all_link_actions, + flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])], + with_features = [with_feature_set(features = ["opt"])], + ), + ], + ) + else: + default_link_flags_feature = None + + supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True) + + supports_pic_feature = feature(name = "supports_pic", enabled = True) + + user_compile_flags_feature = feature( + name = "user_compile_flags", + 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 = ["%{user_compile_flags}"], + iterate_over = "user_compile_flags", + expand_if_available = "user_compile_flags", + ), + ], + ), + ], + ) + + if (ctx.attr.cpu == "local"): + features = [ + default_compile_flags_feature, + default_link_flags_feature, + supports_dynamic_linker_feature, + supports_pic_feature, + objcopy_embed_flags_feature, + opt_feature, + dbg_feature, + user_compile_flags_feature, + sysroot_feature, + unfiltered_compile_flags_feature, + ] + elif (ctx.attr.cpu == "armeabi" or ctx.attr.cpu == "aarch64"): + features = [ + default_compile_flags_feature, + default_link_flags_feature, + supports_dynamic_linker_feature, + supports_pic_feature, + opt_feature, + dbg_feature, + user_compile_flags_feature, + sysroot_feature, + unfiltered_compile_flags_feature, + ] + else: + fail("Unreachable") + + if (ctx.attr.cpu == "armeabi"): + cxx_builtin_include_directories = [ + # "%{ARM_COMPILER_PATH}%/lib/gcc/arm-rpi-linux-gnueabihf/6.5.0/include", + # "%{ARM_COMPILER_PATH}%/lib/gcc/arm-rpi-linux-gnueabihf/6.5.0/include-fixed", + # "%{ARM_COMPILER_PATH}%/arm-rpi-linux-gnueabihf/sysroot/usr/include/", + # "%{ARM_COMPILER_PATH}%/arm-rpi-linux-gnueabihf/include/c++/6.5.0/", + "/usr/include", + "/tmp/openblas_install/include/", + ] + elif (ctx.attr.cpu == "aarch64"): + cxx_builtin_include_directories = [ + # "%{AARCH64_COMPILER_PATH}%/aarch64-none-linux-gnu/include/c++/9.2.1/", + # "%{AARCH64_COMPILER_PATH}%/lib/gcc/aarch64-none-linux-gnu/9.2.1/include", + # "%{AARCH64_COMPILER_PATH}%/lib/gcc/aarch64-none-linux-gnu/9.2.1/include-fixed", + # "%{AARCH64_COMPILER_PATH}%/aarch64-none-linux-gnu/libc/usr/include/", + "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/include/c++/10.2.0/", + "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/include/", + "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/lib/aarch64-poky-linux/gcc/aarch64-poky-linux/10.2.0/include", + "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/lib/aarch64-poky-linux/gcc/aarch64-poky-linux/10.2.0/include-fixed", + "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux/usr/include/c++/10.2.0/aarch64-poky-linux/", + # "/usr/include", + "/tmp/openblas_install/include/", + ] + elif (ctx.attr.cpu == "local"): + cxx_builtin_include_directories = ["/usr/lib/gcc/", "/usr/local/include", "/usr/include"] + else: + fail("Unreachable") + + artifact_name_patterns = [] + + make_variables = [] + + if (ctx.attr.cpu == "armeabi"): + tool_paths = [ + tool_path( + name = "ar", + path = "/bin/arm-rpi-linux-gnueabihf-ar", + ), + tool_path(name = "compat-ld", path = "/bin/false"), + tool_path( + name = "cpp", + path = "/bin/arm-rpi-linux-gnueabihf-cpp", + ), + tool_path( + name = "dwp", + path = "/bin/arm-rpi-linux-gnueabihf-dwp", + ), + tool_path( + name = "gcc", + path = "/bin/arm-rpi-linux-gnueabihf-gcc", + ), + tool_path( + name = "gcov", + path = "/bin/arm-rpi-linux-gnueabihf-gcov", + ), + tool_path( + name = "ld", + path = "/bin/arm-rpi-linux-gnueabihf-ld", + ), + tool_path( + name = "nm", + path = "/bin/arm-rpi-linux-gnueabihf-nm", + ), + tool_path( + name = "objcopy", + path = "/bin/arm-rpi-linux-gnueabihf-objcopy", + ), + tool_path( + name = "objdump", + path = "/bin/arm-rpi-linux-gnueabihf-objdump", + ), + tool_path( + name = "strip", + path = "/bin/arm-rpi-linux-gnueabihf-strip", + ), + ] + elif (ctx.attr.cpu == "aarch64"): + tool_paths = [ + tool_path( + name = "ar", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ar", + ), + tool_path(name = "compat-ld", path = "/bin/false"), + tool_path( + name = "cpp", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-cpp", + ), + tool_path( + name = "dwp", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-dwp", + ), + tool_path( + name = "gcc", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc", + ), + tool_path( + name = "gcov", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcov", + ), + tool_path( + name = "ld", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld", + ), + tool_path( + name = "nm", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-nm", + ), + tool_path( + name = "objcopy", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-objcopy", + ), + tool_path( + name = "objdump", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-objdump", + ), + tool_path( + name = "strip", + path = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-strip", + ), + ] + builtin_sysroot = "/lhome/tangjing/toolchain/fsl-imx-5.10-rc4/sysroots/cortexa53-crypto-poky-linux" + elif (ctx.attr.cpu == "local"): + tool_paths = [ + tool_path(name = "ar", path = "/usr/bin/ar"), + tool_path(name = "compat-ld", path = "/usr/bin/ld"), + tool_path(name = "cpp", path = "/usr/bin/cpp"), + tool_path(name = "dwp", path = "/usr/bin/dwp"), + tool_path(name = "gcc", path = "/usr/bin/gcc"), + tool_path(name = "gcov", path = "/usr/bin/gcov"), + tool_path(name = "ld", path = "/usr/bin/ld"), + tool_path(name = "nm", path = "/usr/bin/nm"), + tool_path(name = "objcopy", path = "/usr/bin/objcopy"), + tool_path(name = "objdump", path = "/usr/bin/objdump"), + tool_path(name = "strip", path = "/usr/bin/strip"), + ] + else: + fail("Unreachable") + + + out = ctx.actions.declare_file(ctx.label.name) + ctx.actions.write(out, "Fake executable") + return [ + cc_common.create_cc_toolchain_config_info( + ctx = ctx, + features = features, + action_configs = action_configs, + artifact_name_patterns = artifact_name_patterns, + cxx_builtin_include_directories = cxx_builtin_include_directories, + toolchain_identifier = toolchain_identifier, + host_system_name = host_system_name, + target_system_name = target_system_name, + target_cpu = target_cpu, + target_libc = target_libc, + compiler = compiler, + abi_version = abi_version, + abi_libc_version = abi_libc_version, + tool_paths = tool_paths, + make_variables = make_variables, + builtin_sysroot = builtin_sysroot, + cc_target_os = cc_target_os + ), + DefaultInfo( + executable = out, + ), + ] +cc_toolchain_config = rule( + implementation = _impl, + attrs = { + "cpu": attr.string(mandatory=True, values=["armeabi", "aarch64", "local"]), + }, + provides = [CcToolchainConfigInfo], + executable = True, +) diff --git a/cross_compiler/toolchain-arm-imx865.BUILD b/cross_compiler/toolchain-arm-imx865.BUILD new file mode 100644 index 00000000000000..eb0b9b1971db17 --- /dev/null +++ b/cross_compiler/toolchain-arm-imx865.BUILD @@ -0,0 +1,79 @@ +package(default_visibility = ['//visibility:public']) + +filegroup( + name = 'gcc', + srcs = [ + 'x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc', + ], +) + +filegroup( + name = 'ar', + srcs = [ + 'x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ar', + ], +) + +filegroup( + name = 'ld', + srcs = [ + 'x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld', + ], +) + +filegroup( + name = 'nm', + srcs = [ + 'x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-nm', + ], +) + +filegroup( + name = 'objcopy', + srcs = [ + 'x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-objcopy', + ], +) + +filegroup( + name = 'objdump', + srcs = [ + 'x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-objdump', + ], +) + +filegroup( + name = 'strip', + srcs = [ + 'x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-strip', + ], +) + +filegroup( + name = 'as', + srcs = [ + 'x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-as', + ], +) + +filegroup( + name = 'compiler_pieces', + srcs = glob([ + 'cortexa53-crypto-poky-linux/usr/lib/**', + "cortexa53-crypto-poky-linux/usr/lib/aarch64-poky-linux/10.2.0/**", + ]), +) + +filegroup( + name = 'compiler_components', + srcs = [ + ':gcc', + ':ar', + ':ld', + ':nm', + ':objcopy', + ':objdump', + ':strip', + ':as', + ], +) diff --git a/tensorflow/compiler/plugin/vsi/driver/0001-patch-for-TF-XLA.patch b/tensorflow/compiler/plugin/vsi/driver/0001-patch-for-TF-XLA.patch index 30c49e3986b854..327fa53113ba40 100644 --- a/tensorflow/compiler/plugin/vsi/driver/0001-patch-for-TF-XLA.patch +++ b/tensorflow/compiler/plugin/vsi/driver/0001-patch-for-TF-XLA.patch @@ -1,12 +1,81 @@ -From 5d3f05b4aadf3706447ebd53509c3902e62c3579 Mon Sep 17 00:00:00 2001 -From: Jing Tang -Date: Tue, 22 Feb 2022 14:17:00 +0800 +From 37eb86010d0e023ef874ca415d9aaea53d806e4d Mon Sep 17 00:00:00 2001 +From: Tang +Date: Wed, 16 Mar 2022 14:27:49 +0800 Subject: [PATCH] patch for TF XLA --- - src/tim/vx/tensor.cc | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) + prebuilt-sdk/BUILD | 35 +------------------ + .../vx/internal/src/ops/vsi_nn_op_conv2d.c | 8 ++--- + src/tim/vx/tensor.cc | 15 ++++---- + 3 files changed, 14 insertions(+), 44 deletions(-) +diff --git a/prebuilt-sdk/BUILD b/prebuilt-sdk/BUILD +index 6b70ced..afd0974 100644 +--- a/prebuilt-sdk/BUILD ++++ b/prebuilt-sdk/BUILD +@@ -1,42 +1,9 @@ + package(default_visibility = ["//visibility:public"]) + +-config_setting( +- name = "x86_64_linux", +- values = {"define": "target_device=x86_64_linux"}, +-) +- +-config_setting( +- name = "aarch64_A311D", +- values = {"define": "target_device=aarch64_A311D"}, +-) +- +-config_setting( +- name = "aarch64_S905D3", +- values = {"define": "target_device=aarch64_S905D3"}, +-) +- +-config_setting( +- name = "external_viv_sdk", +- values = {"define": "use_external_viv_sdk=true"}, +-) +- + cc_library( + name = "VIV_SDK_LIB", + deps = select({ +- "external_viv_sdk": ["@external_viv_sdk//:VIV_SDK_LIB"], +- "aarch64_A311D": ["@aarch64_A311D//:VIV_SDK_LIB"], +- "aarch64_S905D3": ["@aarch64_S905D3//:VIV_SDK_LIB"], ++ "@bazel_tools//src/conditions:linux_aarch64": ["//prebuilt-sdk/aarch64:VIV_SDK_LIB"], + "//conditions:default": ["//prebuilt-sdk/x86_64_linux:VIV_SDK_LIB"], + }), + ) +-config_setting( +- name = "VIPLite_aarch64_A311D", +- values = {"define": "target_device=VIPLite_aarch64_A311D"}, +-) +- +-cc_library( +- name = "VIP_LITE_LIB", +- deps = select({ +- "VIPLite_aarch64_A311D": ["@VIPLite_aarch64_A311D//:VIP_LITE_LIB"], +- }), +-) +diff --git a/src/tim/vx/internal/src/ops/vsi_nn_op_conv2d.c b/src/tim/vx/internal/src/ops/vsi_nn_op_conv2d.c +index 8c216ea..215423a 100644 +--- a/src/tim/vx/internal/src/ops/vsi_nn_op_conv2d.c ++++ b/src/tim/vx/internal/src/ops/vsi_nn_op_conv2d.c +@@ -305,10 +305,10 @@ static vsi_bool op_check + } + + /* check parameters */ +- if(inputs[1]->attr.size[0] * inputs[1]->attr.size[1] > 6400) { +- VSILOGE("Kernel size should <= 6400."); +- return FALSE; +- } ++ // if(inputs[1]->attr.size[0] * inputs[1]->attr.size[1] > 6400) { ++ // VSILOGE("Kernel size should <= 6400."); ++ // return FALSE; ++ // } + } + + return ret; diff --git a/src/tim/vx/tensor.cc b/src/tim/vx/tensor.cc index 5979b43..492f80d 100644 --- a/src/tim/vx/tensor.cc