From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Mark H Weaver Newsgroups: gmane.lisp.guile.devel Subject: Officially require GNU Make to build Guile? (was Re: Bootstrap optimization) Date: Sun, 28 Oct 2018 18:33:47 -0400 Message-ID: <87tvl58zvd.fsf_-_@netris.org> References: <87y3aiam5q.fsf@netris.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1540766037 18048 195.159.176.226 (28 Oct 2018 22:33:57 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 28 Oct 2018 22:33:57 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) Cc: guile-devel To: Mikael Djurfeldt Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sun Oct 28 23:33:53 2018 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gGtcz-0004YT-Mn for guile-devel@m.gmane.org; Sun, 28 Oct 2018 23:33:49 +0100 Original-Received: from localhost ([::1]:42378 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gGtf6-0006ff-9G for guile-devel@m.gmane.org; Sun, 28 Oct 2018 18:36:00 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44379) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gGtey-0006fN-1b for guile-devel@gnu.org; Sun, 28 Oct 2018 18:35:56 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gGten-0006ZY-Ee for guile-devel@gnu.org; Sun, 28 Oct 2018 18:35:48 -0400 Original-Received: from world.peace.net ([64.112.178.59]:59120) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gGtee-00060a-0i for guile-devel@gnu.org; Sun, 28 Oct 2018 18:35:32 -0400 Original-Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gGtde-0003C8-PE; Sun, 28 Oct 2018 18:34:30 -0400 In-Reply-To: (Mikael Djurfeldt's message of "Sun, 28 Oct 2018 13:40:00 +0100") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 64.112.178.59 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.org gmane.lisp.guile.devel:19694 Archived-At: Hi Mikael, Mikael Djurfeldt writes: > OK, here's a new patch. OK to apply it? > > This actually also fixes the existing problem of all bootstrap objects > being rebuilt of eval.scm is touched. Very nice! I didn't know about this feature in GNU Make. > The patch is verified to give a faster build for 4 and 32 build threads. > > The only downside is that it requires GNU Make 3.8 (which was released > 2002) or later, but that shouldn't be a problem, right? Hmm, good question. I'm not sure, not because 2002 is too recent, but rather because I'm not sure that GNU Make should be a requirement for building Guile. Guile's README does not list GNU Make in the section of "Required External Packages". This, along with the fact that we use Automake which is clearly designed to produce portable Makefiles, makes me inclined to think that if Guile depends on non-standard extensions in GNU Make, that this is a bug. On the other hand, if this is a bug, it seems that we've had this bug for several years at least, and that non-GNU systems are already working around it by adding GNU Make as a requirement. For example, the Guile 2 packages in the OpenBSD and FreeBSD ports collections already list GNU Make as a prerequisite for building Guile 2. Our README also has "Special Instructions For Some Systems" which mentions that gmake is required on FreeBSD 11.0. However, there's no mention of any other non-GNU systems requiring GNU Make to build Guile. So, we now have a choice. We can fully embrace a requirement on GNU Make, or we can treat it as a bug to be fixed. I'm still inclined to consider it a bug, but maybe we can have the best of both worlds here. I see that Automake has conditionals: https://www.gnu.org/software/automake/manual/automake.html#Conditionals How hard would it be to test for GNU Make in our configure script, and then to use your improved Makefile rules only when GNU Make is present? Regards, Mark