24 lines
929 B
Text
24 lines
929 B
Text
/-
|
|
Copyright (c) 2022 Mac Malone. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Mac Malone
|
|
-/
|
|
import Lake.Build.Targets
|
|
|
|
namespace Lake
|
|
|
|
/-! # Build Executable -/
|
|
|
|
protected def LeanExe.recBuildExe
|
|
(self : LeanExe) : IndexBuildM (BuildJob FilePath) := do
|
|
let (_, imports) ← self.root.imports.recBuild
|
|
let linkTargets := #[Target.active <| ← self.root.o.recBuild]
|
|
let mut linkTargets ← imports.foldlM (init := linkTargets) fun arr mod => do
|
|
let mut arr := arr
|
|
for facet in mod.nativeFacets do
|
|
arr := arr.push <| Target.active <| ← recBuild <| mod.facet facet.name
|
|
return arr
|
|
let deps := (← recBuild <| self.pkg.facet `deps).push self.pkg
|
|
for dep in deps do for lib in dep.externLibs do
|
|
linkTargets := linkTargets.push <| Target.active <| ← lib.static.recBuild
|
|
leanExeTarget self.name self.file linkTargets self.linkArgs |>.activate
|