A Lean library's declarative configuration.
- srcDir : System.FilePathThe subdirectory of the package's source directory containing the library's Lean source files. Defaults simply to said srcDir.(This will be passed to leanas the-Roption.)
- The root module(s) of the library. Submodules of these roots (e.g., - Lib.Fooof- Lib) are considered part of the library. Defaults to a single root of the target's name.
- libName : StringThe name of the library artifact. Used as a base for the file names of its static and dynamic binaries. Defaults to the mangled name of the target. 
- libPrefixOnWindows : BoolWhether static and shared binaries of this library should be prefixed with libon Windows.Unlike Unix, Windows does not require native libraries to start with liband, by convention, they usually do not. However, for consistent naming across all platforms, users may wish to enable this.Defaults to false.
- needs : Array PartialBuildKeyAn Arrayof targets to build before the executable's modules.
- precompileModules : BoolWhether to compile each of the library's modules into a native shared library that is loaded whenever the module is imported. This speeds up evaluation of metaprograms and enables the interpreter to run functions marked @[extern].Defaults to false.
- An - Arrayof library facets to build on a bare- lake buildof the library. For example,- #[LeanLib.sharedLib]will build the shared library facet.
- nativeFacets (shouldExport : Bool) : Array (ModuleFacet System.FilePath)The module facets to build and combine into the library's static and shared libraries. If shouldExportis true, the module facets should export any symbols a user may expect to lookup in the library. For example, the Lean interpreter will use exported symbols in linked libraries.Defaults to a singleton of Module.oExportFacet(ifshouldExport) orModule.oFacet. That is, the object files compiled from the Lean sources, potentially with exported Lean symbols.
- allowImportAll : BoolWhether downstream packages can import allmodules of this library.If enabled, downstream users will be able to access the privateinternals of modules, including definition bodies not marked as@[expose]. This may also, in the future, prevent compiler optimization which rely onprivatedefinitions being inaccessible outside their own package.Defaults to false.
Instances For
Equations
Equations
Equations
Equations
Equations
Equations
- Lake.LeanLibConfig.instConfigInfo = { fields := Lake.LeanLibConfig._fields, arity := 1 }
Equations
Equations
- Lake.LeanLibConfig.globs.instConfigField = { toConfigProj := Lake.LeanLibConfig.globs._proj }
Equations
Equations
Equations
- Lake.LeanLibConfig.roots.instConfigField = { toConfigProj := Lake.LeanLibConfig.roots._proj }
Equations
- Lake.LeanLibConfig.needs.instConfigField = { toConfigProj := Lake.LeanLibConfig.needs._proj }
Equations
- Lake.LeanLibConfig.libName.instConfigField = { toConfigProj := Lake.LeanLibConfig.libName._proj }
Equations
- Lake.LeanLibConfig.srcDir.instConfigField = { toConfigProj := Lake.LeanLibConfig.srcDir._proj }
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
The library's name.
Instances For
Whether the given module is considered local to the library.
Equations
- Lake.LeanLibConfig.isLocalModule mod self = ((self.roots.any fun (root : Lean.Name) => root.isPrefixOf mod) || self.globs.any fun (glob : Lake.Glob) => Lake.Glob.matches mod glob)
Instances For
Whether the given module is a buildable part of the library.
Equations
- One or more equations did not get rendered due to their size.