Message ID | 1367536673-26300-1-git-send-email-julien.grall@linaro.org |
---|---|
State | Rejected |
Headers | show |
>>> On 03.05.13 at 01:17, Julien Grall <julien.grall@linaro.org> wrote: > The commit 3378685 "Add conditional build of subsystems to configure.ac" > allows the user to disable/enable some components of Xen. After this commit > some targets are still called on every subsystems. For build this is correct to do, but for any clean target it isn't - clean should remove leftovers from earlier builds even if there was an intermediate reconfigure. > For Xen on ARM, the makefile targets build, clean and distclean will failed. If they fail, this will need fixing elsewhere then. Jan
On Fri, 2013-05-03 at 08:15 +0100, Jan Beulich wrote: > >>> On 03.05.13 at 01:17, Julien Grall <julien.grall@linaro.org> wrote: > > The commit 3378685 "Add conditional build of subsystems to configure.ac" > > allows the user to disable/enable some components of Xen. After this commit > > some targets are still called on every subsystems. > > For build this is correct to do, but for any clean target it isn't - clean > should remove leftovers from earlier builds even if there was an > intermediate reconfigure. Yes, I think so too. > > For Xen on ARM, the makefile targets build, clean and distclean will failed. > > If they fail, this will need fixing elsewhere then. Part of the issue is that there are targets which are simply not ported to ARM and therefore are missing bits of infrastructure , e.g. mini-os where one if the clean failures is lack of extras/mini-os/arch/arm/arch.mk. However I think it is wrong to tie the clean/distclean of these into the configurey selection mechanism, i.e. mini-os should know that it only support x86 (for the minute) and DTRT when called for ARM (which is likely to be nothing much). Perhaps a stub extras/mini-os/arch/arm/arch.mk is the answer? The other case is the kernel distclean, which fails with buildconfigs/mk.linux-2.6-common:32: buildconfigs/src.: No such file or directory but that seems to fail on x86 too. Having disabled it by default so long ago perhaps the time has come to simply remove this stuff? I don't know if anyone is still using it -- the test system perhaps? Or it could be fixed with the below, I think. Ian. 8<--------------------- build: fix kernel build rules. Rename mk.linux-2.6-common to common.linux-2.6 so that it does not get included in the ALLKERNELS logic. Specify XEN_LINUX_SOURCE for linux-2.6-native, looking at 414614d84e67 and todays linux-2.6-xen.mk I am guessing that hg-clone of the 2.6.18 tree is the expected method. To be honest I didn't even try it... Signed-off-by: Ian Campbell <ian.campbell@citrix.com> --- NB git diff -M style diff, includes the rename... .../{mk.linux-2.6-common => common.linux-2.6} | 0 buildconfigs/mk.linux-2.6 | 2 +- buildconfigs/mk.linux-2.6-native | 3 ++- buildconfigs/mk.linux-2.6-pvops | 2 +- buildconfigs/mk.linux-2.6-tip-latest | 2 +- buildconfigs/mk.linux-2.6-xen | 2 +- 6 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/Makefile b/Makefile index 32efb70..2217c20 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,9 @@ all: dist SUBSYSTEMS?=xen kernels tools stubdom docs TARGS_DIST=$(patsubst %, dist-%, $(SUBSYSTEMS)) TARGS_INSTALL=$(patsubst %, install-%, $(SUBSYSTEMS)) +TARGS_BUILD=$(patsubst %, install-%, $(SUBSYSTEMS)) +TARGS_CLEAN=$(patsubst %, clean-%, $(SUBSYSTEMS)) +TARGS_DISTCLEAN=$(patsubst %, distclean-%, $(SUBSYSTEMS)) export XEN_ROOT=$(CURDIR) include Config.mk @@ -23,15 +26,28 @@ include buildconfigs/Rules.mk install: $(TARGS_INSTALL) .PHONY: build -build: kernels +build: $(TARGS_BUILD) + +.PHONY: build-xen +build-xen: $(MAKE) -C xen build + +.PHONY: build-tools +build-tools: $(MAKE) -C tools build + +.PHONY: build-stubdom $(MAKE) -C stubdom build ifeq (x86_64,$(XEN_TARGET_ARCH)) XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom pv-grub endif + +.PHONY: build-docs +build-docs: $(MAKE) -C docs build +build-kernels: kernels + # The test target is for unit tests that can run without an installation. Of # course, many tests require a machine running Xen itself, and these are # handled elsewhere. @@ -146,30 +162,59 @@ debball: dist # clean doesn't do a kclean .PHONY: clean -clean:: +clean:: $(TARGS_CLEAN) + +.PHONY: clean-xen +clean-xen: $(MAKE) -C xen clean + +.PHONY: clean-tools +clean-tools: $(MAKE) -C tools clean + +.PHONY: clean-stubdom +clean-stubdom: $(MAKE) -C stubdom crossclean ifeq (x86_64,$(XEN_TARGET_ARCH)) XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom crossclean endif + +.PHONY: clean-docs +clean-docs: $(MAKE) -C docs clean +clean-%: + @: # do nothing + # clean, but blow away kernel build tree plus tarballs .PHONY: distclean -distclean: +distclean: $(TARGS_DISTCLEAN) -rm config/Toplevel.mk + rm -rf dist patches/tmp + rm -rf patches/*/.makedep + rm -rf config.log config.status config.cache autom4te.cache + +.PHONY: distclean-xen +distclean-xen: $(MAKE) -C xen distclean + +.PHONY: distclean-tools +tools-distclean: $(MAKE) -C tools distclean + +.PHONY: distclean-stubdom +distclean-stubdom: $(MAKE) -C stubdom distclean ifeq (x86_64,$(XEN_TARGET_ARCH)) XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom distclean endif + +.PHONY: distclean-docs +distclean-docs: $(MAKE) -C docs distclean - rm -rf dist patches/tmp + +distclean-kernels: for i in $(ALLKERNELS) ; do $(MAKE) $$i-delete ; done - rm -rf patches/*/.makedep - rm -rf config.log config.status config.cache autom4te.cache # Linux name for GNU distclean .PHONY: mrproper
The commit 3378685 "Add conditional build of subsystems to configure.ac" allows the user to disable/enable some components of Xen. After this commit some targets are still called on every subsystems. For Xen on ARM, the makefile targets build, clean and distclean will failed. Signed-off-by: Julien Grall <julien.grall@linaro.org> --- Makefile | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 6 deletions(-)