xen: new package

Add support to compile Xen 4.6 and Xen tools for arm32 and arm64
targets.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
[Thomas:
 - Remove all "select" from the main Xen option, since the hypervisor
   can build fine without any additional library. The dependencies have
   been moved to the "tools" sub-option.
 - Make sure that at least one of the sub-option is enabled by selecting
   the hypervisor sub-option if the tools sub-option is not enabled.
 - Add a Config.in comment about the dependencies of the Xen tools.
 - Add missing dependency on argp-standalone in the .mk file.
 - Simplify the handling of XEN_INSTALL_TARGET_OPTS.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Alistair Francis 2016-05-12 15:13:01 -07:00 committed by Thomas Petazzoni
parent 3f7c3c3c25
commit a95f85fc72
4 changed files with 100 additions and 0 deletions

View File

@ -1711,6 +1711,7 @@ endif
source "package/tpm-tools/Config.in"
source "package/unscd/Config.in"
source "package/util-linux/Config.in"
source "package/xen/Config.in"
endmenu
menu "Text editors and viewers"

44
package/xen/Config.in Normal file
View File

@ -0,0 +1,44 @@
config BR2_PACKAGE_XEN
bool "xen"
# needs "dmb" on ARM, so ARM >= v7
depends on BR2_ARM_CPU_ARMV7A || BR2_aarch64
select BR2_PACKAGE_XEN_HYPERVISOR if !BR2_PACKAGE_XEN_TOOLS
help
This package builds the Xen hypervisor and toolstack.
http://www.xenproject.org/
if BR2_PACKAGE_XEN
config BR2_PACKAGE_XEN_HYPERVISOR
bool "Xen hypervisor"
help
The Xen binaries are avaliable in /usr/lib/xen/
See http://wiki.xenproject.org/wiki/Getting_Started for using the
Xen hypervisor.
config BR2_PACKAGE_XEN_TOOLS
bool "Xen tools"
depends on !BR2_STATIC_LIBS # dtc (libfdt)
depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
depends on BR2_USE_WCHAR # libglib2, util-linux
select BR2_PACKAGE_DTC
select BR2_PACKAGE_LIBAIO
select BR2_PACKAGE_LIBGLIB2
select BR2_PACKAGE_NCURSES
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_PIXMAN
select BR2_PACKAGE_UTIL_LINUX
select BR2_PACKAGE_UTIL_LINUX_LIBUUID
select BR2_PACKAGE_YAJL
select BR2_PACKAGE_ARGP_STANDALONE if !BR2_TOOLCHAIN_USES_GLIBC
help
The Xen tools can be accessed by the xl command.
comment "xen tools need a toolchain w/ wchar, threads, dynamic library"
depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
BR2_STATIC_LIBS
endif

2
package/xen/xen.hash Normal file
View File

@ -0,0 +1,2 @@
# Locally computed
sha256 6fa1c2431df55aa5950d248e6093b8c8c0f11c357a0adbd348a2186478e80909 xen-4.6.0.tar.gz

53
package/xen/xen.mk Normal file
View File

@ -0,0 +1,53 @@
################################################################################
#
# Xen
#
################################################################################
XEN_VERSION = 4.6.0
XEN_SITE = http://bits.xensource.com/oss-xen/release/$(XEN_VERSION)
XEN_LICENSE = GPLv2
XEN_LICENSE_FILES = COPYING
# Calculate XEN_ARCH
ifeq ($(ARCH),aarch64)
XEN_ARCH = arm64
else ifeq ($(ARCH),arm)
XEN_ARCH = arm32
endif
XEN_CONF_OPTS = --disable-ocamltools
XEN_MAKE_ENV = \
XEN_TARGET_ARCH=$(XEN_ARCH) \
CROSS_COMPILE=$(TARGET_CROSS) \
$(TARGET_CONFIGURE_OPTS)
ifeq ($(BR2_PACKAGE_XEN_HYPERVISOR),y)
XEN_MAKE_OPTS += dist-xen
XEN_INSTALL_IMAGES = YES
define XEN_INSTALL_IMAGES_CMDS
cp $(@D)/xen/xen $(BINARIES_DIR)
endef
else
XEN_CONF_OPTS += --disable-xen
endif
ifeq ($(BR2_PACKAGE_XEN_TOOLS),y)
XEN_DEPENDENCIES += dtc libaio libglib2 ncurses openssl pixman util-linux yajl
ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y)
XEN_DEPENDENCIES += argp-standalone
endif
XEN_INSTALL_TARGET_OPTS += DESTDIR=$(TARGET_DIR) install-tools
XEN_MAKE_OPTS += dist-tools
define XEN_INSTALL_INIT_SYSV
mv $(TARGET_DIR)/etc/init.d/xencommons $(TARGET_DIR)/etc/init.d/S50xencommons
mv $(TARGET_DIR)/etc/init.d/xen-watchdog $(TARGET_DIR)/etc/init.d/S50xen-watchdog
mv $(TARGET_DIR)/etc/init.d/xendomains $(TARGET_DIR)/etc/init.d/S60xendomains
endef
else
XEN_INSTALL_TARGET = NO
XEN_CONF_OPTS += --disable-tools
endif
$(eval $(autotools-package))