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"

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
