From 16af1dddf40ffcb4b6816df98b6f7f01fadcfc82 Mon Sep 17 00:00:00 2001 From: tydeu Date: Tue, 21 Feb 2023 06:35:39 -0500 Subject: [PATCH] fix: include link args in shared lib trace of extern lib --- Lake/Build/Common.lean | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Lake/Build/Common.lean b/Lake/Build/Common.lean index 08375bd575..7b46d09fbe 100644 --- a/Lake/Build/Common.lean +++ b/Lake/Build/Common.lean @@ -92,14 +92,16 @@ def buildLeanSharedLibOfStatic (staticLibJob : BuildJob FilePath) (linkArgs : Array String := #[]) : SchedulerM (BuildJob FilePath) := staticLibJob.bindSync fun staticLib staticTrace => do let dynlib := staticLib.withExtension sharedLibExt - let trace ← buildFileUnlessUpToDate dynlib staticTrace do - let args := - if System.Platform.isOSX then - #[s!"-Wl,-force_load,{staticLib}"] - else - #["-Wl,--whole-archive", staticLib.toString, "-Wl,--no-whole-archive"] + let baseArgs := + if System.Platform.isOSX then + #[s!"-Wl,-force_load,{staticLib}"] + else + #["-Wl,--whole-archive", staticLib.toString, "-Wl,--no-whole-archive"] + let args := baseArgs ++ linkArgs + let depTrace := staticTrace.mix (← computeHash args) + let trace ← buildFileUnlessUpToDate dynlib depTrace do let name := dynlib.fileName.getD dynlib.toString - compileSharedLib name dynlib (args ++ linkArgs) (← getLeanc) + compileSharedLib name dynlib args (← getLeanc) return (dynlib, trace) def computeDynlibOfShared