config BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS
	bool
	default y if BR2_i386
	default y if BR2_x86_64
	default y if BR2_powerpc
	default y if BR2_arm && !BR2_ARM_CPU_ARMV7M && !BR2_ARM_CPU_ARMV8A
	default y if BR2_aarch64

comment "xenomai needs a glibc or uClibc toolchain w/ threads"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL

config BR2_PACKAGE_XENOMAI
	bool "Xenomai Userspace"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	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

choice
	bool "Xenomai version"
	help
	  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.

config BR2_PACKAGE_XENOMAI_3_2
	bool "3.2"

config BR2_PACKAGE_XENOMAI_3_1
	bool "3.1"

config BR2_PACKAGE_XENOMAI_3_0
	bool "3.0"
	depends on !BR2_aarch64

config BR2_PACKAGE_XENOMAI_CUSTOM_VERSION
	bool "Custom version"

config BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL
	bool "Custom tarball"

config BR2_PACKAGE_XENOMAI_CUSTOM_GIT
	bool "Custom Git repository"

endchoice

config BR2_PACKAGE_XENOMAI_CUSTOM_VERSION_VALUE
	string "Xenomai version"
	depends on BR2_PACKAGE_XENOMAI_CUSTOM_VERSION

config BR2_PACKAGE_XENOMAI_REPOSITORY
	string "URL of custom repository"
	depends on BR2_PACKAGE_XENOMAI_CUSTOM_GIT

config BR2_PACKAGE_XENOMAI_REPOSITORY_VERSION
	string "Custom repository version"
	depends on BR2_PACKAGE_XENOMAI_CUSTOM_GIT
	help
	  Revision to use in the typical format used by Git, i.e a
	  SHA1 or a tag.

config BR2_PACKAGE_XENOMAI_VERSION
	string
	default "v3.2.2" if BR2_PACKAGE_XENOMAI_3_2
	default "v3.1.3" if BR2_PACKAGE_XENOMAI_3_1
	default "v3.0.13" if BR2_PACKAGE_XENOMAI_3_0
	default BR2_PACKAGE_XENOMAI_CUSTOM_VERSION_VALUE \
		if BR2_PACKAGE_XENOMAI_CUSTOM_VERSION
	default "custom" if BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL
	default BR2_PACKAGE_XENOMAI_REPOSITORY_VERSION \
		if BR2_PACKAGE_XENOMAI_CUSTOM_GIT

config BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL
	string "URL of custom tarball"
	depends on BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL

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"
	depends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS
	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
	# SMP not supported below armv6
	depends on !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5
	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_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
