From cf856b46a0de75303729c79ab87e76becef45fca Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Thu, 11 Apr 2019 09:31:49 +0200 Subject: [PATCH] rework to match the style and be more os independent --- Pm/PmDriver.icl | 46 ++++++++++++++++++++-------------------------- Pm/PmProject.icl | 12 +++++++++++- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/Pm/PmDriver.icl b/Pm/PmDriver.icl index 8e28b66..e333869 100644 --- a/Pm/PmDriver.icl +++ b/Pm/PmDriver.icl @@ -833,18 +833,18 @@ step intr (DLink ds=:{ok, newpaths, fileinfo, libsinfo, modpaths, abccache, proj // runtime objects and dynamic libs # stdl = Concat sys_libs (standardStaticLibraries tp lo.method) # stdo = Concat sys_objs (standardObjectFiles ao.stack_traces ao.profiling tp use_64_bit_processor) - # ((stdoOk,ofiles,abcPathsCache), ps) + # (stdoOk,ofiles,abcPathsCache, ps) = case ao.standard_rte of - True -> accFiles (AccTuple4 (GetPathNames (Map (\x->("", x)) stdo) Nil srcpaths abcPathsCache)) ps - False -> ((True,Nil,abcPathsCache), ps) + True -> GetPathNames (Map (\x->("", x)) stdo) Nil srcpaths abcPathsCache ps + False -> (True,Nil,abcPathsCache, ps) | not stdoOk # line = Level3 ["Link error: File: '" +++ (Head ofiles) +++ "' not found."] # ps = showInfo line ps = continue False newpaths False fileinfo libsinfo modpaths project intr (abccache, ps) - # ((stdlOk,lfiles,abcPathsCache), ps) + # (stdlOk,lfiles,abcPathsCache, ps) = case ao.standard_rte of - True -> accFiles (AccTuple4 (GetPathNames (Map (\x->("", x)) stdl) Nil srcpaths abcPathsCache)) ps - False -> ((True,Nil,abcPathsCache), ps) + True -> GetPathNames (Map (\x->("", x)) stdl) Nil srcpaths abcPathsCache ps + False -> (True,Nil,abcPathsCache, ps) | not stdlOk # line = Level3 ["Link error: File: '" +++ (Head lfiles) +++ "' not found."] # ps = showInfo line ps @@ -870,12 +870,12 @@ step intr (DLink ds=:{ok, newpaths, fileinfo, libsinfo, modpaths, abccache, proj // module imported objects and dynamic libs # (objs, libs) = PR_GetABCLinkInfo project # linkObjFileNames = Map (\(d, a)->(d, append_object_file_extension_if_dot_at_end tp use_64_bit_processor a)) objs - # ((objPathsOk,ofiles,abcPathsCache), ps) - = accFiles (AccTuple4 (GetPathNames linkObjFileNames ofiles srcpaths abcPathsCache)) ps - # ((_,ofiles`,abcPathsCache), ps) - = accFiles (AccTuple4 (GetPathNames /*abcLinkInfo.*/linkObjFileNames ofiles` srcpaths abcPathsCache)) ps - # ((libPathsOk,lfiles,abcPathsCache), ps) - = accFiles (AccTuple4 (GetPathNames libs lfiles srcpaths abcPathsCache)) ps + # (objPathsOk,ofiles,abcPathsCache, ps) + = GetPathNames linkObjFileNames ofiles srcpaths abcPathsCache ps + # (_,ofiles`,abcPathsCache, ps) + = GetPathNames /*abcLinkInfo.*/linkObjFileNames ofiles` srcpaths abcPathsCache ps + # (libPathsOk,lfiles,abcPathsCache, ps) + = GetPathNames libs lfiles srcpaths abcPathsCache ps | not objPathsOk # line = Level3 ["Link error: File: '" +++ (Head ofiles) +++ "' not found."] # ps = showInfo line ps @@ -1598,23 +1598,17 @@ CheckExecOutOfDate gen execpath fileinfo project ps = (False,ps) //-- dircache functions -GetPathNames :: !(List (String, String)) !(List String) !(List String) !*DirCache !*Files -> (.Bool,List String,!*DirCache, !*Files) -GetPathNames Nil acc srcpaths cache files - = (True, acc, cache, files) -GetPathNames ((mod, fn):!fns) acc srcpaths cache files +GetPathNames :: !(List (String, String)) !(List String) !(List String) !*DirCache !*GeneralSt -> (.Bool,List String,!*DirCache, !*GeneralSt) +GetPathNames Nil acc srcpaths cache ps + = (True, acc, cache, ps) +GetPathNames ((mod, fn):!fns) acc srcpaths cache ps # (ok,pn,_,cache) = DC_Search fn cache | ok - = GetPathNames fns (pn +++ DirSeparatorString +++ fn :! acc) srcpaths cache files - # ((ok, pn), files) = FindHModule (dropLastComponent mod (size mod - 2)) ("/Clean System Files/" +++ fn) srcpaths files + = GetPathNames fns (pn +++ DirSeparatorString +++ fn :! acc) srcpaths cache ps + # ((ok, pn), ps) = accFiles (FindHModule mod (DirSeparatorString+++SystemDir+++DirSeparatorString+++fn) srcpaths) ps | ok - = GetPathNames fns (pn :! acc) srcpaths cache files - = (False, (fn :! Nil), cache, files) -where - dropLastComponent :: !String !Int -> !String - dropLastComponent s 0 = s - dropLastComponent s i - | s.[i] == '.' = s % (0, i-1) - = dropLastComponent s (i - 1) + = GetPathNames fns (pn :! acc) srcpaths cache ps + = (False, (fn :! Nil), cache, ps) // Lookup Module Paths in Directory Cache LookupModulePaths :: !(List .String) !*DirCache !*Files -> (Bool,.[!ModuleDirAndName],*DirCache,!*Files); diff --git a/Pm/PmProject.icl b/Pm/PmProject.icl index bc1d22e..efa085b 100644 --- a/Pm/PmProject.icl +++ b/Pm/PmProject.icl @@ -750,7 +750,17 @@ PR_GetABCLinkInfo project=:{inflist} # allLinkInfoRecords = map toRecord (StrictListToList inflist); = foldl mergeTwoRecords emptyRecord allLinkInfoRecords; where - toRecord {InfListItem | mn,info={abcLinkInfo}} = (Map (\x->(mn, x)) abcLinkInfo.linkObjFileNames ,Map (\x->(mn, x)) abcLinkInfo.linkLibraryNames) + toRecord {InfListItem | mn,info={abcLinkInfo}} = + (Map mkHierarchical abcLinkInfo.linkObjFileNames + ,Map mkHierarchical abcLinkInfo.linkLibraryNames) + where + mkHierarchical file = (removeLastComponent mn (size mn - 2), file) + + removeLastComponent s 0 = "" + removeLastComponent s i + | s.[i] == '.' = s % (0, i-1) + = removeLastComponent s (i-1) + mergeTwoRecords (objs, libs) (cobjs, clibs) = (UnionList objs cobjs, UnionList libs clibs) emptyRecord = (Nil, Nil); -- GitLab