Data Structures #
Standard path of elan
in a Elan installation.
Instances For
- home : Lake.FilePath
- elan : Lake.FilePath
- binDir : Lake.FilePath
- toolchainsDir : Lake.FilePath
Information about the local Elan setup.
Instances For
Standard path of lean
in a Lean installation.
Instances For
Standard path of leanc
in a Lean installation.
Instances For
Standard path of llvm-ar
in a Lean installation.
Instances For
Standard path of clang
in a Lean installation.
Instances For
- sysroot : Lake.FilePath
- githash : String
- srcDir : Lake.FilePath
- leanLibDir : Lake.FilePath
- includeDir : Lake.FilePath
- systemLibDir : Lake.FilePath
- binDir : Lake.FilePath
- lean : Lake.FilePath
- leanc : Lake.FilePath
- ar : Lake.FilePath
- cc : Lake.FilePath
- customCc : Bool
Path information about the local Lean installation.
Instances For
The LEAN_CC
of the Lean installation.
Instances For
Standard path of lake
in a Lake installation.
Instances For
- home : Lake.FilePath
- srcDir : Lake.FilePath
- binDir : Lake.FilePath
- libDir : Lake.FilePath
- lake : Lake.FilePath
Path information about the local Lake installation.
Instances For
Construct a Lake installation co-located with the specified Lean installation.
Instances For
Detection Functions #
Attempt to detect a Elan installation by checking the ELAN_HOME
environment variable for a installation location.
Instances For
Construct the LeanInstall
object for the given Lean sysroot.
Does the following:
- Invokes
lean
to find out itsgithash
andLean.toolchain
- Finds the
ar
andcc
to use with Lean. - Computes the sub-paths of the Lean install.
For (1), if the invocation fails, githash
and toolchain
are set
to the empty string.
For (2), if LEAN_AR
or LEAN_CC
are defined, it uses those paths.
Otherwise, if Lean is packaged with an llvm-ar
and/or clang
, use them.
If not, use the ar
and/or cc
in the system's PATH
. This last step is
needed because internal builds of Lean do not bundle these tools
(unlike user-facing releases).
We also track whether LEAN_CC
was set to determine whether it should
be set in the future for lake env
. This is because if LEAN_CC
was not set,
it needs to remain not set for leanc
to work.
Even setting it to the bundled compiler will break leanc
-- see
leanprover/lean4#1281.
For (3), it assumes that the Lean installation is organized the normal way.
That is, with its binaries located in
, its
Lean libraries in
, and its system libraries in
.
Instances For
Instances For
Attempt to detect the installation of the given lean
command
by calling findLeanCmdHome?
. See LeanInstall.get
for how it assumes the
Lean install is organized.
Instances For
Check if the running Lake's executable is co-located with Lean, and, if so,
try to return their joint home by assuming they are both located at
.
Instances For
Attempt to detect a specified Lake's executable's home by assuming
the executable is located at
.
Instances For
Attempt to detect Lean's installation by first checking the
LEAN_SYSROOT
environment variable and then by trying findLeanCmdHome?
.
See LeanInstall.get
for how it assumes the Lean install is organized.
Instances For
Attempt to detect Lake's installation by
first checking the LAKE_HOME
environment variable
and then by trying the lakePackageHome?
of the running executable.
It assumes that the Lake installation is organized the same way it is built.
That is, with its binary located at
and its static
library and .olean
files in
, and its source files
located directly in
.
Instances For
Attempt to automatically detect an Elan, Lake, and Lean installation.
First, it calls findElanInstall?
to detect a Elan installation.
Then it attempts to detect if Lake and Lean are part of a single installation
where the lake
executable is co-located with the lean
executable (i.e., they
are in the same directory). If Lean and Lake are not co-located, Lake will
attempt to find the their installations separately by calling
findLeanInstall?
and findLakeInstall?
.
When co-located, Lake will assume that Lean and Lake's binaries are located in
, their Lean libraries in
, Lean's source files
in
, and Lake's source files in
,
following the pattern of a regular Lean toolchain.