summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2011-09-17 22:22:58 +0200
committerPeter Korsgaard <jacmet@sunsite.dk>2011-09-18 23:00:07 +0200
commit8797a9cd1fe6723db34b0c125d0d9d04e3483e8d (patch)
treeb85dbf581c7d1a8adda8047971c6b2ee7c6c8873
parenta473a616d27e46951a23d90249a31b08006098bf (diff)
Add support for the RTAI real-time extension
[Peter: fix rtai Config.in] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
-rw-r--r--linux/Config.ext.in13
-rw-r--r--linux/linux-ext-rtai.mk47
-rw-r--r--package/Config.in1
-rw-r--r--package/rtai/Config.in7
-rw-r--r--package/rtai/rtai.mk15
5 files changed, 83 insertions, 0 deletions
diff --git a/linux/Config.ext.in b/linux/Config.ext.in
index 893edb58b..8a9f87ec4 100644
--- a/linux/Config.ext.in
+++ b/linux/Config.ext.in
@@ -15,4 +15,17 @@ config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH
Download it at http://download.gna.org/adeos/patches/v2.6/$(ARCH)/
and verify that your kernel version in buildroot matches.
+# RTAI
+config BR2_LINUX_KERNEL_EXT_RTAI
+ bool "RTAI Real-time patch"
+ select BR2_PACKAGE_RTAI
+ help
+ RTAI Kernel part.
+
+config BR2_LINUX_KERNEL_EXT_RTAI_PATCH
+ depends on BR2_LINUX_KERNEL_EXT_RTAI
+ string "Path for RTAI patch file"
+ help
+ Optionally, explicitly specify the RTAI patch to use.
+
endmenu
diff --git a/linux/linux-ext-rtai.mk b/linux/linux-ext-rtai.mk
new file mode 100644
index 000000000..a54230d32
--- /dev/null
+++ b/linux/linux-ext-rtai.mk
@@ -0,0 +1,47 @@
+##################################################
+# Linux RTAI extensions
+#
+# Patch the linux kernel with RTAI extension
+##################################################
+
+ifeq ($(BR2_LINUX_KERNEL_EXT_RTAI),y)
+# Add dependency to RTAI (user-space) which provide kernel patches
+LINUX_DEPENDENCIES += rtai-patch
+
+RTAI_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_RTAI_PATCH))
+
+ifeq ($(KERNEL_ARCH),i386)
+RTAI_ARCH = x86
+else ifeq ($(KERNEL_ARCH),x86_64)
+RTAI_ARCH = x86
+else ifeq ($(KERNEL_ARCH),powerpc)
+RTAI_ARCH = ppc
+else
+RTAI_ARCH = $(KERNEL_ARCH)
+endif
+
+# Prepare kernel patch
+ifeq ($(RTAI_PATCH),)
+define RTAI_PREPARE_KERNEL
+ kver=`$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelversion` ; \
+ if test -f $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/hal-linux-$${kver}-*patch ; then \
+ support/script/apply-patches.sh $(LINUX_DIR) \
+ $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/ \
+ hal-linux-$${kver}-*patch ; \
+ else \
+ echo "No RTAI patch for your kernel version" ; \
+ exit 1 ; \
+ fi
+endef
+else
+define RTAI_PREPARE_KERNEL
+ support/script/apply-patches.sh \
+ $(LINUX_DIR) \
+ $(dir $(RTAI_PATCH)) \
+ $(notdir $(RTAI_PATCH))
+endef
+endif
+
+LINUX_POST_PATCH_HOOKS += RTAI_PREPARE_KERNEL
+
+endif #BR2_LINUX_EXT_RTAI
diff --git a/package/Config.in b/package/Config.in
index efb266a5e..451b271f8 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -489,6 +489,7 @@ endmenu
menu "Real-Time"
source "package/xenomai/Config.in"
+source "package/rtai/Config.in"
endmenu
menu "Shell and utilities"
diff --git a/package/rtai/Config.in b/package/rtai/Config.in
new file mode 100644
index 000000000..ecbff38d4
--- /dev/null
+++ b/package/rtai/Config.in
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_RTAI
+ bool "rtai"
+ depends on BR2_LINUX_KERNEL_EXT_RTAI
+ help
+ RTAI - the RealTime Application Interface for Linux.
+
+ http://www.rtai.org
diff --git a/package/rtai/rtai.mk b/package/rtai/rtai.mk
new file mode 100644
index 000000000..abba614c4
--- /dev/null
+++ b/package/rtai/rtai.mk
@@ -0,0 +1,15 @@
+RTAI_VERSION = 3.8.1
+RTAI_SOURCE = rtai-$(RTAI_VERSION).tar.bz2
+RTAI_SITE = http://www.rtai.org/RTAI/
+
+RTAI_DEPENDENCIES = linux
+
+RTAI_CONF_OPT = \
+ --with-linux-dir=$(LINUX_DIR) \
+ --disable-leds \
+ --disable-rtailab \
+ --with-module-dir=/lib/modules/$(LINUX_VERSION_PROBED)/kernel/rtai
+
+RTAI_MAKE = $(MAKE1)
+
+$(eval $(call AUTOTARGETS,package,rtai))