Commit 561debcd authored by Mart Lubbers's avatar Mart Lubbers

Merge branch 'master' of gitlab.science.ru.nl:clean-and-itasks/clean-ide into...

Merge branch 'master' of gitlab.science.ru.nl:clean-and-itasks/clean-ide into 2-wip-cpm-environment-options
parents cb5473e1 e7a90301
Pipeline #21026 passed with stage
in 56 seconds
......@@ -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)
# (stdoOk,ofiles,abcPathsCache, ps)
= case ao.standard_rte of
True -> GetPathNames stdo Nil abcPathsCache
False -> (True,Nil,abcPathsCache)
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)
# (stdlOk,lfiles,abcPathsCache, ps)
= case ao.standard_rte of
True -> GetPathNames stdl Nil abcPathsCache
False -> (True,Nil,abcPathsCache)
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
......@@ -868,13 +868,14 @@ step intr (DLink ds=:{ok, newpaths, fileinfo, libsinfo, modpaths, abccache, proj
# ofiles = Reverse2 clmodpaths ofiles
// module imported objects and dynamic libs
# abcLinkInfo = PR_GetABCLinkInfo project
# linkObjFileNames = Map (append_object_file_extension_if_dot_at_end tp use_64_bit_processor) abcLinkInfo.linkObjFileNames
# (objPathsOk,ofiles,abcPathsCache)
= GetPathNames linkObjFileNames ofiles abcPathsCache
# (_,ofiles`,abcPathsCache) = GetPathNames /*abcLinkInfo.*/linkObjFileNames ofiles` abcPathsCache
# (libPathsOk,lfiles,abcPathsCache)
= GetPathNames abcLinkInfo.linkLibraryNames lfiles abcPathsCache
# (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)
= 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
......@@ -1597,15 +1598,17 @@ CheckExecOutOfDate gen execpath fileinfo project ps
= (False,ps)
//-- dircache functions
GetPathNames :: !(List String) !(List String) !*DirCache -> (.Bool,List String,!*DirCache)
GetPathNames Nil acc cache
= (True, acc, cache)
GetPathNames (fn:!fns) acc cache
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) cache
= (False, (fn :! Nil), cache)
= 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 ps
= (False, (fn :! Nil), cache, ps)
// Lookup Module Paths in Directory Cache
LookupModulePaths :: !(List .String) !*DirCache !*Files -> (Bool,.[!ModuleDirAndName],*DirCache,!*Files);
......
......@@ -96,7 +96,8 @@ PR_GetLinkOptions :: !Project -> LinkOptions
PR_AddABCInfo :: !ModuleDirAndName !(List LinkObjFileName) !(List LinkLibraryName) !CompilerOptions !Project -> Project
PR_GetABCLinkInfo :: !Project -> ABCLinkInfo
// Retrieves the import object files and libraries together with their modules
PR_GetABCLinkInfo :: !Project -> (!(List (Modulename, LinkObjFileName)), !(List (Modulename, LinkLibraryName)))
PR_GetStaticLibsInfo :: !Project -> StaticLibInfo
PR_SetStaticLibsInfo :: !StaticLibInfo !Project -> Project
......
......@@ -745,18 +745,24 @@ SubstitutePaths applicationDir projectDir list
SubstitutePath applicationDir projectDir path
:== symPath applicationDir projectDir path
PR_GetABCLinkInfo :: !Project -> ABCLinkInfo;
PR_GetABCLinkInfo :: !Project -> (!(List (Modulename, LinkObjFileName)), !(List (Modulename, LinkLibraryName)))
PR_GetABCLinkInfo project=:{inflist}
# allLinkInfoRecords = map (\{InfListItem | info={abcLinkInfo}} -> abcLinkInfo) (StrictListToList inflist);
oneLinkInfoRecord = foldl mergeTwoRecords emptyRecord allLinkInfoRecords;
= oneLinkInfoRecord;
# allLinkInfoRecords = [toRecord el\\el<|-inflist];
= foldl mergeTwoRecords emptyRecord allLinkInfoRecords;
where
mergeTwoRecords { linkObjFileNames=linkObjFileNames1, linkLibraryNames=linkLibraryNames1}
{ linkObjFileNames=linkObjFileNames2, linkLibraryNames=linkLibraryNames2}
= { linkObjFileNames = UnionStringList linkObjFileNames2 linkObjFileNames1,
linkLibraryNames = UnionStringList linkLibraryNames2 linkLibraryNames1};
emptyRecord
= { linkObjFileNames = Nil, linkLibraryNames = Nil};
toRecord {InfListItem | mn,info={abcLinkInfo}} =
(Map mkHierarchical abcLinkInfo.linkObjFileNames
,Map mkHierarchical abcLinkInfo.linkLibraryNames)
where
mkHierarchical linkobj = (removeLastComponent mn (max 0 (size mn - 1)), linkobj)
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);
PR_GetStaticLibsInfo :: !Project -> StaticLibInfo
PR_GetStaticLibsInfo {Project | staticLibInfo} = staticLibInfo
......
......@@ -35,6 +35,7 @@ RemoveStringFromList :: !String !(List String) -> List String
RemoveMember :: a !u:(List a) -> v:List a | == a, [u <= v]
RemoveMembers :: !u:(List a) !.(List a) -> v:List a | == a, [u <= v]
UnionStringList :: !(List String) !(List String) -> List String
UnionList :: !(List a) !(List a) -> List a | Ord a
StringOccurs :: !String !.(List String) -> Bool
SortStrings :: !.(List String) -> .List String
EQStrings :: !(List String) !(List String) -> Bool
......
......@@ -131,6 +131,14 @@ UnionStringList xl=:(x:!xs) yl=:(y:!ys)
| x > y = y :! UnionStringList xl ys;
= x :! UnionStringList xs ys;
UnionList :: !(List a) !( List a) -> (List a) | Ord a;
UnionList Nil ys = ys;
UnionList xs Nil = xs;
UnionList xl=:(x:!xs) yl=:(y:!ys)
| x < y = x :! UnionList xs yl;
| x > y = y :! UnionList xl ys;
= x :! UnionList xs ys;
StringOccurs :: !String !.(List String) -> Bool;
StringOccurs s Nil = False;
StringOccurs s (x:!xs) | x == s = True;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment