1subdir-$(CONFIG_ARM_32) += arm32 2subdir-$(CONFIG_ARM_64) += arm64 3subdir-y += platforms 4subdir-$(CONFIG_ARM_64) += efi 5subdir-$(CONFIG_ACPI) += acpi 6 7obj-$(CONFIG_HAS_ALTERNATIVE) += alternative.o 8obj-y += bootfdt.init.o 9obj-y += cpu.o 10obj-y += cpuerrata.o 11obj-y += cpufeature.o 12obj-y += decode.o 13obj-y += device.o 14obj-y += domain.o 15obj-y += domain_build.o 16obj-y += domctl.o 17obj-$(EARLY_PRINTK) += early_printk.o 18obj-y += gic.o 19obj-y += gic-v2.o 20obj-$(CONFIG_HAS_GICV3) += gic-v3.o 21obj-$(CONFIG_HAS_ITS) += gic-v3-its.o 22obj-$(CONFIG_HAS_ITS) += gic-v3-lpi.o 23obj-y += guestcopy.o 24obj-y += guest_walk.o 25obj-y += hvm.o 26obj-y += io.o 27obj-y += irq.o 28obj-y += kernel.o 29obj-$(CONFIG_LIVEPATCH) += livepatch.o 30obj-y += mem_access.o 31obj-y += mm.o 32obj-y += monitor.o 33obj-y += p2m.o 34obj-y += percpu.o 35obj-y += platform.o 36obj-y += platform_hypercall.o 37obj-y += physdev.o 38obj-y += processor.o 39obj-y += psci.o 40obj-y += setup.o 41obj-y += shutdown.o 42obj-y += smc.o 43obj-y += smp.o 44obj-y += smpboot.o 45obj-y += sysctl.o 46obj-y += time.o 47obj-y += traps.o 48obj-y += vcpreg.o 49obj-y += vgic.o 50obj-y += vgic-v2.o 51obj-$(CONFIG_HAS_GICV3) += vgic-v3.o 52obj-$(CONFIG_HAS_ITS) += vgic-v3-its.o 53obj-y += vm_event.o 54obj-y += vtimer.o 55obj-$(CONFIG_SBSA_VUART_CONSOLE) += vpl011.o 56obj-y += vsmc.o 57obj-y += vpsci.o 58obj-y += vuart.o 59 60#obj-bin-y += ....o 61 62ifdef CONFIG_DTB_FILE 63obj-y += dtb.o 64AFLAGS += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\" 65endif 66 67ALL_OBJS := $(TARGET_SUBARCH)/head.o $(ALL_OBJS) 68 69DEPS += $(TARGET_SUBARCH)/.head.o.d 70 71ifdef CONFIG_LIVEPATCH 72all_symbols = --all-symbols 73ifdef CONFIG_FAST_SYMBOL_LOOKUP 74all_symbols = --all-symbols --sort-by-name 75endif 76else 77all_symbols = 78endif 79 80$(TARGET): $(TARGET)-syms 81 $(OBJCOPY) -O binary -S $< $@ 82ifeq ($(CONFIG_ARM_64),y) 83 ln -sf $(notdir $@) ../../$(notdir $@).efi 84endif 85 86ifeq ($(CONFIG_LTO),y) 87# Gather all LTO objects together 88prelink_lto.o: $(ALL_OBJS) 89 $(LD_LTO) -r -o $@ $^ 90 91# Link it with all the binary objects 92prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o 93 $(LD) $(LDFLAGS) -r -o $@ $^ 94else 95prelink.o: $(ALL_OBJS) 96 $(LD) $(LDFLAGS) -r -o $@ $^ 97endif 98 99$(BASEDIR)/common/symbols-dummy.o: 100 $(MAKE) -f $(BASEDIR)/Rules.mk -C $(BASEDIR)/common symbols-dummy.o 101 102$(TARGET)-syms: prelink.o xen.lds $(BASEDIR)/common/symbols-dummy.o 103 $(LD) $(LDFLAGS) -T xen.lds -N prelink.o \ 104 $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0 105 $(NM) -pa --format=sysv $(@D)/.$(@F).0 \ 106 | $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).0.S 107 $(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o 108 $(LD) $(LDFLAGS) -T xen.lds -N prelink.o \ 109 $(@D)/.$(@F).0.o -o $(@D)/.$(@F).1 110 $(NM) -pa --format=sysv $(@D)/.$(@F).1 \ 111 | $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).1.S 112 $(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o 113 $(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \ 114 $(@D)/.$(@F).1.o -o $@ 115 $(NM) -pa --format=sysv $(@D)/$(@F) \ 116 | $(BASEDIR)/tools/symbols --xensyms --sysv --sort \ 117 >$(@D)/$(@F).map 118 rm -f $(@D)/.$(@F).[0-9]* 119 120asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c 121 $(CC) $(filter-out -flto,$(CFLAGS)) -S -o $@ $< 122 123xen.lds: xen.lds.S 124 $(CC) -P -E -Ui386 $(AFLAGS) -o $@ $< 125 sed -e 's/xen\.lds\.o:/xen\.lds:/g' <.xen.lds.d >.xen.lds.d.new 126 mv -f .xen.lds.d.new .xen.lds.d 127 128dtb.o: $(CONFIG_DTB_FILE) 129 130.PHONY: clean 131clean:: 132 rm -f asm-offsets.s xen.lds 133 rm -f $(BASEDIR)/.xen-syms.[0-9]* 134 rm -f $(TARGET).efi 135