| # Copyright lowRISC contributors. |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| package(default_visibility = ["//visibility:private"]) |
| |
| load("@rules_foreign_cc//foreign_cc:configure.bzl", "configure_make") |
| |
| # Extract the `openocd` binary from :build_openocd. Although the binary itself |
| # is executable, Bazel does not believe it is runnable. If you want to run |
| # OpenOCD, use the runnable wrapper like so: `bazel run //third_party/openocd`. |
| filegroup( |
| name = "openocd_bin", |
| srcs = [":build_openocd"], |
| output_group = "openocd", |
| visibility = ["//visibility:public"], |
| ) |
| |
| genrule( |
| name = "openocd", |
| outs = ["openocd.sh"], |
| cmd = """ |
| echo '#!/bin/bash' > $@ |
| echo './$(execpath :openocd_bin) $$@' >> $@ |
| """, |
| executable = True, |
| tools = [":openocd_bin"], |
| visibility = ["//visibility:public"], |
| ) |
| |
| filegroup( |
| name = "jtag_adapter_cfg", |
| srcs = ["@openocd//:tcl/interface/ftdi/olimex-arm-usb-tiny-h.cfg"], |
| visibility = ["//visibility:public"], |
| ) |
| |
| configure_make( |
| name = "build_openocd", |
| # Speed up the build with multiple jobs, but set an upper bound to constrain |
| # memory consumption. Bazel is not aware of foreign builds' resource usage. |
| # See <https://github.com/bazelbuild/rules_foreign_cc/issues/329>. |
| args = [ |
| "-j", |
| "`nproc`", |
| ], |
| configure_in_place = True, |
| configure_options = [ |
| "--enable-ftdi", |
| "--enable-verbose-jtag-io", |
| "--disable-vsllink", |
| "--enable-remote-bitbang", |
| ], |
| copts = ["-Wno-error=unused-variable"], |
| lib_source = "@openocd//:all_srcs", |
| out_binaries = ["openocd"], |
| ) |