25 lines
657 B
Text
25 lines
657 B
Text
import Lake
|
|
open System Lake DSL
|
|
|
|
package ffi {
|
|
srcDir := "lean"
|
|
precompileModules := true
|
|
}
|
|
|
|
lean_lib FFI
|
|
|
|
@[defaultTarget] lean_exe test {
|
|
root := `Main
|
|
}
|
|
|
|
target ffi.o (pkg : Package) : FilePath := do
|
|
let oFile := pkg.buildDir / "c" / "ffi.o"
|
|
let srcJob ← inputFile <| pkg.dir / "c" / "ffi.cpp"
|
|
buildFileAfterDep oFile srcJob fun srcFile => do
|
|
let flags := #["-I", (← getLeanIncludeDir).toString, "-fPIC"]
|
|
compileO "ffi.c" oFile srcFile flags "c++"
|
|
|
|
extern_lib libleanffi (pkg : Package) := do
|
|
let name := nameToStaticLib "leanffi"
|
|
let ffiO ← fetch <| pkg.target ``ffi.o
|
|
buildStaticLib (pkg.buildDir / "c" / name) #[ffiO]
|