Message ID | 1423469297-10826-1-git-send-email-famz@redhat.com |
---|---|
State | New |
Headers | show |
On 9 February 2015 at 08:08, Fam Zheng <famz@redhat.com> wrote: > It doesn't make much sense to ask one to switch to build dir in order to > make these two targets. > > Signed-off-by: Fam Zheng <famz@redhat.com> > --- > Makefile | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/Makefile b/Makefile > index 6817c6f..257bef6 100644 > --- a/Makefile > +++ b/Makefile > @@ -3,6 +3,9 @@ > # Always point to the root of the build tree (needs GNU make). > BUILD_DIR=$(CURDIR) > > +# Before including a proper config-host.mak, assume we are in the source tree > +SRC_PATH=. > + > # All following code might depend on configuration variables > ifneq ($(wildcard config-host.mak),) > # Put the all: rule here so that config-host.mak can contain dependencies. > @@ -38,7 +41,7 @@ config-host.mak: $(SRC_PATH)/configure > fi > else > config-host.mak: > -ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail)) > +ifneq ($(filter-out %clean TAGS cscope,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail)) Probably better to define a variable for the targets which can be called on an unconfigured directory rather than having "clean TAGS cscope" in two places. > cscope: > - rm -f ./cscope.* > - find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./cscope.files > - cscope -b > + rm -f "$(SRC_PATH)"/cscope.* > + find "$(SRC_PATH)/" -name "*.[chsS]" -print | sed 's,^\./,,' > "$(SRC_PATH)/cscope.files" > + cscope -b -i"$(SRC_PATH)/cscope.files" Isn't this going to result in our writing the cscope.files into the source tree but the cross-reference into the build directory? That seems inconsistent (and I'm not really convinced about the wisdom of anything in the makefile writing to the source tree). thanks -- PMM
On Mon, 02/09 08:25, Peter Maydell wrote: > On 9 February 2015 at 08:08, Fam Zheng <famz@redhat.com> wrote: > > It doesn't make much sense to ask one to switch to build dir in order to > > make these two targets. > > > > Signed-off-by: Fam Zheng <famz@redhat.com> > > --- > > Makefile | 13 ++++++++----- > > 1 file changed, 8 insertions(+), 5 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 6817c6f..257bef6 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -3,6 +3,9 @@ > > # Always point to the root of the build tree (needs GNU make). > > BUILD_DIR=$(CURDIR) > > > > +# Before including a proper config-host.mak, assume we are in the source tree > > +SRC_PATH=. > > + > > # All following code might depend on configuration variables > > ifneq ($(wildcard config-host.mak),) > > # Put the all: rule here so that config-host.mak can contain dependencies. > > @@ -38,7 +41,7 @@ config-host.mak: $(SRC_PATH)/configure > > fi > > else > > config-host.mak: > > -ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail)) > > +ifneq ($(filter-out %clean TAGS cscope,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail)) > > Probably better to define a variable for the targets which can be > called on an unconfigured directory rather than having "clean TAGS cscope" > in two places. > > > cscope: > > - rm -f ./cscope.* > > - find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./cscope.files > > - cscope -b > > + rm -f "$(SRC_PATH)"/cscope.* > > + find "$(SRC_PATH)/" -name "*.[chsS]" -print | sed 's,^\./,,' > "$(SRC_PATH)/cscope.files" > > + cscope -b -i"$(SRC_PATH)/cscope.files" > > Isn't this going to result in our writing the cscope.files into the > source tree but the cross-reference into the build directory? > That seems inconsistent (and I'm not really convinced about the > wisdom of anything in the makefile writing to the source tree). This patch is useful when you really want "make cscope", when you're already at your $(SRC_PATH). The "find | sed; cscope" command sequence is way too cumbersome. For those who are not the in-tree build type, I assume leaving out '-f "$(SRC_PATH)/cscope.out"' should slightly ease the concern about writing to source tree? :) I don't know a better place to put the reference. I always start vim from $(SRC_PATH). Fam
diff --git a/Makefile b/Makefile index 6817c6f..257bef6 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,9 @@ # Always point to the root of the build tree (needs GNU make). BUILD_DIR=$(CURDIR) +# Before including a proper config-host.mak, assume we are in the source tree +SRC_PATH=. + # All following code might depend on configuration variables ifneq ($(wildcard config-host.mak),) # Put the all: rule here so that config-host.mak can contain dependencies. @@ -38,7 +41,7 @@ config-host.mak: $(SRC_PATH)/configure fi else config-host.mak: -ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail)) +ifneq ($(filter-out %clean TAGS cscope,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail)) @echo "Please call configure before running make!" @exit 1 endif @@ -433,9 +436,9 @@ TAGS: find "$(SRC_PATH)" -name '*.[hc]' -exec etags --append {} + cscope: - rm -f ./cscope.* - find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./cscope.files - cscope -b + rm -f "$(SRC_PATH)"/cscope.* + find "$(SRC_PATH)/" -name "*.[chsS]" -print | sed 's,^\./,,' > "$(SRC_PATH)/cscope.files" + cscope -b -i"$(SRC_PATH)/cscope.files" # documentation MAKEINFO=makeinfo @@ -556,7 +559,7 @@ endif # CONFIG_WIN # Add a dependency on the generated files, so that they are always # rebuilt before other object files -ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail)) +ifneq ($(filter-out %clean TAGS cscope,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail)) Makefile: $(GENERATED_HEADERS) endif
It doesn't make much sense to ask one to switch to build dir in order to make these two targets. Signed-off-by: Fam Zheng <famz@redhat.com> --- Makefile | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)