| # 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"], | 
 | ) |