Documentation

Lake.DSL.Targets

DSL for Targets & Facets #

Macros for declaring Lake targets and facets.

Facet Declarations #

@[reducible, inline]
Equations
  • One or more equations did not get rendered due to their size.
Instances For

    Define a new module facet. Has one form:

    module_facet «facet-name» (mod : Module) : α :=
      /- build term of type `FetchM (BuildJob α)` -/
    

    The mod parameter (and its type specifier) is optional.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[reducible, inline]
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Define a new package facet. Has one form:

        package_facet «facet-name» (pkg : Package) : α :=
          /- build term of type `FetchM (BuildJob α)` -/
        

        The pkg parameter (and its type specifier) is optional.

        Instances For
          @[reducible, inline]
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            Define a new library facet. Has one form:

            library_facet «facet-name» (lib : LeanLib) : α :=
              /- build term of type `FetchM (BuildJob α)` -/
            

            The lib parameter (and its type specifier) is optional.

            Instances For

              Custom Target Declaration #

              @[reducible, inline]
              abbrev Lake.DSL.mkTargetDecl (α : Type) (pkgName target : Lean.Name) [Lake.FamilyDef Lake.CustomData (pkgName, target) (Lake.BuildJob α)] (f : Lake.NPackage pkgNameLake.FetchM (Lake.BuildJob α)) :
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                Define a new custom target for the package. Has one form:

                target «target-name» (pkg : NPackage _package.name) : α :=
                  /- build term of type `FetchM (BuildJob α)` -/
                

                The pkg parameter (and its type specifier) is optional. It is of type NPackage _package.name to provably demonstrate the package provided is the package in which the target is defined.

                Instances For

                  Lean Library & Executable Target Declarations #

                  Define a new Lean library target for the package. Can optionally be provided with a configuration of type LeanLibConfig. Has many forms:

                  lean_lib «target-name»
                  lean_lib «target-name» { /- config opts -/ }
                  lean_lib «target-name» where /- config opts -/
                  
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[reducible, inline]

                    Define a new Lean library target for the package. Can optionally be provided with a configuration of type LeanLibConfig. Has many forms:

                    lean_lib «target-name»
                    lean_lib «target-name» { /- config opts -/ }
                    lean_lib «target-name» where /- config opts -/
                    
                    Instances For

                      Define a new Lean binary executable target for the package. Can optionally be provided with a configuration of type LeanExeConfig. Has many forms:

                      lean_exe «target-name»
                      lean_exe «target-name» { /- config opts -/ }
                      lean_exe «target-name» where /- config opts -/
                      
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[reducible, inline]

                        Define a new Lean binary executable target for the package. Can optionally be provided with a configuration of type LeanExeConfig. Has many forms:

                        lean_exe «target-name»
                        lean_exe «target-name» { /- config opts -/ }
                        lean_exe «target-name» where /- config opts -/
                        
                        Instances For

                          External Library Target Declaration #

                          Define a new external library target for the package. Has one form:

                          extern_lib «target-name» (pkg : NPackage _package.name) :=
                            /- build term of type `FetchM (BuildJob FilePath)` -/
                          

                          The pkg parameter (and its type specifier) is optional. It is of type NPackage _package.name to provably demonstrate the package provided is the package in which the target is defined.

                          The term should build the external library's static library.

                          Instances For