diff mbox series

[1/2] Makefile: Add back TAGS/ctags/cscope rules

Message ID 159897001005.442705.16516671603870288336.stgit@bahia.lan
State New
Headers show
Series Makefile: A few post-meson-conversion fixes | expand

Commit Message

Greg Kurz Sept. 1, 2020, 2:20 p.m. UTC
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(-)

Comments

Connor Kuehl Sept. 1, 2020, 2:59 p.m. UTC | #1
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
Greg Kurz Sept. 1, 2020, 3:18 p.m. UTC | #2
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
>
Paolo Bonzini Sept. 1, 2020, 4:04 p.m. UTC | #3
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
Connor Kuehl Sept. 1, 2020, 4:07 p.m. UTC | #4
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
Greg Kurz Sept. 1, 2020, 4:23 p.m. UTC | #5
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
>
diff mbox series

Patch

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 \