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
	select BR2_PACKAGE_OPENPOWERLINK_PCAP_DAEMON
	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.

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

choice
	prompt "select Ethernet Powerlink Driver"

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573
	bool "Intel 82573"

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"

endchoice

endif # BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_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
