From mboxrd@z Thu Jan  1 00:00:00 1970
Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail
From: Eli Zaretskii <eliz@gnu.org>
Newsgroups: gmane.emacs.devel
Subject: Re: Speeding up the bootstrap build - a quick hack.
Date: Tue, 18 Jan 2022 16:17:50 +0200
Message-ID: <83pmopunzl.fsf@gnu.org>
References: <YeXQ4FszqwRcmD1v@ACM>
Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214";
	logging-data="40900"; mail-complaints-to="usenet@ciao.gmane.io"
Cc: emacs-devel@gnu.org
To: Alan Mackenzie <acm@muc.de>
Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jan 18 16:18:22 2022
Return-path: <emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org>
Envelope-to: ged-emacs-devel@m.gmane-mx.org
Original-Received: from lists.gnu.org ([209.51.188.17])
	by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
	(Exim 4.92)
	(envelope-from <emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org>)
	id 1n9qFa-000ASO-4Q
	for ged-emacs-devel@m.gmane-mx.org; Tue, 18 Jan 2022 16:18:22 +0100
Original-Received: from localhost ([::1]:44920 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org>)
	id 1n9qFZ-000769-1k
	for ged-emacs-devel@m.gmane-mx.org; Tue, 18 Jan 2022 10:18:21 -0500
Original-Received: from eggs.gnu.org ([209.51.188.92]:54454)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@gnu.org>) id 1n9pJ9-0001yv-NQ
 for emacs-devel@gnu.org; Tue, 18 Jan 2022 09:17:59 -0500
Original-Received: from [2001:470:142:3::e] (port=36416 helo=fencepost.gnu.org)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@gnu.org>)
 id 1n9pJ8-0005gM-Tx; Tue, 18 Jan 2022 09:17:58 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=CtRyLlFNblUiAyJSk3lLlYT65QujrF3NEwlJ1rmCYiA=; b=Kl4lsoMIydYC
 vf57VRRwIDBZY7Tzkl5D5FFyaosukYv9fBBfiNvfsx61U+gK4QMRz05K25ozeHohIFzcEqDKZelwe
 MulTS6J0En95cOFnfBoCU3fSDT2NWU9hXYgGcusMlpRUJnxzKbGOCEH06KUuEIl0/v4YD7rQZHH3G
 rMjPg4N1XQETV0922gPWeG0lbP3Y8Bgfy2jBrjd32f4RiNIPppwMdyNCDYA+2yA06iNh6t0jyu+El
 ivi+Qeq5WzV8vaCz4Clb7qpQH5qZI6FuuzA5qTM9U00lXVdlbTFbhuddkM2MurDYrCWkGsBWwrneL
 dY76PdvSfDoOJ/8tdKKQ6A==;
Original-Received: from [87.69.77.57] (port=4486 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@gnu.org>)
 id 1n9pJ7-0002KL-G4; Tue, 18 Jan 2022 09:17:58 -0500
In-Reply-To: <YeXQ4FszqwRcmD1v@ACM> (message from Alan Mackenzie on Mon, 17
 Jan 2022 20:26:08 +0000)
X-BeenThere: emacs-devel@gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Emacs development discussions." <emacs-devel.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/emacs-devel>,
 <mailto:emacs-devel-request@gnu.org?subject=unsubscribe>
List-Archive: <https://lists.gnu.org/archive/html/emacs-devel>
List-Post: <mailto:emacs-devel@gnu.org>
List-Help: <mailto:emacs-devel-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/emacs-devel>,
 <mailto:emacs-devel-request@gnu.org?subject=subscribe>
Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org
Original-Sender: "Emacs-devel"
 <emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org>
Xref: news.gmane.io gmane.emacs.devel:284926
Archived-At: <http://permalink.gmane.org/gmane.emacs.devel/284926>

> Date: Mon, 17 Jan 2022 20:26:08 +0000
> From: Alan Mackenzie <acm@muc.de>
> 
> diff --git a/lisp/Makefile.in b/lisp/Makefile.in
> index 3a72034463..b81337d2f3 100644
> --- a/lisp/Makefile.in
> +++ b/lisp/Makefile.in
> @@ -85,6 +85,14 @@ BYTE_COMPILE_FLAGS =
>  # the compiler (so its compilation does not speed up subsequent compilations),
>  # it's only placed here so as to speed up generation of the loaddefs.el file.
>  
> +COMPILE_ZEROTH = \
> +	$(lisp)/emacs-lisp/macroexp.elc0 \
> +	$(lisp)/emacs-lisp/cconv.elc0 \
> +	$(lisp)/emacs-lisp/byte-opt.elc0 \
> +	$(lisp)/emacs-lisp/bytecomp.elc0 \
> +	$(lisp)/emacs-lisp/comp-cstr.elc0 \
> +	$(lisp)/emacs-lisp/comp.elc0
> +
>  COMPILE_FIRST = \
>  	$(lisp)/emacs-lisp/macroexp.elc \
>  	$(lisp)/emacs-lisp/cconv.elc    \
> @@ -298,22 +306,30 @@ $(THEFILE)n:
>  # subdirectories, to make sure require's and load's in the files being
>  # compiled find the right files.
>  
> -.SUFFIXES: .elc .el
> +.SUFFIXES: .elc0 .elc .el
>  
>  # An old-fashioned suffix rule, which, according to the GNU Make manual,
>  # cannot have prerequisites.
>  ifeq ($(HAVE_NATIVE_COMP),yes)
> -.el.elc:
> +.el.elc0:
> +	$(AM_V_ELC)$(emacs) $(BYTE_COMPILE_FLAGS) \
> +	--exec "(setq load-suffixes '(\".elc0\" \".el\"))" \
> +	-f batch-byte-compile $<
> +	mv $<c $@
> +
> +%.elc : %.el $(COMPILE_ZEROTH)
>  	$(AM_V_ELC)$(emacs) $(BYTE_COMPILE_FLAGS) \
> +	--exec "(setq load-suffixes '(\".elc0\" \".elc\" \".el\"))" \
>  	-l comp -f batch-byte+native-compile $<
>  else
>  .el.elc:
>  	$(AM_V_ELC)$(emacs) $(BYTE_COMPILE_FLAGS) -f batch-byte-compile $<
>  endif

Is this .elc0 trick just to avoid the ELC+ELN compilation of
COMPILE_FIRST, and instead first compile them only to .elc and then
compile again to .elc + .eln?

If so, why not use no-native-compile to disable the ELN part?  Since
compile-first is called from src/Makefile, as part of building
bootstrap-emacs, you can do that in the commands there.

If you tried that and it didn't work, can you tell me what I missed?

Thanks.