buildroot/package/xenomai/xenomai.mk
Jan Kiszka d0fd8c51d8 package/xenomai: add support to download from a custom git tree
Soem versions are tagged, but not tarballed, so we need to be able to
retrieve them from git.

Usually, we do not have a default value for the repository, but unlike
for the kernel or the various bootloaders, the most prominent repository
for Xeniomai is upstream's official one (for the reason above, amongst
others), so we use that as a default.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Romain Naour <romain.naour@gmail.com>
Cc: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2020-06-24 23:21:28 +02:00

162 lines
5.3 KiB
Makefile

################################################################################
#
# xenomai
#
################################################################################
XENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION))
ifeq ($(BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL),y)
XENOMAI_TARBALL = $(call qstrip,$(BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL))
XENOMAI_SOURCE = $(notdir $(XENOMAI_TARBALL))
XENOMAI_SITE = $(patsubst %/,%,$(dir $(XENOMAI_TARBALL)))
else ifeq ($(BR2_PACKAGE_XENOMAI_CUSTOM_GIT),y)
XENOMAI_SITE = $(call qstrip,$(BR2_PACKAGE_XENOMAI_REPOSITORY))
XENOMAI_SITE_METHOD = git
else
XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2
XENOMAI_SITE = http://xenomai.org/downloads/xenomai/stable
endif
# Exclude all from the hash check, but the latest version.
ifeq ($(BR2_PACKAGE_XENOMAI)$(BR2_PACKAGE_XENOMAI_LATEST_VERSION),y)
BR_NO_CHECK_HASH_FOR += $(XENOMAI_SOURCE)
endif
XENOMAI_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)
# GFDL is not included but refers to gnu.org
XENOMAI_LICENSE_FILES = debian/copyright include/COPYING kernel/cobalt/COPYING \
kernel/cobalt/posix/COPYING kernel/cobalt/rtdm/COPYING \
lib/alchemy/COPYING lib/analogy/COPYING \
lib/boilerplate/iniparser/LICENSE lib/boilerplate/COPYING \
lib/cobalt/COPYING lib/copperplate/COPYING lib/psos/COPYING \
lib/smokey/COPYING lib/trank/COPYING lib/vxworks/COPYING
XENOMAI_DEPENDENCIES = host-pkgconf
XENOMAI_INSTALL_STAGING = YES
XENOMAI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-user
XENOMAI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-user
XENOMAI_CONF_OPTS += --includedir=/usr/include/xenomai/ --disable-doc-install
ifeq ($(BR2_PACKAGE_XENOMAI_MERCURY),y)
XENOMAI_CONF_OPTS += --with-core=mercury
else
XENOMAI_CONF_OPTS += --with-core=cobalt
endif
ifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_SMP),y)
XENOMAI_CONF_OPTS += --enable-smp
else
XENOMAI_CONF_OPTS += --disable-smp
endif
ifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY),y)
XENOMAI_DEPENDENCIES += libfuse
XENOMAI_REGISTRY_PATH = $(call qstrip,$(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH))
ifeq ($(XENOMAI_REGISTRY_PATH),)
XENOMAI_CONF_OPTS += --enable-registry
else
XENOMAI_CONF_OPTS += --enable-registry=$(XENOMAI_REGISTRY_PATH)
endif
else
XENOMAI_CONF_OPTS += --disable-registry
endif
XENOMAI_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS))
# Some of these files may be desired by some users -- at that point specific
# config options need to be added to keep a particular set.
define XENOMAI_REMOVE_UNNEEDED_FILES
for i in xeno xeno-config xeno-info wrap-link.sh ; do \
rm -f $(TARGET_DIR)/usr/bin/$$i ; \
done
for i in cobalt modechk ; do \
rm -f $(TARGET_DIR)/usr/lib/$$i.wrappers ; \
done
for i in autotune corectl hdb rtnet nomaccfg rtcfg rtifconfig \
rtiwconfig rtping rtroute tdmacfg rtps slackspot version; do \
rm -f $(TARGET_DIR)/usr/sbin/$$i ; \
done
endef
XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_UNNEEDED_FILES
ifeq ($(BR2_PACKAGE_XENOMAI_TESTSUITE),)
define XENOMAI_REMOVE_TESTSUITE
rm -rf $(TARGET_DIR)/usr/share/xenomai/
for i in clocktest gpiotest latency smokey spitest switchtest \
xeno-test-run-wrapper dohell xeno-test-run xeno-test ; do \
rm -f $(TARGET_DIR)/usr/bin/$$i ; \
done
rm -rf $(TARGET_DIR)/usr/demo/
endef
XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_TESTSUITE
endif
ifeq ($(BR2_PACKAGE_XENOMAI_RTCAN),)
define XENOMAI_REMOVE_RTCAN_PROGS
for i in rtcanrecv rtcansend ; do \
rm -f $(TARGET_DIR)/usr/bin/$$i ; \
done
rm -f $(TARGET_DIR)/usr/sbin/rtcanconfig
endef
XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_RTCAN_PROGS
endif
ifeq ($(BR2_PACKAGE_XENOMAI_ANALOGY),)
define XENOMAI_REMOVE_ANALOGY
for i in cmd_read cmd_write cmd_bits insn_read insn_write insn_bits \
wf_generate ; do \
rm -f $(TARGET_DIR)/usr/bin/$$i ; \
done
for i in analogy_config analogy_calibrate ; do \
rm -f $(TARGET_DIR)/usr/sbin/$$i ; \
done
rm -f $(TARGET_DIR)/usr/lib/libanalogy.*
endef
XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_ANALOGY
endif
XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_NATIVE_SKIN),,alchemy)
XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_POSIX_SKIN),,posix)
XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_PSOS_SKIN),,psos)
XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_RTAI_SKIN),,rtai)
XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_TESTSUITE),,smokey)
XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_UITRON_SKIN),,uitron)
XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_VXWORKS_SKIN),,vxworks)
XENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_VRTX_SKIN),,vrtx)
define XENOMAI_REMOVE_LIBS
for i in $(XENOMAI_REMOVE_LIBS_LIST) ; do \
rm -f $(TARGET_DIR)/usr/lib/lib$$i.* ; \
done
endef
XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_LIBS
define XENOMAI_DEVICES
/dev/rtheap c 666 0 0 10 254 0 0 -
/dev/rtscope c 666 0 0 10 253 0 0 -
/dev/rtp c 666 0 0 150 0 0 1 32
endef
ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
XENOMAI_DEPENDENCIES += udev
define XENOMAI_INSTALL_UDEV_RULES
if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \
for f in $(@D)/kernel/cobalt/udev/*.rules ; do \
cp $$f $(TARGET_DIR)/etc/udev/rules.d/ || exit 1 ; \
done ; \
fi;
endef
XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_INSTALL_UDEV_RULES
endif # udev
$(eval $(autotools-package))