config BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS
	bool
	default y
	depends on BR2_i386 || BR2_x86_64 || (BR2_arm && !BR2_ARM_CPU_ARMV7M) || \
		BR2_bfin || BR2_powerpc

comment "xenomai needs an glibc or uClibc toolchain w/ threads"
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL
	depends on BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS

config BR2_PACKAGE_XENOMAI
	bool "Xenomai Userspace"
	depends on BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_THREADS
	# uses <error.h>, __WORDSIZE and bits/local_lim.h
	depends on !BR2_TOOLCHAIN_USES_MUSL
	help
	  Real-Time Framework for Linux
	  http://www.xenomai.org

	  Xenomai is split in two parts: a kernel part and an
	  userspace part.

	  This package contains the userspace part, which consists
	  mainly in libraries to write userspace real-time programs
	  that interact with the in-kernel Xenomai real-time core.

	  For those libraries to work, you need a Xenomai-enabled
	  kernel. This is possible in two ways:
	   - if you compile your kernel with Buildroot, you need to go
	     to Linux Kernel -> Linux Kernel Extensions to enable the
	     Xenomai extension.
	   - if you compile your kernel outside of Buildroot, you need
	     to make sure that it is Xenomai-enabled.

	  Finally, if you are using a static /dev, make sure to
	  uncomment the Xenomai entries listed in
	  target/generic/device_table_dev.txt.

if BR2_PACKAGE_XENOMAI

config BR2_PACKAGE_XENOMAI_VERSION
	string "Custom Xenomai version"
	help
	  Manually select Xenomai version. If left empty, the default
	  version will be used.

	  Make sure that the selected version has a patch for your
	  selected Linux kernel. If it does not, download and select
	  a patch manually with
	  BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH, in the Linux
	  Kernel -> Linux Kernel Extensions menu.

choice
	prompt "Xenomai core"
	default BR2_PACKAGE_XENOMAI_MERCURY
	help
	  Select the Xenomai core: dual kernel (Cobalt)
	  or native Linux Kernel (Mercury).

config BR2_PACKAGE_XENOMAI_MERCURY
	bool "Mercury"
	depends on !BR2_LINUX_KERNEL_EXT_XENOMAI
	help
	  Select Mercury core for the Xenomai userspace.
	  You want to use it if you have the native Linux Kernel.

config BR2_PACKAGE_XENOMAI_COBALT
	bool "Cobalt"
	help
	  Select Cobalt core (dual kernel) for the Xenomai
	  userspace. Use this if you use a Xenomai-patched
	  Linux kernel.

	  If you want to use Cobalt core, your kernel must have
	  the Adeos and Xenomai patches applied to it. You can
	  add these through the BR2_LINUX_KERNEL_EXT_XENOMAI option
	  in the Linux Kernel Extensions menu.
endchoice

config BR2_PACKAGE_XENOMAI_ENABLE_SMP
	bool "Enable SMP support"
	default y
	help
	  This option enables SMP support in Xenomai userspace.

	  If this option is turned on while no SMP support is enabled
	  in the kernel, things will still work. However, if SMP is
	  enabled in the kernel but this option is not turned on,
	  Xenomai applications will complain with:

	    feature mismatch: missing="smp/nosmp"

	  Please refer to this troubleshooting guide for more
	  information:

	  http://xenomai.org/troubleshooting-a-dual-kernel-configuration/#feature_mismatch_missing8221smpnosmp8221

config BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY
	bool "Enable registry"
	depends on !BR2_STATIC_LIBS # libfuse
	depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse
	depends on BR2_USE_MMU # libfuse
	select BR2_PACKAGE_LIBFUSE
	help
	  Xenomai APIs can export their internal state through a
	  pseudo-filesystem, whose files may be read to obtain
	  information about the existing real-time objects, such as
	  tasks, semaphores, message queues and so on.

comment "registry needs a toolchain w/ threads, dynamic library"
	depends on BR2_USE_MMU
	depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH
	string "Custom registry root path"
	depends on BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY
	help
	  Specify the root path of the registry here.
	  To use the Xenomai default (currently: /var/run/xenomai),
	  leave this option empty.

config BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS
	string "Additional configure options"
	help
	  Specify any additional options to pass to the configure
	  script here.  See Xenomai documentation for details.

config BR2_PACKAGE_XENOMAI_TESTSUITE
	bool "Install testsuite"
	help
	  This option allows to install the Xenomai test programs.

config BR2_PACKAGE_XENOMAI_RTCAN
	bool "RTCan utilities"
	help
	  This option allows to install the Xenomai RT-CAN utilities.

config BR2_PACKAGE_XENOMAI_ANALOGY
	bool "Analogy libs and utils"
	help
	  This option allows to install the Xenomai Analogy utilities
	  and libraries

menu "Skin selection"

config BR2_PACKAGE_XENOMAI_NATIVE_SKIN
	bool "Alchemy (native) skin"
	default y
	help
	  This option allows to install the Alchemy Xenomai skin, previously
	  called 'native'

config BR2_PACKAGE_XENOMAI_POSIX_SKIN
	bool "POSIX skin"
	default y
	help
	  This option allows to install the POSIX Xenomai skin

config BR2_PACKAGE_XENOMAI_PSOS_SKIN
	bool "pSOS skin"
	help
	  This option allows to install the pSOS Xenomai skin

config BR2_PACKAGE_XENOMAI_RTAI_SKIN
	bool "RTAI skin"
	help
	  This option allows to install the RTAI Xenomai skin

config BR2_PACKAGE_XENOMAI_SMOKEY_SKIN
	bool "Smokey skin"
	help
	  This option allows to install the Smokey Xenomai skin

config BR2_PACKAGE_XENOMAI_UITRON_SKIN
	bool "uITRON skin"
	help
	  This option allows to install the uITRON Xenomai skin

config BR2_PACKAGE_XENOMAI_VRTX_SKIN
	bool "VRTX skin"
	help
	  This option allows to install the VRTX Xenomai skin

config BR2_PACKAGE_XENOMAI_VXWORKS_SKIN
	bool "VxWorks skin"
	help
	  This option allows to install the VxWorks Xenomai skin

endmenu

endif
