On Tue, 1 Sep 2020 09:59:23 -0500
Connor Kuehl <cku...@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 <gr...@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
> 

Reply via email to