From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30558 invoked by alias); 13 Apr 2012 11:06:11 -0000 Received: (qmail 30548 invoked by uid 22791); 13 Apr 2012 11:06:10 -0000 X-SWARE-Spam-Status: No, hits=-7.2 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,SPF_HELO_PASS,TW_AV,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 13 Apr 2012 11:05:56 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q3DB5pMY025288 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 13 Apr 2012 07:05:51 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q3DB5nQR022688; Fri, 13 Apr 2012 07:05:50 -0400 Message-ID: <4F88088D.5030601@redhat.com> Date: Fri, 13 Apr 2012 11:20:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1 MIME-Version: 1.0 To: Yao Qi CC: Doug Evans , gdb-patches@sourceware.org Subject: Re: [PATCH] Link gnulib in gdbserver. References: <1334127046-27627-1-git-send-email-yao@codesourcery.com> <4F85C251.1070705@redhat.com> <4F867BA5.40201@codesourcery.com> <4F8774DC.4040004@codesourcery.com> In-Reply-To: <4F8774DC.4040004@codesourcery.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-04/txt/msg00346.txt.bz2 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 * 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