* [PATCH 0/2] Makefile: A few post-meson-conversion fixes @ 2020-09-01 14:20 Greg Kurz 2020-09-01 14:20 ` [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules Greg Kurz 2020-09-01 14:20 ` [PATCH 2/2] Makefile: Fix in-tree clean/distclean Greg Kurz 0 siblings, 2 replies; 8+ messages in thread From: Greg Kurz @ 2020-09-01 14:20 UTC (permalink / raw) To: qemu-devel; +Cc: Paolo Bonzini The meson conversion broke the ability to use cscope, etags and ctags without running configure beforehand, which is a bit painful. This series restore the previous behavior. --- Greg Kurz (2): Makefile: Add back TAGS/ctags/cscope rules Makefile: Fix in-tree clean/distclean Makefile | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) -- Greg ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules 2020-09-01 14:20 [PATCH 0/2] Makefile: A few post-meson-conversion fixes Greg Kurz @ 2020-09-01 14:20 ` Greg Kurz 2020-09-01 14:59 ` Connor Kuehl 2020-09-01 14:20 ` [PATCH 2/2] Makefile: Fix in-tree clean/distclean Greg Kurz 1 sibling, 1 reply; 8+ messages in thread From: Greg Kurz @ 2020-09-01 14:20 UTC (permalink / raw) To: qemu-devel; +Cc: Paolo Bonzini It is a bit of a pain to be forced to run configure before being able to use cscope and friends. Add back the rules to build them in-tree as before commit a56650518f5b. Fixes: a56650518f5b ("configure: integrate Meson in the build system") Signed-off-by: Greg Kurz <groug@kaod.org> --- Makefile | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 81794d5c34a2..8ffe2872915d 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,7 @@ ninja-distclean:: build.ninja: config-host.mak Makefile.ninja: build.ninja ninjatool - ./ninjatool -t ninja2make --omit clean dist uninstall < $< > $@ + ./ninjatool -t ninja2make --omit clean dist uninstall cscope TAGS ctags < $< > $@ -include Makefile.ninja ${ninja-targets-c_COMPILER} ${ninja-targets-cpp_COMPILER}: .var.command += -MP @@ -229,6 +229,21 @@ distclean: clean ninja-distclean rm -f linux-headers/asm rm -Rf .sdk +.PHONY: ctags +ctags: + rm -f tags + find "$(SRC_PATH)" -name '*.[hc]' -exec ctags --append {} + + +.PHONY: TAGS +TAGS: + rm -f TAGS + find "$(SRC_PATH)" -name '*.[hc]' -exec etags --append {} + + +cscope: + rm -f "$(SRC_PATH)"/cscope.* + find "$(SRC_PATH)/" -name "*.[chsS]" -print | sed -e 's,^\./,,' > "$(SRC_PATH)/cscope.files" + cscope -b -i"$(SRC_PATH)/cscope.files" + ifdef INSTALL_BLOBS BLOBS=bios.bin bios-256k.bin bios-microvm.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \ vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin \ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules 2020-09-01 14:20 ` [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules Greg Kurz @ 2020-09-01 14:59 ` Connor Kuehl 2020-09-01 15:18 ` Greg Kurz 2020-09-01 16:04 ` Paolo Bonzini 0 siblings, 2 replies; 8+ messages in thread From: Connor Kuehl @ 2020-09-01 14:59 UTC (permalink / raw) To: Greg Kurz, qemu-devel; +Cc: Paolo Bonzini On 9/1/20 9:20 AM, Greg Kurz wrote: > It is a bit of a pain to be forced to run configure before being able > to use cscope and friends. Add back the rules to build them in-tree > as before commit a56650518f5b. > > Fixes: a56650518f5b ("configure: integrate Meson in the build system") > Signed-off-by: Greg Kurz <groug@kaod.org> This might be a user error on my part, but the way I read this it sounds like I could do this: $ rm -rf build $ make cscope and have it emit a cscope file, but when I do so it complains about the build dir not existing. As I understand it, running ./configure (or meson build) is what generates that build dir. Here's the error for posterity: changing dir to build for make "cscope"... make[1]: *** build: No such file or directory. Stop. make: *** [GNUmakefile:11: cscope] Error 2 One comment inline > --- > Makefile | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index 81794d5c34a2..8ffe2872915d 100644 > --- a/Makefile > +++ b/Makefile > @@ -62,7 +62,7 @@ ninja-distclean:: > build.ninja: config-host.mak > > Makefile.ninja: build.ninja ninjatool > - ./ninjatool -t ninja2make --omit clean dist uninstall < $< > $@ > + ./ninjatool -t ninja2make --omit clean dist uninstall cscope TAGS ctags < $< > $@ > -include Makefile.ninja > > ${ninja-targets-c_COMPILER} ${ninja-targets-cpp_COMPILER}: .var.command += -MP > @@ -229,6 +229,21 @@ distclean: clean ninja-distclean > rm -f linux-headers/asm > rm -Rf .sdk > > +.PHONY: ctags > +ctags: > + rm -f tags > + find "$(SRC_PATH)" -name '*.[hc]' -exec ctags --append {} + > + > +.PHONY: TAGS > +TAGS: > + rm -f TAGS > + find "$(SRC_PATH)" -name '*.[hc]' -exec etags --append {} + > + > +cscope: Since this recipe doesn't output an artifact called "cscope" I wonder if this should be: .PHONY: cscope cscope: ... or alternatively: cscope.out: ... > + rm -f "$(SRC_PATH)"/cscope.* > + find "$(SRC_PATH)/" -name "*.[chsS]" -print | sed -e 's,^\./,,' > "$(SRC_PATH)/cscope.files" > + cscope -b -i"$(SRC_PATH)/cscope.files" > + > ifdef INSTALL_BLOBS > BLOBS=bios.bin bios-256k.bin bios-microvm.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \ > vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin \ > > > Connor ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules 2020-09-01 14:59 ` Connor Kuehl @ 2020-09-01 15:18 ` Greg Kurz 2020-09-01 16:04 ` Paolo Bonzini 1 sibling, 0 replies; 8+ messages in thread From: Greg Kurz @ 2020-09-01 15:18 UTC (permalink / raw) To: Connor Kuehl; +Cc: Paolo Bonzini, qemu-devel On Tue, 1 Sep 2020 09:59:23 -0500 Connor Kuehl <ckuehl@redhat.com> wrote: > On 9/1/20 9:20 AM, Greg Kurz wrote: > > It is a bit of a pain to be forced to run configure before being able > > to use cscope and friends. Add back the rules to build them in-tree > > as before commit a56650518f5b. > > > > Fixes: a56650518f5b ("configure: integrate Meson in the build system") > > Signed-off-by: Greg Kurz <groug@kaod.org> > > This might be a user error on my part, but the way I read this it sounds > like I could do this: > > $ rm -rf build > $ make cscope > > and have it emit a cscope file, but when I do so it complains about the > build dir not existing. As I understand it, running ./configure (or > meson build) is what generates that build dir. Here's the error for > posterity: > > changing dir to build for make "cscope"... > make[1]: *** build: No such file or directory. Stop. > make: *** [GNUmakefile:11: cscope] Error 2 > My use case is : $ git clone git://git.qemu.org/qemu.git && cd qemu && make cscope Cloning into 'qemu'... remote: Counting objects: 510519, done. remote: Compressing objects: 100% (91407/91407), done. remote: Total 510519 (delta 420069), reused 507399 (delta 417643) Receiving objects: 100% (510519/510519), 180.42 MiB | 29.30 MiB/s, done. Resolving deltas: 100% (420069/420069), done. make: Nothing to be done for 'cscope'. > One comment inline > > > --- > > Makefile | 17 ++++++++++++++++- > > 1 file changed, 16 insertions(+), 1 deletion(-) > > > > diff --git a/Makefile b/Makefile > > index 81794d5c34a2..8ffe2872915d 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -62,7 +62,7 @@ ninja-distclean:: > > build.ninja: config-host.mak > > > > Makefile.ninja: build.ninja ninjatool > > - ./ninjatool -t ninja2make --omit clean dist uninstall < $< > $@ > > + ./ninjatool -t ninja2make --omit clean dist uninstall cscope TAGS ctags < $< > $@ > > -include Makefile.ninja > > > > ${ninja-targets-c_COMPILER} ${ninja-targets-cpp_COMPILER}: .var.command += -MP > > @@ -229,6 +229,21 @@ distclean: clean ninja-distclean > > rm -f linux-headers/asm > > rm -Rf .sdk > > > > +.PHONY: ctags > > +ctags: > > + rm -f tags > > + find "$(SRC_PATH)" -name '*.[hc]' -exec ctags --append {} + > > + > > +.PHONY: TAGS > > +TAGS: > > + rm -f TAGS > > + find "$(SRC_PATH)" -name '*.[hc]' -exec etags --append {} + > > + > > +cscope: > > Since this recipe doesn't output an artifact called "cscope" I wonder if > this should be: > > .PHONY: cscope We already have it somewhere else in the makefile: .PHONY: all clean cscope distclean install \ Since this patch is a partial revert of a56650518f5b, I didn't consider moving it here. Cheers, -- Greg > cscope: > ... > > or alternatively: > > cscope.out: > ... > > > > + rm -f "$(SRC_PATH)"/cscope.* > > + find "$(SRC_PATH)/" -name "*.[chsS]" -print | sed -e 's,^\./,,' > "$(SRC_PATH)/cscope.files" > > + cscope -b -i"$(SRC_PATH)/cscope.files" > > + > > ifdef INSTALL_BLOBS > > BLOBS=bios.bin bios-256k.bin bios-microvm.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \ > > vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin \ > > > > > > > > Connor > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules 2020-09-01 14:59 ` Connor Kuehl 2020-09-01 15:18 ` Greg Kurz @ 2020-09-01 16:04 ` Paolo Bonzini 2020-09-01 16:07 ` Connor Kuehl 2020-09-01 16:23 ` Greg Kurz 1 sibling, 2 replies; 8+ messages in thread From: Paolo Bonzini @ 2020-09-01 16:04 UTC (permalink / raw) To: Connor Kuehl, Greg Kurz, qemu-devel On 01/09/20 16:59, Connor Kuehl wrote: > On 9/1/20 9:20 AM, Greg Kurz wrote: >> It is a bit of a pain to be forced to run configure before being able >> to use cscope and friends. Add back the rules to build them in-tree >> as before commit a56650518f5b. >> >> Fixes: a56650518f5b ("configure: integrate Meson in the build system") >> Signed-off-by: Greg Kurz <groug@kaod.org> > > This might be a user error on my part, but the way I read this it sounds > like I could do this: > > $ rm -rf build > $ make cscope > > and have it emit a cscope file, but when I do so it complains about the > build dir not existing. As I understand it, running ./configure (or > meson build) is what generates that build dir. Here's the error for > posterity: > > changing dir to build for make "cscope"... > make[1]: *** build: No such file or directory. Stop. > make: *** [GNUmakefile:11: cscope] Error 2 You have a stray GNUmakefile in your source directory. It's not introduced by Greg's patch. I suggest that you remove the GNUmakefile and just use out-of-tree builds. > [...] > Since this recipe doesn't output an artifact called "cscope" I wonder if > this should be: > > .PHONY: cscope > cscope: > ... > > or alternatively: > > cscope.out: > ... Yes it should be phony. I have adjusted the patch and queued it. Paolo ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules 2020-09-01 16:04 ` Paolo Bonzini @ 2020-09-01 16:07 ` Connor Kuehl 2020-09-01 16:23 ` Greg Kurz 1 sibling, 0 replies; 8+ messages in thread From: Connor Kuehl @ 2020-09-01 16:07 UTC (permalink / raw) To: Paolo Bonzini, Greg Kurz, qemu-devel On 9/1/20 11:04 AM, Paolo Bonzini wrote: > On 01/09/20 16:59, Connor Kuehl wrote: >> On 9/1/20 9:20 AM, Greg Kurz wrote: >>> It is a bit of a pain to be forced to run configure before being able >>> to use cscope and friends. Add back the rules to build them in-tree >>> as before commit a56650518f5b. >>> >>> Fixes: a56650518f5b ("configure: integrate Meson in the build system") >>> Signed-off-by: Greg Kurz <groug@kaod.org> >> >> This might be a user error on my part, but the way I read this it sounds >> like I could do this: >> >> $ rm -rf build >> $ make cscope >> >> and have it emit a cscope file, but when I do so it complains about the >> build dir not existing. As I understand it, running ./configure (or >> meson build) is what generates that build dir. Here's the error for >> posterity: >> >> changing dir to build for make "cscope"... >> make[1]: *** build: No such file or directory. Stop. >> make: *** [GNUmakefile:11: cscope] Error 2 > > You have a stray GNUmakefile in your source directory. It's not > introduced by Greg's patch. > > I suggest that you remove the GNUmakefile and just use out-of-tree builds. You're right! There was a stray GNUmakefile. Thanks! Connor ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules 2020-09-01 16:04 ` Paolo Bonzini 2020-09-01 16:07 ` Connor Kuehl @ 2020-09-01 16:23 ` Greg Kurz 1 sibling, 0 replies; 8+ messages in thread From: Greg Kurz @ 2020-09-01 16:23 UTC (permalink / raw) To: Paolo Bonzini; +Cc: Connor Kuehl, qemu-devel On Tue, 1 Sep 2020 18:04:59 +0200 Paolo Bonzini <pbonzini@redhat.com> wrote: > On 01/09/20 16:59, Connor Kuehl wrote: > > On 9/1/20 9:20 AM, Greg Kurz wrote: > >> It is a bit of a pain to be forced to run configure before being able > >> to use cscope and friends. Add back the rules to build them in-tree > >> as before commit a56650518f5b. > >> > >> Fixes: a56650518f5b ("configure: integrate Meson in the build system") > >> Signed-off-by: Greg Kurz <groug@kaod.org> > > > > This might be a user error on my part, but the way I read this it sounds > > like I could do this: > > > > $ rm -rf build > > $ make cscope > > > > and have it emit a cscope file, but when I do so it complains about the > > build dir not existing. As I understand it, running ./configure (or > > meson build) is what generates that build dir. Here's the error for > > posterity: > > > > changing dir to build for make "cscope"... > > make[1]: *** build: No such file or directory. Stop. > > make: *** [GNUmakefile:11: cscope] Error 2 > > You have a stray GNUmakefile in your source directory. It's not > introduced by Greg's patch. > > I suggest that you remove the GNUmakefile and just use out-of-tree builds. > > > [...] > > Since this recipe doesn't output an artifact called "cscope" I wonder if > > this should be: > > > > .PHONY: cscope > > cscope: > > ... > > > > or alternatively: > > > > cscope.out: > > ... > > Yes it should be phony. I have adjusted the patch and queued it. > FWIW, as said in another mail, it is phony somewhere else in the makefile. > Paolo > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] Makefile: Fix in-tree clean/distclean 2020-09-01 14:20 [PATCH 0/2] Makefile: A few post-meson-conversion fixes Greg Kurz 2020-09-01 14:20 ` [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules Greg Kurz @ 2020-09-01 14:20 ` Greg Kurz 1 sibling, 0 replies; 8+ messages in thread From: Greg Kurz @ 2020-09-01 14:20 UTC (permalink / raw) To: qemu-devel; +Cc: Paolo Bonzini Doing 'make clean' or 'make distclean' in a freshly cloned tree results in: make: *** No rule to make target 'ninja-clean', needed by 'clean'. Stop. Make the fallback rules global. While here, change the ninjatool recipe to always have a zero exit status and thus prevent make to emit a warning. Fixes: a56650518f5b ("configure: integrate Meson in the build system") Signed-off-by: Greg Kurz <groug@kaod.org> --- Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 8ffe2872915d..08f4d3eb5c3c 100644 --- a/Makefile +++ b/Makefile @@ -54,13 +54,6 @@ export NINJA=./ninjatool # enough to prime the rest of the build. ninjatool: build.ninja -# Only needed in case Makefile.ninja does not exist. -.PHONY: ninja-clean ninja-distclean clean-ctlist -clean-ctlist: -ninja-clean:: -ninja-distclean:: -build.ninja: config-host.mak - Makefile.ninja: build.ninja ninjatool ./ninjatool -t ninja2make --omit clean dist uninstall cscope TAGS ctags < $< > $@ -include Makefile.ninja @@ -115,6 +108,13 @@ ifneq ($(filter-out $(UNCHECKED_GOALS),$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fa endif endif +# Only needed in case Makefile.ninja does not exist. +.PHONY: ninja-clean ninja-distclean clean-ctlist +clean-ctlist: +ninja-clean:: +ninja-distclean:: +build.ninja: config-host.mak + include $(SRC_PATH)/rules.mak # lor is defined in rules.mak @@ -195,7 +195,7 @@ recurse-clean: $(addsuffix /clean, $(ROM_DIRS)) ###################################################################### clean: recurse-clean ninja-clean clean-ctlist - -test -f ninjatool && ./ninjatool $(if $(V),-v,) -t clean + if test -f ninjatool; then ./ninjatool $(if $(V),-v,) -t clean; fi # avoid old build problems by removing potentially incorrect old files rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h find . \( -name '*.so' -o -name '*.dll' -o -name '*.[oda]' \) -type f \ ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-09-01 16:25 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-09-01 14:20 [PATCH 0/2] Makefile: A few post-meson-conversion fixes Greg Kurz 2020-09-01 14:20 ` [PATCH 1/2] Makefile: Add back TAGS/ctags/cscope rules Greg Kurz 2020-09-01 14:59 ` Connor Kuehl 2020-09-01 15:18 ` Greg Kurz 2020-09-01 16:04 ` Paolo Bonzini 2020-09-01 16:07 ` Connor Kuehl 2020-09-01 16:23 ` Greg Kurz 2020-09-01 14:20 ` [PATCH 2/2] Makefile: Fix in-tree clean/distclean Greg Kurz
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.