From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 71289 invoked by alias); 16 Nov 2016 16:56:15 -0000 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 Received: (qmail 71226 invoked by uid 89); 16 Nov 2016 16:56:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.8 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Might, nowadays, i18n, gmo X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 16 Nov 2016 16:56:04 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C5F1C67BA3; Wed, 16 Nov 2016 16:56:03 +0000 (UTC) Received: from [127.0.0.1] (ovpn03.gateway.prod.ext.phx2.redhat.com [10.5.9.3]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id uAGGu2jh030604; Wed, 16 Nov 2016 11:56:02 -0500 Subject: Re: [PATCH 3/4] Makefile: Replace old suffix rules with pattern rules To: Eli Zaretskii , Simon Marchi References: <20161116160808.12830-1-simon.marchi@ericsson.com> <20161116160808.12830-4-simon.marchi@ericsson.com> <83lgwjfknq.fsf@gnu.org> Cc: gdb-patches@sourceware.org From: Pedro Alves Message-ID: <0fa3954e-1f8a-f7f8-aad7-d31d45aa981e@redhat.com> Date: Wed, 16 Nov 2016 16:56:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <83lgwjfknq.fsf@gnu.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-11/txt/msg00427.txt.bz2 On 11/16/2016 04:34 PM, Eli Zaretskii wrote: >> From: Simon Marchi >> CC: Simon Marchi >> Date: Wed, 16 Nov 2016 11:08:07 -0500 >> >> AFAIK, .SUFFIXES targets are only used for those rules, and can be >> removed as well. > > AFAIK, .SUFFIXES affects built-in rules, and so having there only > suffixes relevant to our build will make the build faster, sometimes > much faster, because Make doesn't need to consider irrelevant built-in > rules. > Given the shared ancestry, and the fact that GCC nowadays requires GNU make, I think it may be worth it to take a look at what does GCC's Makefile.in do. In this case, it has: ~~~ # Suppress smart makes who think they know how to automake yacc and flex file .y.c: .l.c: # The only suffixes we want for implicit rules are .c and .o, so clear # the list and add them. This speeds up GNU Make, and allows -r to work. # For i18n support, we also need .gmo, .po, .pox. # This must come before the language makefile fragments to allow them to # add suffixes and rules of their own. .SUFFIXES: .SUFFIXES: .c .cc .o .po .pox .gmo ~~~ I don't know why they still add some suffixes instead of relying on the pattern rules. Might just be legacy. > When in doubt, we can ask the GNU Make maintainer to help us. Here's what he was saying in an internal GNU list (about speeding up make and emptying '.SUFFIXES'): ~~~ This doesn't get rid of all the implicit rules in GNU make, however, because some default rules are pattern rules which are not affected by the .SUFFIXES special target. To get rid of all implicit rules in GNU make you have to either invoke make with the -r option [...], or else add this to your makefile: .SUFFIXES: %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% ~~~ I'd be curious if this makes any difference in a "make" invocation that ends up building nothing (because all targets are already up to date). Thanks, Pedro Alves