comment "openpowerlink needs a toolchain w/ C++, threads"
	depends on BR2_i386 || BR2_x86_64
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_OPENPOWERLINK
	bool "openpowerlink"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_i386 || BR2_x86_64
	help
	  openPOWERLINK is an Open Source Industrial Ethernet stack
	  implementing the POWERLINK protocol for Managing Node (MN,
	  POWERLINK Master) and Controlled Node (CN, POWERLINK Slave).

	  It is provided by
	  SYSTEC electronic (http://www.systec-electronic.com),
	  B&R (http://www.br-automation.com) and
	  Kalycito (http://www.kalycito.com).

	  http://openpowerlink.sourceforge.net/web/

if BR2_PACKAGE_OPENPOWERLINK

choice
	prompt "MN/CN mode"

config BR2_PACKAGE_OPENPOWERLINK_MN
	bool "Managing Node"
	help
	  Enable Managing Node (master) mode

config BR2_PACKAGE_OPENPOWERLINK_CN
	bool "Controlled Node"
	help
	  Enable Controlled Node (slave) mode

endchoice

choice
	prompt "stack type"
	default BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB if BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE # legacy
	default BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB if BR2_PACKAGE_OPENPOWERLINK_LIBPCAP # legacy

config BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB
	bool "linked into application"
	select BR2_PACKAGE_LIBPCAP
	help
	  Compile a monolithic openPOWERLINK library. The library
	  contains an Ethernet driver which is using the PCAP library
	  for accessing the network. No kernel-side driver is needed.

config BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB
	bool "user-space pcap daemon"
	select BR2_PACKAGE_LIBPCAP
	help
	  Compile openPOWERLINK application library which contains the
	  interface to a Linux user space driver, and the Linux user
	  space driver. It is used for implementing a multi-process
	  solution where the openPOWERLINK layer is running as a
	  separate Linux user space daemon (i.e. a PCAP based user
	  space daemon).  No kernel-side stack is needed.

config BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB
	bool "kernel-space driver"
	depends on BR2_LINUX_KERNEL
	help
	  Compile openPOWERLINK application library which contains the
	  interface to a Linux kernel space driver. This will also
	  build and install a Linux kernel module openPOWERLINK
	  driver.

config BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB
	bool "kernel-space PCIe driver"
	depends on BR2_LINUX_KERNEL
	depends on BR2_PACKAGE_OPENPOWERLINK_MN # MN support only
	help
	  Compile openPOWERLINK application library which contains the
	  interface to a Linux kernel PCIe interface driver. The kernel
	  part of the openPOWERLINK stack is located on an external PCIe
	  device. The status/control and data exchange between the
	  application and kernel stack is handled by the PCIe interface
	  driver.

comment "openpowerlink kernel stack needs a Linux kernel to be built"
	depends on !BR2_LINUX_KERNEL

endchoice

if BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB

menu "Ethernet drivers"

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573
	bool "Intel 82573"
	default y

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_8255x
	bool "Intel 8255x"

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_I210
	bool "Intel I210"

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111
	bool "Realtek RTL-8111/8168"

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139
	bool "Realtek RTL-8139"

endmenu

endif # BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER
	bool "PCIe Powerlink Driver"
	depends on BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB

menu "demos"

config BR2_PACKAGE_OPENPOWERLINK_DEMO_MN_CONSOLE
	bool "console MN demo"
	depends on BR2_PACKAGE_OPENPOWERLINK_MN

config BR2_PACKAGE_OPENPOWERLINK_DEMO_CN_CONSOLE
	bool "console CN demo"
	depends on BR2_PACKAGE_OPENPOWERLINK_CN

endmenu

endif # BR2_PACKAGE_OPENPOWERLINK
