xref: /OK3568_Linux_fs/buildroot/package/xenomai/xenomai.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1################################################################################
2#
3# xenomai
4#
5################################################################################
6
7XENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION))
8ifeq ($(BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL),y)
9XENOMAI_TARBALL = $(call qstrip,$(BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL))
10XENOMAI_SOURCE = $(notdir $(XENOMAI_TARBALL))
11XENOMAI_SITE = $(patsubst %/,%,$(dir $(XENOMAI_TARBALL)))
12# Exclude from the hash check
13BR_NO_CHECK_HASH_FOR += $(XENOMAI_SOURCE)
14else ifeq ($(BR2_PACKAGE_XENOMAI_CUSTOM_GIT),y)
15XENOMAI_SITE = $(call qstrip,$(BR2_PACKAGE_XENOMAI_REPOSITORY))
16XENOMAI_SITE_METHOD = git
17# Exclude from the hash check
18BR_NO_CHECK_HASH_FOR += $(XENOMAI_SOURCE)
19else
20XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2
21XENOMAI_SITE = https://source.denx.de/Xenomai/xenomai/-/archive/$(XENOMAI_VERSION)
22endif
23# We're patching configure.ac
24XENOMAI_AUTORECONF = YES
25
26XENOMAI_LICENSE = GPL-2.0+ with exception (headers), LGPL-2.1+ (libraries), GPL-2.0+ (kernel), GFDL-1.2+ (docs), GPL-2.0 (ipipe patch, can driver)
27# GFDL is not included but refers to gnu.org
28XENOMAI_LICENSE_FILES = debian/copyright include/COPYING kernel/cobalt/COPYING \
29	kernel/cobalt/posix/COPYING kernel/cobalt/rtdm/COPYING \
30	lib/alchemy/COPYING lib/analogy/COPYING \
31	lib/boilerplate/iniparser/LICENSE lib/boilerplate/COPYING \
32	lib/cobalt/COPYING lib/copperplate/COPYING lib/psos/COPYING \
33	lib/smokey/COPYING lib/trank/COPYING lib/vxworks/COPYING
34
35XENOMAI_DEPENDENCIES = host-pkgconf
36
37XENOMAI_INSTALL_STAGING = YES
38XENOMAI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-user
39XENOMAI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-user
40
41XENOMAI_CONF_OPTS += \
42	--disable-demo \
43	--disable-testsuite \
44	--includedir=/usr/include/xenomai/
45
46ifeq ($(BR2_PACKAGE_XENOMAI_MERCURY),y)
47XENOMAI_CONF_OPTS += --with-core=mercury
48else
49XENOMAI_CONF_OPTS += --with-core=cobalt
50endif
51
52ifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_SMP),y)
53XENOMAI_CONF_OPTS += --enable-smp
54else
55XENOMAI_CONF_OPTS += --disable-smp
56endif
57
58ifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY),y)
59XENOMAI_DEPENDENCIES += libfuse
60XENOMAI_REGISTRY_PATH = $(call qstrip,$(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH))
61ifeq ($(XENOMAI_REGISTRY_PATH),)
62XENOMAI_CONF_OPTS += --enable-registry
63else
64XENOMAI_CONF_OPTS += --enable-registry=$(XENOMAI_REGISTRY_PATH)
65endif
66else
67XENOMAI_CONF_OPTS += --disable-registry
68endif
69
70XENOMAI_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS))
71
72# Some of these files may be desired by some users -- at that point specific
73# config options need to be added to keep a particular set.
74define XENOMAI_REMOVE_UNNEEDED_FILES
75	for i in xeno xeno-config xeno-info wrap-link.sh ; do \
76		rm -f $(TARGET_DIR)/usr/bin/$$i ; \
77	done
78	for i in cobalt modechk ; do \
79		rm -f $(TARGET_DIR)/usr/lib/$$i.wrappers ; \
80	done
81	for i in autotune corectl hdb rtnet nomaccfg rtcfg rtifconfig \
82		rtiwconfig rtping rtroute tdmacfg rtps slackspot version; do \
83		rm -f $(TARGET_DIR)/usr/sbin/$$i ; \
84	done
85endef
86
87XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_UNNEEDED_FILES
88
89ifeq ($(BR2_PACKAGE_XENOMAI_TESTSUITE),)
90define XENOMAI_REMOVE_TESTSUITE
91	rm -rf $(TARGET_DIR)/usr/share/xenomai/
92	for i in clocktest gpiotest latency smokey spitest switchtest \
93		xeno-test-run-wrapper dohell xeno-test-run xeno-test ; do \
94		rm -f $(TARGET_DIR)/usr/bin/$$i ; \
95	done
96	rm -rf $(TARGET_DIR)/usr/demo/
97endef
98
99XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_TESTSUITE
100endif
101
102ifeq ($(BR2_PACKAGE_XENOMAI_RTCAN),)
103define XENOMAI_REMOVE_RTCAN_PROGS
104	for i in rtcanrecv rtcansend ; do \
105		rm -f $(TARGET_DIR)/usr/bin/$$i ; \
106	done
107	rm -f $(TARGET_DIR)/usr/sbin/rtcanconfig
108endef
109
110XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_RTCAN_PROGS
111endif
112
113ifeq ($(BR2_PACKAGE_XENOMAI_ANALOGY),)
114define XENOMAI_REMOVE_ANALOGY
115	for i in cmd_read cmd_write cmd_bits insn_read insn_write insn_bits \
116			wf_generate ; do \
117		rm -f $(TARGET_DIR)/usr/bin/$$i ; \
118	done
119	for i in analogy_config analogy_calibrate ; do \
120		rm -f $(TARGET_DIR)/usr/sbin/$$i ; \
121	done
122	rm -f $(TARGET_DIR)/usr/lib/libanalogy.*
123endef
124
125XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_ANALOGY
126endif
127
128XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_NATIVE_SKIN),,alchemy)
129XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_POSIX_SKIN),,posix)
130XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_PSOS_SKIN),,psos)
131XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_RTAI_SKIN),,rtai)
132XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_TESTSUITE),,smokey)
133XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_UITRON_SKIN),,uitron)
134XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_VXWORKS_SKIN),,vxworks)
135XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_VRTX_SKIN),,vrtx)
136
137define XENOMAI_REMOVE_LIBS
138	for i in $(XENOMAI_REMOVE_LIBS_LIST) ; do \
139		rm -f $(TARGET_DIR)/usr/lib/lib$$i.* ; \
140	done
141endef
142
143XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_LIBS
144
145define XENOMAI_DEVICES
146	/dev/rtheap  c  666  0  0  10  254  0  0  -
147	/dev/rtscope c  666  0  0  10  253  0  0  -
148	/dev/rtp     c  666  0  0  150 0    0  1  32
149endef
150
151ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
152XENOMAI_DEPENDENCIES += udev
153
154define XENOMAI_INSTALL_UDEV_RULES
155	if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \
156		for f in $(@D)/kernel/cobalt/udev/*.rules ; do \
157			cp $$f $(TARGET_DIR)/etc/udev/rules.d/ || exit 1 ; \
158		done ; \
159	fi;
160endef
161
162XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_INSTALL_UDEV_RULES
163endif # udev
164
165$(eval $(autotools-package))
166