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_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

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

endif # BR2_arm

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

endif # BR2_PACKAGE_OPENOCD
