This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Link gnulib in gdbserver.


On 04/13/2012 01:35 AM, Yao Qi wrote:

> On 04/13/2012 04:21 AM, Doug Evans wrote:
>> Pedro thinks it's this:
>> FLAGS_TO_PASS changes $srcdir.  and install: does @$(MAKE)
>> $(FLAGS_TO_PASS) install-only
> 
> $(FLAGS_TO_PASS) is used to pass to Makefiles in sub-dirs.  When
> invoking install-only target, it is unnecessary to pass
> $(FLAGS_TO_PASS).  In the commands of target install-only below,
> $(FLAGS_TO_PASS) is passed to Makefiles in sub-dirs.
> 
> This patch just simply remove $(FLAGS_TO_PASS) in install target.  Is it OK?


I'm not a make expert, but I think this is more about passing variables
to sub-makes then about sub-dirs.  Note how everything in FLAGS_TO_PASS
(before the gnulib changes) is just the unitary FOO=$(FOO).

So I think this is better, and actually cleaner, for keeping FLAGS_TO_PASS
as it was, the gnulib specifics closer to gnulib code, and actually adding a
comment just around the gnulib specific GNULIB_FLAGS_TO_PASS.  :-)

BTW, is it really necessary to VPATH set to:

 VPATH=$(abs_top_srcdir)/../gnulib:$(abs_top_srcdir)"

instead of just:

 VPATH=$(abs_top_srcdir)/../gnulib"

I tried it, and things still appear to build fine.  IOW, is there a case
where building gnulib would need to find something in the gdbserver source dir?

-- 
Pedro Alves

2012-04-13  Pedro Alves  <palves@redhat.com>

	* Makefile.in (GNULIB_FLAGS_TO_PASS): New.
	(FLAGS_TO_PASS): Don't change or set $top_srcdir, $srcdir and VPATH.
	(all, uninstall, clean-info, all-lib, clean, maintainer-clean)
	(realclean, distclean): Explicitly pass $GNULIB_FLAGS_TO_PASS to
	the sub-make.
---

 gdb/gdbserver/Makefile.in |   24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index aa8b13b..de6e636 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -79,6 +79,14 @@ ustinc = @ustinc@
 GNULIB_INCLUDE_DIR = $(srcdir)/../gnulib
 GNULIB_LIB = gnulib/libgnu.a

+# We build gnulib directly under the gdbserver build directory, but
+# its sources don't live directly under gdbserver's source directory.
+# Tweak $srcdir and VPATH to make that work.
+GNULIB_FLAGS_TO_PASS = \
+	"top_srcdir=$(abs_top_srcdir)/.." \
+	"srcdir=$(abs_srcdir)/../gnulib" \
+	"VPATH=$(abs_top_srcdir)/../gnulib:$(abs_top_srcdir)"
+
 # Generated headers in the gnulib directory.  These must be listed
 # so that they are generated before other files are compiled.
 GNULIB_H = gnulib/string.h @GNULIB_STDINT_H@
@@ -169,8 +177,6 @@ extra_libraries = @extra_libraries@
 FLAGS_TO_PASS = \
 	"prefix=$(prefix)" \
 	"exec_prefix=$(exec_prefix)" \
-	"top_srcdir=$(abs_top_srcdir)/.." "srcdir=$(abs_srcdir)/../gnulib" \
-	"VPATH=$(abs_top_srcdir)/../gnulib:$(abs_top_srcdir)" \
 	"infodir=$(infodir)" \
 	"datarootdir=$(datarootdir)" \
 	"docdir=$(docdir)" \
@@ -206,7 +212,7 @@ FLAGS_TO_PASS = \
 	${CC} -c ${INTERNAL_CFLAGS} $<

 all: gdbserver$(EXEEXT) gdbreplay$(EXEEXT) $(extra_libraries)
-	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) all
+	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $(GNULIB_FLAGS_TO_PASS) all

 # Traditionally "install" depends on "all".  But it may be useful
 # not to; for example, if the user has made some trivial change to a
@@ -227,13 +233,13 @@ install-only:
 	$(INSTALL_PROGRAM) gdbserver$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT); \
 	$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(man1dir); \
 	$(INSTALL_DATA) $(srcdir)/gdbserver.1 $(DESTDIR)$(man1dir)/$$n.1
-	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) install
+	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $(GNULIB_FLAGS_TO_PASS) install

 uninstall: force
 	n=`echo gdbserver | sed '$(program_transform_name)'`; \
 	if [ x$$n = x ]; then n=gdbserver; else true; fi; \
 	rm -f $(DESTDIR)/$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(man1dir)/$$n.1
-	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) uninstall
+	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $(GNULIB_FLAGS_TO_PASS) uninstall

 installcheck:
 check:
@@ -243,7 +249,7 @@ install-pdf:
 html:
 install-html:
 clean-info: force
-	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $@
+	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $(GNULIB_FLAGS_TO_PASS) $@

 gdbserver$(EXEEXT): $(OBS) ${ADD_DEPS} ${CDEPS} $(GNULIB_LIB)
 	rm -f gdbserver$(EXEEXT)
@@ -252,7 +258,7 @@ gdbserver$(EXEEXT): $(OBS) ${ADD_DEPS} ${CDEPS} $(GNULIB_LIB)

 $(GNULIB_LIB) $(GNULIB_H): all-lib
 all-lib: gnulib/Makefile
-	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) all
+	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $(GNULIB_FLAGS_TO_PASS) all

 .PHONY: all-lib

@@ -308,12 +314,12 @@ clean:
 	rm -f i386-avx.c i386-avx-linux.c
 	rm -f amd64-avx.c amd64-avx-linux.c
 	rm -f i386-mmx.c i386-mmx-linux.c
-	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) clean
+	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $(GNULIB_FLAGS_TO_PASS) clean

 maintainer-clean realclean distclean: clean
 	rm -f nm.h tm.h xm.h config.status config.h stamp-h config.log
 	rm -f Makefile
-	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $@
+	@cd gnulib; $(MAKE) $(FLAGS_TO_PASS) $(GNULIB_FLAGS_TO_PASS) $@

 config.h: stamp-h ; @true
 stamp-h: config.in config.status


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]