lean4-htt/Lake/BuildTargets.lean
2021-09-05 15:37:16 -04:00

38 lines
1.2 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.Compile
import Lake.BuildTarget
open System
namespace Lake
def oFileTarget
(oFile : FilePath) (srcTarget : FileTarget)
(args : Array String := #[]) (cmd := "c++") : FileTarget :=
Target.mk oFile do
srcTarget.mapAsync fun file trace => do
unless (← checkIfNewer oFile trace.mtime) do
compileO oFile file args cmd
trace
def staticLibTarget
(libFile : FilePath) (oFileTargets : Array FileTarget) : FileTarget :=
Target.mk libFile do
let depTarget ← Target.collectArray oFileTargets
depTarget.mapAsync fun oFiles trace => do
unless (← checkIfNewer libFile trace.mtime) do
compileStaticLib libFile oFiles
trace
def binTarget
(binFile : FilePath) (linkTargets : Array FileTarget)
(linkArgs : Array String := #[]) (cmd := "cc") : FileTarget :=
Target.mk binFile do
let depTarget ← Target.collectArray linkTargets
depTarget.mapAsync fun links trace => do
unless (← checkIfNewer binFile trace.mtime) do
compileBin binFile links linkArgs cmd
trace