mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
stubdom: make the build more generic by moving as many stubdom parts
into stubdom/ as possible. That also permits to build all of ioemu, c and caml stubdoms at the same time. Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
This commit is contained in:
1 parent
4151cc56f1
commit
f9b4231a67
9 files changed
+48
-52
No files matched your search
@@ -55,11 +55,3 @@ DEF_CPPFLAGS += -DHAVE_LWIP
|
||||
DEF_CPPFLAGS += -I$(LWIPDIR)/src/include
|
||||
DEF_CPPFLAGS += -I$(LWIPDIR)/src/include/ipv4
|
||||
endif
|
||||
|
||||
ifneq ($(QEMUDIR),)
|
||||
qemu=y
|
||||
endif
|
||||
|
||||
ifneq ($(CAMLDIR),)
|
||||
caml=y
|
||||
endif
|
||||
+7
-26
@@ -73,44 +73,25 @@ lwip.a: $(LWO)
|
||||
OBJS += lwip.a
|
||||
endif
|
||||
|
||||
OBJS := $(filter-out lwip%.o $(LWO), $(OBJS))
|
||||
|
||||
ifeq ($(caml),y)
|
||||
CAMLLIB = $(shell ocamlc -where)
|
||||
APP_OBJS += main-caml.o
|
||||
APP_OBJS += $(CAMLDIR)/caml.o
|
||||
APP_OBJS += $(CAMLLIB)/libasmrun.a
|
||||
CFLAGS += -I$(CAMLLIB)
|
||||
APP_LDLIBS += -lm
|
||||
endif
|
||||
OBJS := $(filter-out main-caml.o, $(OBJS))
|
||||
|
||||
ifeq ($(qemu),y)
|
||||
APP_OBJS += $(QEMUDIR)/i386-dm-stubdom/qemu.a $(QEMUDIR)/i386-dm-stubdom/libqemu.a
|
||||
CFLAGS += -DCONFIG_QEMU
|
||||
endif
|
||||
|
||||
ifneq ($(CDIR),)
|
||||
APP_OBJS += $(CDIR)/main.a
|
||||
APP_LDLIBS +=
|
||||
endif
|
||||
OBJS := $(filter-out main.o lwip%.o $(LWO), $(OBJS))
|
||||
|
||||
ifeq ($(libc),y)
|
||||
APP_LDLIBS += -L$(XEN_ROOT)/stubdom/libxc -whole-archive -lxenguest -lxenctrl -no-whole-archive
|
||||
APP_LDLIBS += -lpci
|
||||
APP_LDLIBS += -lz
|
||||
APP_LDLIBS += -lm
|
||||
LDLIBS += -lc
|
||||
endif
|
||||
|
||||
ifneq ($(caml)-$(qemu)-$(CDIR)-$(lwip),---y)
|
||||
ifneq ($(APP_OBJS)-$(lwip),-y)
|
||||
OBJS := $(filter-out daytime.o, $(OBJS))
|
||||
endif
|
||||
|
||||
app.o: $(APP_OBJS) app.lds
|
||||
$(LD) -r -d $(LDFLAGS) $^ $(APP_LDLIBS) --undefined main -o $@
|
||||
$(TARGET)_app.o: $(APP_OBJS) app.lds
|
||||
$(LD) -r -d $(LDFLAGS) $^ $(APP_LDLIBS) --undefined app_main -o $@
|
||||
|
||||
$(TARGET): links $(OBJS) app.o arch_lib
|
||||
$(LD) -r $(LDFLAGS) $(HEAD_OBJ) app.o $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o
|
||||
$(TARGET): links $(OBJS) $(TARGET)_app.o arch_lib
|
||||
$(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(TARGET)_app.o $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o
|
||||
$(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
|
||||
$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@
|
||||
gzip -f -9 -c $@ >$@.gz
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
* Samuel Thibault <Samuel.Thibault@eu.citrix.net>, October 2007
|
||||
*/
|
||||
|
||||
#ifdef HAVE_LIBC
|
||||
#include <os.h>
|
||||
#include <sched.h>
|
||||
#include <console.h>
|
||||
@@ -180,4 +179,3 @@ int app_main(start_info_t *si)
|
||||
main_thread = create_thread("main", call_main, si);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
+17
-14
@@ -37,7 +37,7 @@ export CROSS_COMPILE=$(GNU_TARGET_ARCH)-xen-elf-
|
||||
export PATH:=$(CROSS_PREFIX)/bin:$(PATH)
|
||||
|
||||
.PHONY: all
|
||||
all: qemu-stubdom
|
||||
all: ioemu-stubdom c-stubdom
|
||||
|
||||
################
|
||||
# Cross-binutils
|
||||
@@ -174,6 +174,7 @@ mk-symlinks:
|
||||
([ ! -h config-host.h ] || rm -f config-host.h) && \
|
||||
([ ! -h config-host.mak ] || rm -f config-host.mak) )
|
||||
[ -h mini-os ] || ln -sf ../extras/mini-os .
|
||||
[ -h mini-os/include/xen ] || ln -sf ../../../xen/include/public mini-os/include/xen
|
||||
|
||||
#######
|
||||
# libxc
|
||||
@@ -198,40 +199,41 @@ ioemu: cross-zlib cross-libpci mk-symlinks libxc
|
||||
######
|
||||
|
||||
.PHONY: caml
|
||||
caml:
|
||||
$(MAKE) -C $@
|
||||
caml: mk-symlinks
|
||||
$(MAKE) -C $@ LWIPDIR=$(CURDIR)/lwip-cvs
|
||||
|
||||
###
|
||||
# C
|
||||
###
|
||||
|
||||
.PHONY: c
|
||||
c:
|
||||
$(MAKE) -C $@
|
||||
c: mk-symlinks
|
||||
$(MAKE) -C $@ LWIPDIR=$(CURDIR)/lwip-cvs
|
||||
|
||||
########
|
||||
# minios
|
||||
########
|
||||
|
||||
.PHONY: qemu-stubdom
|
||||
qemu-stubdom: mk-symlinks lwip-cvs libxc ioemu
|
||||
$(MAKE) -C mini-os LWIPDIR=$(CURDIR)/lwip-cvs QEMUDIR=$(CURDIR)/ioemu
|
||||
.PHONY: ioemu-stubdom
|
||||
ioemu-stubdom: lwip-cvs libxc ioemu
|
||||
$(MAKE) -C mini-os TARGET=$@ LWIPDIR=$(CURDIR)/lwip-cvs APP_OBJS="$(CURDIR)/ioemu/i386-dm-stubdom/qemu.a $(CURDIR)/ioemu/i386-dm-stubdom/libqemu.a"
|
||||
|
||||
CAMLLIB = $(shell ocamlc -where)
|
||||
.PHONY: caml-stubdom
|
||||
caml-stubdom: mk-symlinks lwip-cvs libxc cross-libpci caml
|
||||
$(MAKE) -C mini-os LWIPDIR=$(CURDIR)/lwip-cvs CAMLDIR=$(CURDIR)/caml
|
||||
caml-stubdom: lwip-cvs libxc caml
|
||||
$(MAKE) -C mini-os TARGET=$@ LWIPDIR=$(CURDIR)/lwip-cvs APP_OBJS="$(CURDIR)/caml/main-c.o $(CURDIR)/caml/main-caml.o $(CURDIR)/caml/caml.o $(CAMLLIB)/libasmrun.a"
|
||||
|
||||
.PHONY: c-stubdom
|
||||
c-stubdom: mk-symlinks lwip-cvs libxc cross-libpci c
|
||||
$(MAKE) -C mini-os LWIPDIR=$(CURDIR)/lwip-cvs CDIR=$(CURDIR)/c
|
||||
c-stubdom: lwip-cvs libxc c
|
||||
$(MAKE) -C mini-os TARGET=$@ LWIPDIR=$(CURDIR)/lwip-cvs APP_OBJS=$(CURDIR)/c/main.a
|
||||
|
||||
#########
|
||||
# install
|
||||
#########
|
||||
|
||||
install: mini-os/mini-os.gz
|
||||
install: mini-os/ioemu-stubdom.gz
|
||||
$(INSTALL_PROG) stubdom-dm "$(DESTDIR)/usr/lib/xen/bin"
|
||||
$(INSTALL_PROG) mini-os/mini-os.gz "$(DESTDIR)/usr/lib/xen/boot/stubdom.gz"
|
||||
$(INSTALL_PROG) $< "$(DESTDIR)/usr/lib/xen/boot/stubdom.gz"
|
||||
|
||||
#######
|
||||
# clean
|
||||
@@ -242,6 +244,7 @@ install: mini-os/mini-os.gz
|
||||
clean:
|
||||
-$(MAKE) -C mini-os LWIPDIR=$(CURDIR)/lwip-cvs clean
|
||||
$(MAKE) -C caml clean
|
||||
$(MAKE) -C c clean
|
||||
rm -fr libxc ioemu mini-os include
|
||||
|
||||
# clean the cross-compilation result
|
||||
|
||||
+6
-1
@@ -2,7 +2,12 @@ XEN_ROOT = ../..
|
||||
|
||||
include $(XEN_ROOT)/Config.mk
|
||||
|
||||
main.a: main.o
|
||||
all: main.a
|
||||
|
||||
main-c.c:
|
||||
ln -sf $(XEN_ROOT)/extras/mini-os/main.c $@
|
||||
|
||||
main.a: main-c.o main.o
|
||||
$(AR) cr $@ $^
|
||||
|
||||
clean:
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int main(void) {
|
||||
sleep(2);
|
||||
printf("Hello, world!\n");
|
||||
|
||||
@@ -2,12 +2,20 @@ XEN_ROOT = ../..
|
||||
|
||||
include $(XEN_ROOT)/Config.mk
|
||||
|
||||
CAMLLIB = $(shell ocamlc -where)
|
||||
DEF_CPPFLAGS += -I$(CAMLLIB)
|
||||
|
||||
OCAMLFIND=ocamlfind
|
||||
OCAMLOPT=ocamlopt
|
||||
|
||||
OBJS := hello.cmx
|
||||
LIBS :=
|
||||
|
||||
all: main-c.o main-caml.o caml.o
|
||||
|
||||
main-c.c:
|
||||
ln -sf $(XEN_ROOT)/extras/mini-os/main.c $@
|
||||
|
||||
%.cmx: %.ml
|
||||
$(OCAMLFIND) $(OCAMLOPT) -c $< -o $@
|
||||
|
||||
@@ -15,4 +23,4 @@ caml.o: $(OBJS)
|
||||
$(OCAMLFIND) $(OCAMLOPT) $(LIBS) $^ -output-obj -o $@
|
||||
|
||||
clean:
|
||||
rm -f *.o *.cmx *.cmi
|
||||
rm -f *.a *.o *.cmx *.cmi
|
||||
File renamed without changes.
@@ -357,6 +357,13 @@ ifdef CONFIG_WIN32
|
||||
VL_OBJS+=tap-win32.o
|
||||
endif
|
||||
|
||||
ifdef CONFIG_STUBDOM
|
||||
VL_OBJS+=main-qemu.o
|
||||
CFLAGS += -DCONFIG_QEMU
|
||||
main-qemu.c:
|
||||
ln -s $(XEN_ROOT)/extras/mini-os/main.c $@
|
||||
endif
|
||||
|
||||
ifdef CONFIG_STUBDOM
|
||||
#CONFIG_PASSTHROUGH=1
|
||||
else
|
||||
|
||||