lean4-htt/Leanpkg2/Build.lean
2021-05-29 08:54:48 -04:00

37 lines
1.5 KiB
Text

/-
Copyright (c) 2017 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Gabriel Ebner, Sebastian Ullrich, Mac Malone
-/
import Leanpkg2.Resolve
import Leanpkg2.BuildCore
import Leanpkg2.Configure
import Leanpkg2.Make
open System
namespace Leanpkg2
def buildImports (manifest : Manifest) (imports : List String) (leanArgs : List String) : IO Unit := do
let cfg ← configure manifest
let imports := imports.map (·.toName)
let root ← getRootPart <| manifest.effectivePath
let localImports := imports.filter (·.getRoot == root)
if localImports != [] then
let buildCfg : Build.Config := { pkg := root, leanArgs, leanPath := cfg.leanPath, moreDeps := cfg.moreDeps }
if ← FilePath.pathExists "Makefile" then
let oleans := localImports.map fun i => Lean.modToFilePath "build" i "olean" |>.toString
execMake manifest oleans buildCfg
else
Build.buildModules buildCfg localImports
IO.println cfg.leanPath
IO.println cfg.leanSrcPath
def build (manifest : Manifest) (makeArgs leanArgs : List String := []) : IO Unit := do
let cfg ← configure manifest
let root ← getRootPart <| manifest.effectivePath
let buildCfg : Build.Config := { pkg := root, leanArgs, leanPath := cfg.leanPath, moreDeps := cfg.moreDeps }
--if makeArgs != [] || (← FilePath.pathExists "Makefile") then
execMake manifest makeArgs buildCfg
--else
-- Build.buildModules buildCfg [root]