tools/firmware: Build and install xen-shim

Link a minimum set of files to build the shim. The linkfarm rune can
handle creation and deletion of files. Introduce build-shim and
install-shim targets in xen/Makefile.

We can do better by properly generate the dependency from the list of
files but that's an improvement for later.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
Andrew Cooper authored and Wei Liu committed 2018-01-16 18:34:04 +00:00
1 parent 6d101e6be5
commit 4ee1b6eb8a
5 files changed
+172 -3

No files matched your search

+4
View File
@@ -155,6 +155,10 @@ tools/firmware/rombios/rombios[^/]*.s
tools/firmware/rombios/32bit/32bitbios_flat.h
tools/firmware/vgabios/vbetables-gen
tools/firmware/vgabios/vbetables.h
tools/firmware/xen-dir/*.old
tools/firmware/xen-dir/linkfarm.stamp*
tools/firmware/xen-dir/xen-root
tools/firmware/xen-dir/xen-shim
tools/flask/utils/flask-getenforce
tools/flask/utils/flask-get-bool
tools/flask/utils/flask-loadpolicy
+9
View File
@@ -1,6 +1,8 @@
XEN_ROOT = $(CURDIR)/../..
include $(XEN_ROOT)/tools/Rules.mk
CONFIG_PV_SHIM := y
# hvmloader is a 32-bit protected mode binary.
TARGET := hvmloader/hvmloader
INST_DIR := $(DESTDIR)$(XENFIRMWAREDIR)
@@ -11,6 +13,7 @@ SUBDIRS-$(CONFIG_SEABIOS) += seabios-dir
SUBDIRS-$(CONFIG_ROMBIOS) += rombios
SUBDIRS-$(CONFIG_ROMBIOS) += vgabios
SUBDIRS-$(CONFIG_ROMBIOS) += etherboot
SUBDIRS-$(CONFIG_PV_SHIM) += xen-dir
SUBDIRS-y += hvmloader
LD32BIT-$(CONFIG_FreeBSD) := LD32BIT_FLAG=-melf_i386_fbsd
@@ -48,6 +51,9 @@ endif
ifeq ($(CONFIG_OVMF),y)
$(INSTALL_DATA) ovmf-dir/ovmf.bin $(INST_DIR)/ovmf.bin
endif
ifeq ($(CONFIG_PV_SHIM),y)
$(INSTALL_DATA) xen-dir/xen-shim $(INST_DIR)/xen-shim
endif
.PHONY: uninstall
uninstall:
@@ -58,6 +64,9 @@ endif
ifeq ($(CONFIG_OVMF),y)
rm -f $(INST_DIR)/ovmf.bin
endif
ifeq ($(CONFIG_PV_SHIM),y)
rm -f $(INST_DIR)/xen-shim
endif
.PHONY: clean
clean: subdirs-clean
+59
View File
@@ -0,0 +1,59 @@
XEN_ROOT = $(CURDIR)/../../..
all: xen-shim
.PHONY: FORCE
FORCE:
D=xen-root
# Minimun set of files / directories go get Xen to build
LINK_DIRS=config xen
LINK_FILES=Config.mk
DEP_DIRS=$(foreach i, $(LINK_DIRS), $(XEN_ROOT)/$(i))
DEP_FILES=$(foreach i, $(LINK_FILES), $(XEN_ROOT)/$(i))
linkfarm.stamp: $(DEP_DIRS) $(DEP_FILES) FORCE
mkdir -p $(D)
set -e
rm -f linkfarm.stamp.tmp
$(foreach d, $(LINK_DIRS), \
(mkdir -p $(D)/$(d); \
cd $(D)/$(d); \
find $(XEN_ROOT)/$(d)/ -type d -printf "./%P\n" | xargs mkdir -p);)
$(foreach d, $(LINK_DIRS), \
(cd $(XEN_ROOT); \
find $(d) ! -type l -type f \
$(addprefix ! -path , '*.[oda1]' '*.d[12]')) \
>> linkfarm.stamp.tmp ; )
$(foreach f, $(LINK_FILES), \
echo $(f) >> linkfarm.stamp.tmp ;)
cmp -s linkfarm.stamp.tmp linkfarm.stamp && \
rm linkfarm.stamp.tmp || { \
mv linkfarm.stamp.tmp linkfarm.stamp; \
cat linkfarm.stamp | while read f; \
do rm -f "$(D)/$$f"; ln -s "$(XEN_ROOT)/$$f" "$(D)/$$f"; done \
}
# Copy enough of the tree to build the shim hypervisor
$(D): linkfarm.stamp
$(MAKE) -C $(D)/xen distclean
.PHONY: shim-%config
shim-%config: $(D) FORCE
$(MAKE) -C $(D)/xen $*config \
XEN_CONFIG_EXPERT=y \
KCONFIG_CONFIG=$(CURDIR)/shim.config
xen-shim: $(D) shim-olddefconfig
$(MAKE) -C $(D)/xen install-shim \
XEN_CONFIG_EXPERT=y \
KCONFIG_CONFIG=$(CURDIR)/shim.config \
DESTDIR=$(CURDIR)
.PHONY: distclean clean
distclean clean:
rm -f xen-shim *.old
rm -rf $(D)
rm -f linkfarm.stamp*
+87
View File
@@ -0,0 +1,87 @@
#
# Automatically generated file; DO NOT EDIT.
# Xen/x86 4.11-unstable Configuration
#
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
#
# Architecture Features
#
CONFIG_NR_CPUS=32
CONFIG_PV=y
CONFIG_PV_LINEAR_PT=y
CONFIG_HVM=y
# CONFIG_SHADOW_PAGING is not set
# CONFIG_BIGMEM is not set
# CONFIG_HVM_FEP is not set
# CONFIG_TBOOT is not set
CONFIG_XEN_GUEST=y
CONFIG_PVH_GUEST=y
CONFIG_PV_SHIM=y
CONFIG_PV_SHIM_EXCLUSIVE=y
#
# Common Features
#
CONFIG_COMPAT=y
CONFIG_CORE_PARKING=y
CONFIG_HAS_ALTERNATIVE=y
CONFIG_HAS_EX_TABLE=y
CONFIG_HAS_MEM_ACCESS=y
CONFIG_HAS_MEM_PAGING=y
CONFIG_HAS_MEM_SHARING=y
CONFIG_HAS_PDX=y
CONFIG_HAS_UBSAN=y
CONFIG_HAS_KEXEC=y
CONFIG_HAS_GDBSX=y
CONFIG_HAS_IOPORTS=y
# CONFIG_KEXEC is not set
# CONFIG_TMEM is not set
# CONFIG_XENOPROF is not set
# CONFIG_XSM is not set
#
# Schedulers
#
CONFIG_SCHED_CREDIT=y
# CONFIG_SCHED_CREDIT2 is not set
# CONFIG_SCHED_RTDS is not set
# CONFIG_SCHED_ARINC653 is not set
CONFIG_SCHED_NULL=y
# CONFIG_SCHED_CREDIT_DEFAULT is not set
CONFIG_SCHED_NULL_DEFAULT=y
CONFIG_SCHED_DEFAULT="null"
# CONFIG_LIVEPATCH is not set
# CONFIG_SUPPRESS_DUPLICATE_SYMBOL_WARNINGS is not set
CONFIG_CMDLINE=""
#
# Device Drivers
#
CONFIG_ACPI=y
CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
CONFIG_NUMA=y
CONFIG_HAS_NS16550=y
CONFIG_HAS_EHCI=y
CONFIG_HAS_CPUFREQ=y
CONFIG_HAS_PASSTHROUGH=y
CONFIG_HAS_PCI=y
CONFIG_VIDEO=y
CONFIG_VGA=y
CONFIG_DEFCONFIG_LIST="$ARCH_DEFCONFIG"
CONFIG_ARCH_SUPPORTS_INT128=y
#
# Debugging Options
#
# CONFIG_DEBUG is not set
# CONFIG_CRASH_DEBUG is not set
# CONFIG_FRAME_POINTER is not set
# CONFIG_GCOV is not set
# CONFIG_LOCK_PROFILE is not set
# CONFIG_PERF_COUNTERS is not set
# CONFIG_VERBOSE_DEBUG is not set
# CONFIG_SCRUB_DEBUG is not set
# CONFIG_UBSAN is not set
+13 -3
View File
@@ -37,10 +37,10 @@ default: build
.PHONY: dist
dist: install
build install:: include/config/auto.conf
build install build-shim:: include/config/auto.conf
.PHONY: build install uninstall clean distclean cscope TAGS tags MAP gtags tests
build install uninstall debug clean distclean cscope TAGS tags MAP gtags tests::
.PHONY: build install uninstall clean distclean cscope TAGS tags MAP gtags tests install-shim build-shim
build install uninstall debug clean distclean cscope TAGS tags MAP gtags tests install-shim build-shim::
ifneq ($(XEN_TARGET_ARCH),x86_32)
$(MAKE) -f Rules.mk _$@
else
@@ -80,6 +80,13 @@ _install: $(TARGET)$(CONFIG_XEN_INSTALL_SUFFIX)
fi; \
fi
.PHONY: _build-shim
_build-shim: $(TARGET)-shim
.PHONY: _install-shim
_install-shim: build-shim
$(INSTALL_DATA) $(TARGET)-shim $(DESTDIR)
.PHONY: _tests
_tests:
$(MAKE) -f $(BASEDIR)/Rules.mk -C test tests
@@ -144,6 +151,9 @@ $(TARGET): delete-unfresh-files
$(MAKE) -f $(BASEDIR)/Rules.mk include/asm-$(TARGET_ARCH)/asm-offsets.h
$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) $(TARGET)
$(TARGET)-shim: $(TARGET)
$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) $(TARGET)-shim
# drivers/char/console.o contains static banner/compile info. Blow it away.
# Don't refresh these files during e.g., 'sudo make install'
.PHONY: delete-unfresh-files
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.