|
From: | Lynn Winebarger |
Subject: | Re: native compilation units |
Date: | Mon, 6 Jun 2022 22:14:00 -0400 |
> From: Lynn Winebarger <owinebar@gmail.com>
> Date: Mon, 6 Jun 2022 12:23:49 -0400
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, Andrea Corallo <akrl@sdf.org>, emacs-devel@gnu.org
>
> Of course, there is: that function is what is invoked when building a
> release tarball, where the *.elc files are already present. See
> lisp/Makefile.in.
>
> That's what I expected was the case, but the question is whether it "should"
> check for those .elc files and create them only if they do not exist, as opposed
> to batch-byte+native-compile, which creates both unconditionally. Or perhaps
> just note the possible hiccup in the docstring for batch-native-compile?
You are describing a different function. batch-native-compile was
explicitly written to support the build of a release tarball, where
the *.elc files are always present, and regenerating them is just a
waste of cycles, and also runs the risk of creating a .elc file that
is not fully functional, due to some peculiarity of the platform or
the build environment.
(defun batch-native-compile (&optional for-tarball) "Perform batch native compilation of remaining command-line arguments. | |
Native compilation equivalent of `batch-byte-compile'. | |
Use this from the command line, with `-batch'; it won't work | |
in an interactive Emacs session. | |
Optional argument FOR-TARBALL non-nil means the file being compiled | |
as part of building the source tarball, in which case the .eln file | |
will be placed under the native-lisp/ directory (actually, in the | |
last directory in `native-comp-eln-load-path')." |
> However, since the eln file can be generated without the elc file, it also begs the question
> of why the use of the eln file is conditioned on the existence of the elc file in the
> first place. Are there situations where the eln file would be incorrect to use
> without the byte-compiled file in place?
Andrea was asked this question several times and explained his design,
you can find it in the archives. Basically, native compilation is
driven by byte compilation, and is a kind of side effect of it.
I have an experimental branch where the .elc are not produced at all bymake bootstrap. The only complication is that for the Emacs build I hadto modify the process to depose files containing the doc somake-docfile.c can eat those instead of the .elc files. Other than thatwe should re-add .eln to load-suffixes. But as I'm not sure this is arequirement I'd prefer first to converge with the current setup. UnlessI get some specific input on that I think I'll keep this idea and itsbranch aside for now :)
[Prev in Thread] | Current Thread | [Next in Thread] |