on master help sign in
Some packaging fixes

In particular, locate .o and .h files correctly after package installation

commite8f4bb19b9a1e4286481e0c0268800e1ae52735f authorEdwin Brady <ecb10@st-andrews.ac.uk> dateSat 7 Sep 2013, 18:32 (13 years ago) parent966ef43
7 files changed+21−15
src/IRTS/Compiler.hs+4−1 src/Idris/AbsSyntax.hs+4−3 src/Idris/Chaser.hs+1−1 src/Idris/IBC.hs+4−2 src/Idris/Imports.hs+1−1 src/Idris/Parser.hs+4−4 src/Pkg/Package.hs+3−3
src/IRTS/Compiler.hs+4−1
@@ -47,6 +47,7 @@ compile codegen f tm
4747 libs <- getLibs codegen
4848 flags <- getFlags codegen
4949 hdrs <- getHdrs codegen
50+ impdirs <- allImportDirs
5051 let defs = defsIn ++ [(MN 0 "runMain", maindef)]
5152 -- iputStrLn $ showSep "\n" (map show defs)
5253 let (nexttag, tagged) = addTags 65536 (liftAll defs)
@@ -79,7 +80,8 @@ compile codegen f tm
7980 codegenC c f outty hdrs
8081 (concatMap mkObj objs)
8182 (concatMap mkLib libs)
82− (concatMap mkFlag flags) NONE
83+ (concatMap mkFlag flags ++
84+ concatMap incdir impdirs) NONE
8385 ViaJava ->
8486 codegenJava [] c f hdrs libs outty
8587 ViaJavaScript ->
@@ -101,6 +103,7 @@ compile codegen f tm
101103 mkLib l = "-l" ++ l ++ " "
102104 mkFlag l = l ++ " "
103105
106+ incdir i = "-I" ++ i ++ " "
104107
105108
106109irMain :: TT Name -> Idris LDecl
src/Idris/AbsSyntax.hs+4−3
@@ -483,9 +483,10 @@ setImportDirs fps = do i <- getIState
483483 let opt' = opts { opt_importdirs = fps }
484484 putIState $ i { idris_options = opt' }
485485
486−allImportDirs :: IState -> Idris [FilePath]
487−allImportDirs i = do let optdirs = opt_importdirs (idris_options i)
488− return ("." : reverse optdirs)
486+allImportDirs :: Idris [FilePath]
487+allImportDirs = do i <- getIState
488+ let optdirs = opt_importdirs (idris_options i)
489+ return ("." : reverse optdirs)
489490
490491colourise :: Idris Bool
491492colourise = do i <- getIState
src/Idris/Chaser.hs+1−1
@@ -79,7 +79,7 @@ buildTree built fp = idrisCatch (btree [] fp)
7979 let file = takeWhile (/= ' ') f
8080 iLOG $ "CHASING " ++ show file
8181 ibcsd <- valIBCSubDir i
82− ids <- allImportDirs i
82+ ids <- allImportDirs
8383 fp <- liftIO $ findImport ids ibcsd file
8484 mt <- liftIO $ getIModTime fp
8585 if (file `elem` built)
src/Idris/IBC.hs+4−2
@@ -179,7 +179,7 @@ pImports :: [FilePath] -> Idris ()
179179pImports fs
180180 = do mapM_ (\f -> do i <- getIState
181181 ibcsd <- valIBCSubDir i
182− ids <- allImportDirs i
182+ ids <- allImportDirs
183183 fp <- liftIO $ findImport ids ibcsd f
184184 if (f `elem` imported i)
185185 then iLOG $ "Already read " ++ f
@@ -257,7 +257,9 @@ pKeywords k = do i <- getIState
257257 putIState (i { syntax_keywords = k ++ syntax_keywords i })
258258
259259pObjs :: [(Codegen, FilePath)] -> Idris ()
260−pObjs os = mapM_ (uncurry addObjectFile) os
260+pObjs os = mapM_ (\ (cg, obj) -> do dirs <- allImportDirs
261+ o <- liftIO $ findInPath dirs obj
262+ addObjectFile cg o) os
261263
262264pLibs :: [(Codegen, String)] -> Idris ()
263265pLibs ls = mapM_ (uncurry addLib) ls
src/Idris/Imports.hs+1−1
@@ -70,6 +70,6 @@ findInPath :: [FilePath] -> FilePath -> IO FilePath
7070findInPath [] fp = fail $ "Can't find file " ++ fp
7171findInPath (d:ds) fp = do let p = d </> fp
7272 e <- doesFileExist p
73− if e then return p else findInPath ds p
73+ if e then return p else findInPath ds fp
7474
7575
src/Idris/Parser.hs+4−4
@@ -69,7 +69,7 @@ loadModule f
6969 = idrisCatch (do i <- getIState
7070 let file = takeWhile (/= ' ') f
7171 ibcsd <- valIBCSubDir i
72− ids <- allImportDirs i
72+ ids <- allImportDirs
7373 fp <- liftIO $ findImport ids ibcsd file
7474 if file `elem` imported i
7575 then iLOG $ "Already read " ++ file
@@ -1624,9 +1624,9 @@ pDirective syn = try (do lchar '%'; reserved "lib"; cgn <- pCodegen; lib <- strl
16241624 return [PDirective (do addLib cgn lib
16251625 addIBC (IBCLib cgn lib))])
16261626 <|> try (do lchar '%'; reserved "link"; cgn <- pCodegen; obj <- strlit;
1627− return [PDirective (do datadir <- liftIO getDataDir
1628− o <- liftIO $ findInPath [".", datadir] obj
1629− addIBC (IBCObj cgn o)
1627+ return [PDirective (do dirs <- allImportDirs
1628+ o <- liftIO $ findInPath dirs obj
1629+ addIBC (IBCObj cgn obj) -- just name, search on loading ibc
16301630 addObjectFile cgn o)])
16311631 <|> try (do lchar '%'; reserved "flag"; cgn <- pCodegen;
16321632 flag <- strlit
src/Pkg/Package.hs+3−3
@@ -34,9 +34,9 @@ buildPkg warnonly (install, fp)
3434 = do pkgdesc <- parseDesc fp
3535 ok <- mapM (testLib warnonly (pkgname pkgdesc)) (libdeps pkgdesc)
3636 when (and ok) $
37− do make (makefile pkgdesc)
38− dir <- getCurrentDirectory
37+ do dir <- getCurrentDirectory
3938 setCurrentDirectory $ dir </> sourcedir pkgdesc
39+ make (makefile pkgdesc)
4040 case (execout pkgdesc) of
4141 Nothing -> buildMods (NoREPL : Verbose : idris_opts pkgdesc)
4242 (modules pkgdesc)
@@ -50,9 +50,9 @@ buildPkg warnonly (install, fp)
5050cleanPkg :: FilePath -> IO ()
5151cleanPkg fp
5252 = do pkgdesc <- parseDesc fp
53− clean (makefile pkgdesc)
5453 dir <- getCurrentDirectory
5554 setCurrentDirectory $ dir </> sourcedir pkgdesc
55+ clean (makefile pkgdesc)
5656 mapM_ rmIBC (modules pkgdesc)
5757 case execout pkgdesc of
5858 Nothing -> return ()