diff options
Diffstat (limited to 'lakefile.lean')
| -rw-r--r-- | lakefile.lean | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lakefile.lean b/lakefile.lean index ef12dad..ecee22d 100644 --- a/lakefile.lean +++ b/lakefile.lean @@ -2,17 +2,24 @@ import Lean import Lake open Lake DSL +def evalPkgConfig (args : Array String) : IO (Array String) := do + let res ← IO.Process.output { cmd := "pkg-config", args := args } + if res.exitCode != 0 then + throw <| IO.userError s!"pkg-config failed: {res.stderr}" + return res.stdout.split Char.isWhitespace + |>.map (String.Slice.toString) + |>.filter (· != "") + |>.toArray + package «CWayland» { - moreLinkArgs := #["-L.lake/build/lib", "-lLibCWayland"] + moreLinkArgs := #["-L.lake/build/lib", "-lLibCWayland"] ++ (run_io evalPkgConfig #["--libs", "wayland-client"]).filter (· != "-lm") extraDepTargets := #[Lean.Name.mkStr1 "LibCWayland"] } target «LibCWayland.o» pkg : System.FilePath := do let objectFile := pkg.buildDir / "LibCWayland.o" let srcJob ← inputFile (text := .true) <| pkg.dir / "lib" / "CWayland" / "CWayland.c" - -- let cFlags ← captureProc { cmd := "pkg-config", args := #["--cflags", "libwayland-client"] } - -- let cFlags := cFlags.splitOn " " - let cFlags := #[] + let cFlags ← evalPkgConfig #["--cflags", "wayland-client"] buildFileAfterDep objectFile srcJob (fun srcFile ↦ do let cFlags := cFlags ++ #["-I", (← getLeanIncludeDir).toString, "-I", (← IO.getEnv "C_INCLUDE_PATH").getD "", "-fPIC"] compileO objectFile srcFile cFlags) |
