Documentation

Lake.Config.LeanConfig

inductive Lake.Backend :

Compiler backend with which to compile Lean.

  • c : Backend

    Force the C backend.

  • llvm : Backend

    Force the LLVM backend.

  • default : Backend

    Use the default backend. Can be overridden by more specific configuration.

Instances For
    Equations
      Instances For
        Equations
          Instances For
            Equations
              Instances For

                If the left backend is default, choose the right one. Otherwise, keep the left one. This is used to implement preferential choice of backends, where the library config can refine the package config. Formally, a left absorbing monoid on {C, LLVM} with Default as the unit.

                Equations
                  Instances For
                    inductive Lake.BuildType :

                    Lake equivalent of CMake's CMAKE_BUILD_TYPE.

                    • debug : BuildType

                      Debug optimization, asserts enabled, custom debug code enabled, and debug info included in executable (so you can step through the code with a debugger and have address to source-file:line-number translation). For example, passes -O0 -g when compiling C code.

                    • relWithDebInfo : BuildType

                      Optimized, with debug info, but no debug code or asserts (e.g., passes -O3 -g -DNDEBUG when compiling C code).

                    • minSizeRel : BuildType

                      Same as release but optimizing for size rather than speed (e.g., passes -Os -DNDEBUG when compiling C code).

                    • release : BuildType

                      High optimization level and no debug info, code, or asserts (e.g., passes -O3 -DNDEBUG when compiling C code).

                    Instances For
                      Equations
                        Instances For
                          Equations
                            Instances For

                              Ordering on build types. The ordering is used to determine the minimum build version that is necessary for a build.

                              Equations

                                The arguments to pass to leanc based on the build type.

                                Equations
                                  Instances For
                                    Equations
                                      Instances For
                                        Equations
                                          Instances For

                                            The options to pass to lean based on the build type.

                                            Equations
                                              Instances For

                                                The arguments to pass to lean based on the build type.

                                                Equations
                                                  Instances For

                                                    Configuration options common to targets that build modules.

                                                    • buildType : BuildType

                                                      The mode in which the modules should be built (e.g., debug, release). Defaults to release.

                                                    • leanOptions : Array LeanOption

                                                      An Array of additional options to pass to both the Lean language server (i.e., lean --server) launched by lake serve and to lean when compiling a module's Lean source files.

                                                    • moreLeanArgs : Array String

                                                      Additional arguments to pass to lean when compiling a module's Lean source files.

                                                    • weakLeanArgs : Array String

                                                      Additional arguments to pass to lean when compiling a module's Lean source files.

                                                      Unlike moreLeanArgs, these arguments do not affect the trace of the build result, so they can be changed without triggering a rebuild. They come before moreLeanArgs.

                                                    • moreLeancArgs : Array String

                                                      Additional arguments to pass to leanc when compiling a module's C source files generated by lean.

                                                      Lake already passes some flags based on the buildType, but you can change this by, for example, adding -O0 and -UNDEBUG.

                                                    • moreServerOptions : Array LeanOption

                                                      Additional options to pass to the Lean language server (i.e., lean --server) launched by lake serve.

                                                    • weakLeancArgs : Array String

                                                      Additional arguments to pass to leanc when compiling a module's C source files generated by lean.

                                                      Unlike moreLeancArgs, these arguments do not affect the trace of the build result, so they can be changed without triggering a rebuild. They come before moreLeancArgs.

                                                    • Additional target objects to use when linking (both static and shared). These will come after the paths of native facets.

                                                    • moreLinkLibs : TargetArray Dynlib

                                                      Additional target libraries to pass to leanc when linking (e.g., for shared libraries or binary executables). These will come after the paths of other link objects.

                                                    • moreLinkArgs : Array String

                                                      Additional arguments to pass to leanc when linking (e.g., for shared libraries or binary executables). These will come after the paths of the linked objects.

                                                    • weakLinkArgs : Array String

                                                      Additional arguments to pass to leanc when linking (e.g., for shared libraries or binary executables). These will come after the paths of the linked objects.

                                                      Unlike moreLinkArgs, these arguments do not affect the trace of the build result, so they can be changed without triggering a rebuild. They come before moreLinkArgs.

                                                    • backend : Backend

                                                      Compiler backend that modules should be built using (e.g., C, LLVM). Defaults to C.

                                                    • platformIndependent : Option Bool

                                                      Asserts whether Lake should assume Lean modules are platform-independent.

                                                      • If false, Lake will add System.Platform.target to the module traces within the code unit (e.g., package or library). This will force Lean code to be re-elaborated on different platforms.

                                                      • If true, Lake will exclude platform-dependent elements (e.g., precompiled modules, external libraries) from a module's trace, preventing re-elaboration on different platforms. Note that this will not effect modules outside the code unit in question. For example, a platform-independent package which depends on a platform-dependent library will still be platform-dependent.

                                                      • If none, Lake will construct traces as natural. That is, it will include platform-dependent artifacts in the trace if they module depends on them, but otherwise not force modules to be platform-dependent.

                                                      There is no check for correctness here, so a configuration can lie and Lake will not catch it. Defaults to none.

                                                    Instances For
                                                      instance Lake.LeanConfig.instConfigInfo :
                                                      ConfigInfo `Lake.LeanConfig
                                                      Equations
                                                        Equations
                                                          Instances For