[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] build: stubdom and tools should depend on public header target

commit f745b55f137c9c086552dc7463ba2cefccab8292
Author:     Wei Liu <wei.liu2@xxxxxxxxxx>
AuthorDate: Wed May 17 15:26:08 2017 +0100
Commit:     Wei Liu <wei.liu2@xxxxxxxxxx>
CommitDate: Thu May 18 10:53:17 2017 +0100

    build: stubdom and tools should depend on public header target
    Build can fail if stubdom build is run before tools build because:
    1. tools/include build uses relative path and depends on XEN_OS
    2. stubdom needs tools/include to be built, at which time XEN_OS is
       mini-os and corresponding symlinks are created
    3. libraries inside tools needs tools/include to be built, at which
       time XEN_OS is the host os name, but symlinks won't be created
       because they are already there
    4. libraries get the wrong headers and fail to build
    Since both tools and stubdom build need the public headers, we build
    tools/include before stubdom and tools. Remove runes in stubdom and
    tools to avoid building tools/include more than once.
    Provide a new dist target for tools/include.  Hook up the install,
    clean, dist and distclean targets for tools/include.
    The new arrangement ensures tools build gets the correct headers
    because XEN_OS is set to host os when building tools/include. As for
    stubdom, it explicitly links to the mini-os directory without relying
    on XEN_OS so it should be fine.
    Reported-by: Steven Haigh <netwiz@xxxxxxxxx>
    Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
    Tested-by: Steven Haigh <netwiz@xxxxxxxxx>
    Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
    Release-acked-by: Julien Grall <julien.grall@xxxxxxx>
    Acked-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
 Makefile               | 14 +++++++++++---
 stubdom/Makefile       |  1 -
 tools/Makefile         |  3 +--
 tools/include/Makefile |  2 ++
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 084588e..3e1e065 100644
--- a/Makefile
+++ b/Makefile
@@ -38,9 +38,14 @@ mini-os-dir-force-update: mini-os-dir
 export DESTDIR
+.PHONY: build-tools-public-headers
+       $(MAKE) -C tools/include
 # build and install everything into the standard system directories
 .PHONY: install
 install: $(TARGS_INSTALL)
+       $(MAKE) -C tools/include install
 .PHONY: build
 build: $(TARGS_BUILD)
@@ -50,11 +55,11 @@ build-xen:
        $(MAKE) -C xen build
 .PHONY: build-tools
+build-tools: build-tools-public-headers
        $(MAKE) -C tools build
 .PHONY: build-stubdom
-build-stubdom: mini-os-dir
+build-stubdom: mini-os-dir build-tools-public-headers
        $(MAKE) -C stubdom build
 ifeq (x86_64,$(XEN_TARGET_ARCH))
        XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom pv-grub
@@ -75,6 +80,7 @@ test:
 .PHONY: dist
 dist: DESTDIR=$(DISTDIR)/install
 dist: $(TARGS_DIST) dist-misc
+       make -C tools/include dist
        $(INSTALL_DIR) $(DISTDIR)/
@@ -101,7 +107,7 @@ install-tools:
        $(MAKE) -C tools install
 .PHONY: install-stubdom
-install-stubdom: mini-os-dir
+install-stubdom: mini-os-dir build-tools-public-headers
        $(MAKE) -C stubdom install
 ifeq (x86_64,$(XEN_TARGET_ARCH))
        XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom install-grub
@@ -168,6 +174,7 @@ src-tarball: subtree-force-update-all
 .PHONY: clean
 clean: $(TARGS_CLEAN)
+       $(MAKE) -C tools/include clean
 .PHONY: clean-xen
@@ -191,6 +198,7 @@ clean-docs:
 # clean, but blow away tarballs
 .PHONY: distclean
 distclean: $(TARGS_DISTCLEAN)
+       $(MAKE) -C tools/include distclean
        rm -f config/Toplevel.mk
        rm -rf dist
        rm -rf config.log config.status config.cache autom4te.cache
diff --git a/stubdom/Makefile b/stubdom/Makefile
index aef705d..db01827 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -355,7 +355,6 @@ LINK_DIRS := libxc-$(XEN_TARGET_ARCH) xenstore $(foreach 
 LINK_STAMPS := $(foreach dir,$(LINK_DIRS),$(dir)/stamp)
-       $(MAKE) -C $(XEN_ROOT)/tools/include
        mkdir -p include/xen && \
           ln -sf $(wildcard $(XEN_ROOT)/xen/include/public/*.h) include/xen && 
           ln -sf $(addprefix $(XEN_ROOT)/xen/include/public/,arch-x86 hvm io 
xsm) include/xen && \
diff --git a/tools/Makefile b/tools/Makefile
index 1396d95..496428e 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -5,7 +5,6 @@ export PKG_CONFIG_DIR = $(CURDIR)/pkg-config
 include $(XEN_ROOT)/tools/Rules.mk
-SUBDIRS-y += include
 SUBDIRS-y += libs
 SUBDIRS-y += libxc
 SUBDIRS-y += flask
@@ -50,7 +49,7 @@ SUBDIRS-$(OCAML_TOOLS) += ocaml
 ifeq ($(CONFIG_RUMP),y)
-SUBDIRS-y := include libxc xenstore
+SUBDIRS-y := libxc xenstore
 # For the sake of linking, set the sys-root
diff --git a/tools/include/Makefile b/tools/include/Makefile
index f1af91c..98b479f 100644
--- a/tools/include/Makefile
+++ b/tools/include/Makefile
@@ -63,6 +63,8 @@ clean:
        rm -rf xen xen-xsm acpi
        $(MAKE) -C xen-foreign clean
+.PHONY: dist
+dist: install
 .PHONY: distclean
 distclean: clean
generated by git-patchbot for /home/xen/git/xen.git#master

Xen-changelog mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.