# hvmloader is a 32-bit protected mode binary.
TARGET := hvmloader/hvmloader
INST_DIR := $(DESTDIR)$(XENFIRMWAREDIR)
+DEBG_DIR := $(DESTDIR)$(DEBUG_DIR)$(XENFIRMWAREDIR)
SUBDIRS-y :=
SUBDIRS-$(CONFIG_OVMF) += ovmf-dir
.PHONY: install
install: all
[ -d $(INST_DIR) ] || $(INSTALL_DIR) $(INST_DIR)
+ [ -d $(DEBG_DIR) ] || $(INSTALL_DIR) $(DEBG_DIR)
[ ! -e $(TARGET) ] || $(INSTALL_DATA) $(TARGET) $(INST_DIR)
ifeq ($(CONFIG_SEABIOS),y)
$(INSTALL_DATA) seabios-dir/out/bios.bin $(INST_DIR)/seabios.bin
endif
ifeq ($(CONFIG_PV_SHIM),y)
$(INSTALL_DATA) xen-dir/xen-shim $(INST_DIR)/xen-shim
+ $(INSTALL_DATA) xen-dir/xen-shim-syms $(DEBG_DIR)/xen-shim-syms
endif
.PHONY: uninstall
endif
ifeq ($(CONFIG_PV_SHIM),y)
rm -f $(INST_DIR)/xen-shim
+ rm -f $(DEBG_DIR)/xen-shim-syms
endif
.PHONY: clean
KCONFIG_CONFIG=$(CURDIR)/shim.config
xen-shim: $(D) shim-olddefconfig
- $(MAKE) -C $(D)/xen install-shim \
+ $(MAKE) -C $(D)/xen build \
XEN_CONFIG_EXPERT=y \
- KCONFIG_CONFIG=$(CURDIR)/shim.config \
- DESTDIR=$(CURDIR)
+ KCONFIG_CONFIG=$(CURDIR)/shim.config
+ ln -sf $(D)/xen/xen $@
+ ln -sf $(D)/xen/xen-syms $@-syms
.PHONY: distclean clean
distclean clean:
- rm -f xen-shim *.old
+ rm -f xen-shim xen-shim-syms *.old
rm -rf $(D)
rm -f linkfarm.stamp*
.PHONY: dist
dist: install
-build install build-shim:: include/config/auto.conf
+build install:: include/config/auto.conf
-.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::
+.PHONY: build install uninstall clean distclean cscope TAGS tags MAP gtags tests
+build install uninstall debug clean distclean cscope TAGS tags MAP gtags tests::
ifneq ($(XEN_TARGET_ARCH),x86_32)
$(MAKE) -f Rules.mk _$@
else
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
gzip -n -f -9 < $< > $@.new
mv $@.new $@
-.PHONY: $(TARGET)-common
-$(TARGET)-common: delete-unfresh-files
+$(TARGET): delete-unfresh-files
$(MAKE) -C tools
$(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
[ -e include/asm ] || ln -sf asm-$(TARGET_ARCH) include/asm
$(MAKE) -f $(BASEDIR)/Rules.mk -C include
$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) asm-offsets.s
$(MAKE) -f $(BASEDIR)/Rules.mk include/asm-$(TARGET_ARCH)/asm-offsets.h
-
-$(TARGET) $(TARGET)-shim: $(TARGET)-common
$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) $@
# drivers/char/console.o contains static banner/compile info. Blow it away.
ifneq ($(build_id_linker),)
notes_phdrs = --notes
else
-notes_phdrs =
+ifeq ($(CONFIG_PVH_GUEST),y)
+notes_phdrs = --notes
+endif
endif
ifdef CONFIG_LIVEPATCH
>$(@D)/$(@F).map
rm -f $(@D)/.$(@F).[0-9]*
-# Use elf32-x86-64 if toolchain support exists, elf32-i386 otherwise.
-$(TARGET)-shim: FORMAT = $(firstword $(filter elf32-x86-64,$(shell $(OBJCOPY) --help)) elf32-i386)
-$(TARGET)-shim: $(TARGET)-syms
- $(OBJCOPY) -O $(FORMAT) $< $@
-
note.o: $(TARGET)-syms
$(OBJCOPY) -O binary --only-section=.note.gnu.build-id $(BASEDIR)/xen-syms $@.bin
$(OBJCOPY) -I binary -O elf64-x86-64 -B i386:x86-64 \
rm -f asm-offsets.s *.lds boot/*.o boot/*~ boot/core boot/mkelf32
rm -f $(BASEDIR)/.xen-syms.[0-9]* boot/.*.d
rm -f $(BASEDIR)/.xen.efi.[0-9]* efi/*.efi efi/disabled efi/mkreloc
- rm -f $(BASEDIR)/xen-shim
rm -f boot/cmdline.S boot/reloc.S boot/*.lnk boot/*.bin
rm -f note.o