From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 111060 invoked by alias); 16 Nov 2016 17:14:50 -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 111024 invoked by uid 89); 16 Nov 2016 17:14:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.6 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=lc, gmo X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 16 Nov 2016 17:14:38 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c73n5-000898-Na for gdb-patches@sourceware.org; Wed, 16 Nov 2016 12:14:36 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54586) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c73n5-000894-K7; Wed, 16 Nov 2016 12:14:31 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4338 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1c73n4-0003rT-Q6; Wed, 16 Nov 2016 12:14:31 -0500 Date: Wed, 16 Nov 2016 17:14:00 -0000 Message-Id: <83k2c3fitl.fsf@gnu.org> From: Eli Zaretskii To: Pedro Alves CC: simon.marchi@ericsson.com, gdb-patches@sourceware.org In-reply-to: <0fa3954e-1f8a-f7f8-aad7-d31d45aa981e@redhat.com> (message from Pedro Alves on Wed, 16 Nov 2016 16:56:02 +0000) Subject: Re: [PATCH 3/4] Makefile: Replace old suffix rules with pattern rules Reply-to: Eli Zaretskii References: <20161116160808.12830-1-simon.marchi@ericsson.com> <20161116160808.12830-4-simon.marchi@ericsson.com> <83lgwjfknq.fsf@gnu.org> <0fa3954e-1f8a-f7f8-aad7-d31d45aa981e@redhat.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-IsSubscribed: yes X-SW-Source: 2016-11/txt/msg00433.txt.bz2 > Cc: gdb-patches@sourceware.org > From: Pedro Alves > Date: Wed, 16 Nov 2016 16:56:02 +0000 > > 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. No, it's because of the built-in rules. They are by default considered no matter which pattern rules you have in the Makefile, because theoretically each .c file can be built from some other file in any number of ways. > 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). It might produce a significant difference, but of course the interesting case is when a small number of files need to be recompiled.