mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
[MINIOS] Clean up final link stage of the build.
Allow extra application objects to be linked against a partial link of minios with non-global names localised. For now we assume that global names ill be assigned a xenos_ prefix in due course. We may decide to choose a different prefix. Those who wish to finish the link from an external Makefile can link their own objects against mini-os.o (which must be first in link order!) and specify the appropriate architecture linker script. Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
1 parent
29bbe50b23
commit
f28756a627
2 files changed
+14
-10
No files matched your search
@@ -58,7 +58,7 @@
|
||||
^docs/xen-api/xenapi-datamodel-graph.eps$
|
||||
^extras/mini-os/h/hypervisor-ifs$
|
||||
^extras/mini-os/h/xen-public$
|
||||
^extras/mini-os/mini-os\..*$
|
||||
^extras/mini-os/mini-os.*$
|
||||
^install/.*$
|
||||
^linux-[^/]*-native/.*$
|
||||
^linux-[^/]*-xen/.*$
|
||||
|
||||
+13
-9
@@ -17,7 +17,13 @@ CFLAGS += -D__XEN_INTERFACE_VERSION__=$(XEN_INTERFACE_VERSION)
|
||||
ASFLAGS = -D__ASSEMBLY__
|
||||
|
||||
LDLIBS = -L. -lminios
|
||||
LDFLAGS := -N -T minios-$(TARGET_ARCH).lds
|
||||
LDFLAGS_FINAL := -N -T minios-$(TARGET_ARCH).lds
|
||||
LDFLAGS :=
|
||||
|
||||
# Prefix for global API names. All other symbols are localised before
|
||||
# linking with EXTRA_OBJS.
|
||||
GLOBAL_PREFIX := xenos_
|
||||
EXTRA_OBJS =
|
||||
|
||||
# For possible special source directories.
|
||||
EXTRA_SRC =
|
||||
@@ -110,18 +116,16 @@ endif
|
||||
links: $(ARCH_LINKS)
|
||||
[ -e include/xen ] || ln -sf ../../../xen/include/public include/xen
|
||||
|
||||
libminios.a: links $(OBJS) $(HEAD)
|
||||
$(AR) r libminios.a $(HEAD) $(OBJS)
|
||||
|
||||
$(TARGET): libminios.a $(HEAD)
|
||||
$(LD) $(LDFLAGS) $(HEAD) $(LDLIBS) -o $@.elf
|
||||
gzip -f -9 -c $@.elf >$@.gz
|
||||
$(TARGET): links $(OBJS) $(HEAD)
|
||||
$(LD) -r $(LDFLAGS) $(HEAD) $(OBJS) -o $@.o
|
||||
$(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
|
||||
$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@
|
||||
gzip -f -9 -c $@ >$@.gz
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
find . -type f -name '*.o' | xargs rm -f
|
||||
rm -f *.o *~ core $(TARGET).elf $(TARGET).raw $(TARGET) $(TARGET).gz
|
||||
rm -f libminios.a
|
||||
rm -f *.o *~ core $(TARGET) $(TARGET).gz
|
||||
find . -type l | xargs rm -f
|
||||
rm -f tags TAGS
|
||||
|
||||
|
||||