blob: 24c0c12625ae9858d7e4af90ac3f0c101dc26cab (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
subdir-$(arm32) += arm32
obj-y += dummy.o
obj-y += early_printk.o
obj-y += domain.o
obj-y += domctl.o
obj-y += sysctl.o
obj-y += domain_build.o
obj-y += gic.o
obj-y += io.o
obj-y += irq.o
obj-y += kernel.o
obj-y += mm.o
obj-y += p2m.o
obj-y += percpu.o
obj-y += guestcopy.o
obj-y += physdev.o
obj-y += setup.o
obj-y += time.o
obj-y += smpboot.o
obj-y += smp.o
obj-y += shutdown.o
obj-y += traps.o
obj-y += vgic.o
obj-y += vtimer.o
obj-y += vpl011.o
obj-y += hvm.o
#obj-bin-y += ....o
ifdef CONFIG_DTB_FILE
obj-y += dtb.o
AFLAGS += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\"
endif
ALL_OBJS := $(TARGET_SUBARCH)/head.o $(ALL_OBJS)
$(TARGET): $(TARGET)-syms $(TARGET).bin
# XXX: VE model loads by VMA so instead of
# making a proper ELF we link with LMA == VMA and adjust crudely
$(OBJCOPY) --change-addresses +0x80000000 $< $@
$(STRIP) $@
#
$(TARGET).bin: $(TARGET)-syms
$(OBJCOPY) -O binary -S $< $@
#$(TARGET): $(TARGET)-syms $(efi-y) boot/mkelf32
# ./boot/mkelf32 $(TARGET)-syms $(TARGET) 0x100000 \
# `$(NM) -nr $(TARGET)-syms | head -n 1 | sed -e 's/^\([^ ]*\).*/0x\1/'`
ifeq ($(lto),y)
# Gather all LTO objects together
prelink_lto.o: $(ALL_OBJS)
$(LD_LTO) -r -o $@ $^
# Link it with all the binary objects
prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
$(LD) $(LDFLAGS) -r -o $@ $^
else
prelink.o: $(ALL_OBJS)
$(LD) $(LDFLAGS) -r -o $@ $^
endif
$(BASEDIR)/common/symbols-dummy.o:
$(MAKE) -f $(BASEDIR)/Rules.mk -C $(BASEDIR)/common symbols-dummy.o
$(TARGET)-syms: prelink.o xen.lds $(BASEDIR)/common/symbols-dummy.o
$(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
$(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
$(NM) -n $(@D)/.$(@F).0 | $(BASEDIR)/tools/symbols >$(@D)/.$(@F).0.S
$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
$(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
$(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
$(NM) -n $(@D)/.$(@F).1 | $(BASEDIR)/tools/symbols >$(@D)/.$(@F).1.S
$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
$(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
$(@D)/.$(@F).1.o -o $@
rm -f $(@D)/.$(@F).[0-9]*
asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c
$(CC) $(filter-out -flto,$(CFLAGS)) -S -o $@ $<
xen.lds: xen.lds.S
$(CC) -P -E -Ui386 $(AFLAGS) -DXEN_PHYS_START=$(CONFIG_LOAD_ADDRESS) -o $@ $<
sed -e 's/xen\.lds\.o:/xen\.lds:/g' <.xen.lds.d >.xen.lds.d.new
mv -f .xen.lds.d.new .xen.lds.d
dtb.o: $(CONFIG_DTB_FILE)
.PHONY: clean
clean::
rm -f asm-offsets.s xen.lds
rm -f $(BASEDIR)/.xen-syms.[0-9]*
|