82 lines
2.5 KiB
Text
82 lines
2.5 KiB
Text
/-
|
|
Copyright (c) 2021 Mac Malone. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Mac Malone
|
|
-/
|
|
import Lake.Build.Target
|
|
import Lake.Build.Context
|
|
|
|
open System
|
|
namespace Lake
|
|
|
|
--------------------------------------------------------------------------------
|
|
/-! # Build Targets -/
|
|
--------------------------------------------------------------------------------
|
|
|
|
/-- A Lake build target. -/
|
|
abbrev BuildTarget i := Target i SchedulerM BuildTask BuildTrace
|
|
|
|
/-- An active Lake build target. -/
|
|
abbrev ActiveBuildTarget i := ActiveTarget i BuildTask BuildTrace
|
|
|
|
namespace BuildTarget
|
|
|
|
abbrev mk (info : i) (task : SchedulerM Job) : BuildTarget i :=
|
|
Target.mk info task
|
|
|
|
abbrev mk' (info : i) (task : BuildM Job) : BuildTarget i :=
|
|
Target.mk info <| task.catchFailure fun _ => pure failure
|
|
|
|
abbrev activate (self : BuildTarget i) : SchedulerM (ActiveBuildTarget i) :=
|
|
Target.activate self
|
|
|
|
abbrev bindSync (self : BuildTarget i) (f : i → BuildTrace → BuildM β) :=
|
|
Target.bindSync self f
|
|
|
|
abbrev bindOpaqueSync (self : BuildTarget i) (f : BuildTrace → BuildM β) :=
|
|
Target.bindOpaqueSync self f
|
|
|
|
end BuildTarget
|
|
|
|
namespace ActiveBuildTarget
|
|
|
|
abbrev bindSync (self : ActiveBuildTarget i) (f : i → BuildTrace → BuildM β) :=
|
|
ActiveTarget.bindSync self f
|
|
|
|
abbrev bindOpaqueSync (self : ActiveBuildTarget i) (f : BuildTrace → BuildM β) :=
|
|
ActiveTarget.bindOpaqueSync self f
|
|
|
|
end ActiveBuildTarget
|
|
|
|
--------------------------------------------------------------------------------
|
|
/-! # File Targets -/
|
|
--------------------------------------------------------------------------------
|
|
|
|
/-- A `BuildTarget` that produces a file. -/
|
|
abbrev FileTarget := BuildTarget FilePath
|
|
|
|
/-- An `ActiveBuildTarget` that produces a file. -/
|
|
abbrev ActiveFileTarget := ActiveBuildTarget FilePath
|
|
|
|
--------------------------------------------------------------------------------
|
|
/-! # Opaque Targets -/
|
|
--------------------------------------------------------------------------------
|
|
|
|
/-- A `BuildTarget` with no artifact information. -/
|
|
abbrev OpaqueTarget := BuildTarget Unit
|
|
|
|
/-- An `ActiveBuildTarget` with no artifact information. -/
|
|
abbrev ActiveOpaqueTarget := ActiveBuildTarget Unit
|
|
|
|
namespace OpaqueTarget
|
|
|
|
abbrev mk (task : SchedulerM Job) : OpaqueTarget :=
|
|
Target.opaque task
|
|
|
|
abbrev mk' (task : BuildM Job) : OpaqueTarget :=
|
|
Target.opaque <| task.catchFailure fun _ => pure failure
|
|
|
|
abbrev async (act : BuildM BuildTrace) : OpaqueTarget :=
|
|
Target.opaqueAsync act
|
|
|
|
end OpaqueTarget
|