config BR2_PACKAGE_OPENOCD
	bool "openocd"
	select BR2_PACKAGE_JIMTCL
	help
	  OpenOCD - Open On-Chip Debugger

	  http://openocd.sourceforge.net/

if BR2_PACKAGE_OPENOCD

comment "Adapters"

config BR2_PACKAGE_OPENOCD_CMSIS_DAP
	bool "CMSIS-DAP compliant debuggers"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	depends on BR2_PACKAGE_HAS_UDEV # hidapi
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # hidapi
	select BR2_PACKAGE_LIBUSB
	select BR2_PACKAGE_HIDAPI
	help
	  Enable support for CMSIS-DAP compliant debuggers (i.e
	  Atmel/Microchip EDBG, etc.)

config BR2_PACKAGE_OPENOCD_FTDI
	bool "MPSSE mode of FTDI based devices"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the MPSSE mode of FTDI
	  (FT2xxx/FT4xxx) based devices (default is auto)

config BR2_PACKAGE_OPENOCD_STLINK
	bool "ST-Link JTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the ST-Link JTAG
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_TI_ICDI
	bool "TI ICDI JTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the TI ICDI JTAG
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_ULINK
	bool "Keil ULINK JTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the Keil ULINK JTAG
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_UBLASTER2
	bool "Altera USB-Blaster II Compatible"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the Altera USB-Blaster
	  II Compatible (default is auto)

config BR2_PACKAGE_OPENOCD_JLINK
	bool "Segger J-Link JTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Segger J-Link JTAG Programmer and clone such as Atmel
	  SAM-ICE

config BR2_PACKAGE_OPENOCD_OSDBM
	bool "OSDBM JTAG (only) Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the OSBDM (JTAG only)
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_OPENDOUS
	bool "eStick/opendous JTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the eStick/opendous JTAG
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_AICE
	bool "Andes JTAG Programmer"
	depends on BR2_USE_MMU # use fork()
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the Andes JTAG
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_VSLLINK
	bool "Versaloon-Link JTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb
	select BR2_PACKAGE_LIBUSB
	select BR2_PACKAGE_LIBUSB_COMPAT
	help
	  Enable building support for the Versaloon-Link JTAG
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_USBPROG
	bool "USBProg JTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb
	select BR2_PACKAGE_LIBUSB
	select BR2_PACKAGE_LIBUSB_COMPAT
	help
	  Enable building support for the USBProg JTAG
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_RLINK
	bool "Raisonance RLink JTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb
	select BR2_PACKAGE_LIBUSB
	select BR2_PACKAGE_LIBUSB_COMPAT
	help
	  Enable building support for the Raisonance RLink
	  JTAG Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_ARMEW
	bool "Olimex ARM-JTAG-EW Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb
	select BR2_PACKAGE_LIBUSB
	select BR2_PACKAGE_LIBUSB_COMPAT
	help
	  Enable building support for the Olimex ARM-JTAG-EW
	  Programmer (default is auto)

config BR2_PACKAGE_OPENOCD_XDS110
	bool "TI XDS110 Debug Probe"
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
	select BR2_PACKAGE_LIBUSB
	help
	  Enable building support for the TI XDS110 Debug Probe.

config BR2_PACKAGE_OPENOCD_PARPORT
	bool "pc parallel port driver"
	help
	  Enable building the pc parallel port driver

config BR2_PACKAGE_OPENOCD_VPI
	bool "JTAG VPI"
	help
	  Enable building support for JTAG VPI

config BR2_PACKAGE_OPENOCD_UBLASTER
	bool "Altera USB-Blaster"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb
	select BR2_PACKAGE_LIBFTDI1
	help
	  Enable building support for the Altera USB-Blaster
	  using the libftdi driver, opensource alternate of
	  FTD2XX

config BR2_PACKAGE_OPENOCD_AMTJT
	bool "Amontec JTAG-Accelerator"
	help
	  Enable building the Amontec JTAG-Accelerator driver

if BR2_arm

config BR2_PACKAGE_OPENOCD_EP93XX
	bool "EP93xx based SBCs"
	help
	  Enable building support for EP93xx based SBCs

config BR2_PACKAGE_OPENOCD_AT91RM
	bool "AT91RM9200 based SBCs"
	help
	  Enable building support for AT91RM9200 based SBCs

endif # BR2_arm

if BR2_arm || BR2_aarch64

config BR2_PACKAGE_OPENOCD_BCM2835
	bool "bitbanging on BCM2835"
	help
	  Enable building support for bitbanging on BCM2835
	  (as found in Raspberry Pi)

config BR2_PACKAGE_OPENOCD_IMXGPIO
	bool "bitbanging on NXP i.MX family"
	help
	  Enable support for bitbanging on NXP i.MX family
	  (as found in SolidSense N6, N8, etc.)

endif # BR2_arm || BR2_aarch64

config BR2_PACKAGE_OPENOCD_GW16012
	bool "Gateworks GW16012 JTAG Programmer"
	help
	  Enable building support for the Gateworks GW16012
	  JTAG Programmer

config BR2_PACKAGE_OPENOCD_PRESTO
	bool "ASIX Presto Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb
	select BR2_PACKAGE_LIBFTDI1
	help
	  Enable building support for ASIX Presto Programmer
	  using the libftdi driver

config BR2_PACKAGE_OPENOCD_OPENJTAG
	bool "OpenJTAG Programmer"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb
	select BR2_PACKAGE_LIBFTDI1
	select BR2_PACKAGE_LIBUSB
	select BR2_PACKAGE_LIBUSB_COMPAT # needs usb.h
	help
	  Enable building support for the OpenJTAG Programmer
	  with ftdi driver

config BR2_PACKAGE_OPENOCD_BUSPIRATE
	bool "Buspirate"
	help
	  Enable building support for the Buspirate

config BR2_PACKAGE_OPENOCD_SYSFS
	bool "programming via sysfs gpios"
	help
	  Enable building support for programming driven via
	  sysfs gpios.

# Many adapters need libusb or libusb-compat, which require threads and
# gcc >= 4.9 but we don't want to duplicate this comment for all
# adapters that select libusb or libusb-compat.
comment "many openocd adapters needs a toolchain w/ threads, gcc >= 4.9"
	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

comment "xds110 adapter support needs toolchain w/ wchar"
	depends on !BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

endif # BR2_PACKAGE_OPENOCD
