1load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "use_cpp_toolchain") 2 3def _generated_pico_flash_region_impl(ctx): 4 flash_region_linker_fragment = ctx.actions.declare_file(ctx.label.name + "/ldinclude/pico_flash_region.ld") 5 link_include_dir = flash_region_linker_fragment.dirname 6 7 file_contents = "\n".join(( 8 "FLASH(rx) : ORIGIN = 0x10000000, LENGTH = " + str(ctx.attr.flash_region_size), 9 )) 10 ctx.actions.write(flash_region_linker_fragment, file_contents) 11 linking_inputs = cc_common.create_linker_input( 12 owner = ctx.label, 13 user_link_flags = depset( 14 direct = ["-L" + str(link_include_dir)], 15 ), 16 additional_inputs = depset( 17 direct = [flash_region_linker_fragment], 18 ), 19 ) 20 return [ 21 DefaultInfo(files = depset([flash_region_linker_fragment])), 22 CcInfo(linking_context = cc_common.create_linking_context(linker_inputs = depset(direct = [linking_inputs]))), 23 ] 24 25generated_pico_flash_region = rule( 26 implementation = _generated_pico_flash_region_impl, 27 attrs = { 28 "flash_region_size": attr.int(mandatory = True), 29 }, 30 toolchains = use_cpp_toolchain(), 31 fragments = ["cpp"], 32) 33