37 lines
1.5 KiB
Text
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 manifest 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 manifest buildCfg [root]
|