All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target
@ 2017-05-17 14:26 Wei Liu
  2017-05-17 15:16 ` Steven Haigh
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Wei Liu @ 2017-05-17 14:26 UTC (permalink / raw)
  To: Xen-devel
  Cc: Steven Haigh, Julien Grall, Wei Liu, Ian Jackson, Samuel Thibault

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 fine.

Reported-by: Steven Haigh <netwiz@crc.id.au>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
Cc: Steven Haigh <netwiz@crc.id.au>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: Julien Grall <Julien.Grall@arm.com>
---
 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 084588e11e..3e1e065537 100644
--- a/Makefile
+++ b/Makefile
@@ -38,9 +38,14 @@ mini-os-dir-force-update: mini-os-dir
 export XEN_TARGET_ARCH
 export DESTDIR
 
+.PHONY: build-tools-public-headers
+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: 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
 
 dist-misc:
 	$(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
 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 aef705dd1e..db01827070 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -355,7 +355,6 @@ LINK_DIRS := libxc-$(XEN_TARGET_ARCH) xenstore $(foreach dir,$(LINK_LIBS_DIRS),l
 LINK_STAMPS := $(foreach dir,$(LINK_DIRS),$(dir)/stamp)
 
 mk-headers-$(XEN_TARGET_ARCH): $(IOEMU_LINKFARM_TARGET) $(LINK_STAMPS)
-	$(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 1396d95b50..496428e3a9 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 :=
-SUBDIRS-y += include
 SUBDIRS-y += libs
 SUBDIRS-y += libxc
 SUBDIRS-y += flask
@@ -50,7 +49,7 @@ SUBDIRS-$(OCAML_TOOLS) += ocaml
 endif
 
 ifeq ($(CONFIG_RUMP),y)
-SUBDIRS-y := include libxc xenstore
+SUBDIRS-y := libxc xenstore
 endif
 
 # For the sake of linking, set the sys-root
diff --git a/tools/include/Makefile b/tools/include/Makefile
index f1af91c129..98b479f6a3 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
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-05-17 21:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-17 14:26 [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target Wei Liu
2017-05-17 15:16 ` Steven Haigh
2017-05-17 15:21 ` Ian Jackson
2017-05-17 18:48 ` Julien Grall
2017-05-17 21:56 ` Samuel Thibault

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.