on master help sign in
Remove dynamically loaded RTS due to 32/64-bit issues on OS X
cf9d50fDavid Christiansen
Setup.hs−14
@@ -56,14 +56,12 @@ installStdLib pkg local withoutEffects verbosity copy
56 [ "-C", "lib", "install"
56 [ "-C", "lib", "install"
57 , "TARGET=" ++ idir
57 , "TARGET=" ++ idir
58 , "IDRIS=" ++ icmd
58 , "IDRIS=" ++ icmd
59− , "RTS=" ++ rtsDir local
60 ]
59 ]
61 unless withoutEffects $
60 unless withoutEffects $
62 make verbosity
61 make verbosity
63 [ "-C", "effects", "install"
62 [ "-C", "effects", "install"
64 , "TARGET=" ++ idir
63 , "TARGET=" ++ idir
65 , "IDRIS=" ++ icmd
64 , "IDRIS=" ++ icmd
66− , "RTS=" ++ rtsDir local
67 ]
65 ]
68 let idirRts = idir </> "rts"
66 let idirRts = idir </> "rts"
69 putStrLn $ "Installing run time system in " ++ idirRts
67 putStrLn $ "Installing run time system in " ++ idirRts
@@ -71,7 +69,6 @@ installStdLib pkg local withoutEffects verbosity copy
71 [ "-C", "rts", "install"
69 [ "-C", "rts", "install"
72 , "TARGET=" ++ idirRts
70 , "TARGET=" ++ idirRts
73 , "IDRIS=" ++ icmd
71 , "IDRIS=" ++ icmd
74− , "RTS=" ++ rtsDir local
75 ]
72 ]
76
73
77installJavaLib pkg local verbosity copy version = do
74installJavaLib pkg local verbosity copy version = do
@@ -106,26 +103,17 @@ checkStdLib local withoutEffects verbosity
106 make verbosity
103 make verbosity
107 [ "-C", "lib", "check"
104 [ "-C", "lib", "check"
108 , "IDRIS=" ++ icmd
105 , "IDRIS=" ++ icmd
109− , "RTS=" ++ rtsDir local
110 ]
106 ]
111 unless withoutEffects $
107 unless withoutEffects $
112 make verbosity
108 make verbosity
113 [ "-C", "effects", "check"
109 [ "-C", "effects", "check"
114 , "IDRIS=" ++ icmd
110 , "IDRIS=" ++ icmd
115− , "RTS=" ++ rtsDir local
116 ]
111 ]
117 make verbosity
112 make verbosity
118 [ "-C", "rts", "check"
113 [ "-C", "rts", "check"
119 , "IDRIS=" ++ icmd
114 , "IDRIS=" ++ icmd
120 ]
115 ]
121
116
122−buildRTS dir verbosity
123− = do putStrLn "Building RTS..."
124− make verbosity
125− [ "-C", "rts", "build"
126− , "DIST=../" ++ dir
127− ]
128−
129checkJavaLib verbosity = mvn verbosity [ "-f", "java" </> "pom.xml", "package" ]
117checkJavaLib verbosity = mvn verbosity [ "-f", "java" </> "pom.xml", "package" ]
130
118
131javaFlag flags =
119javaFlag flags =
@@ -180,8 +168,6 @@ main = do
180 cleanJavaLib verb
168 cleanJavaLib verb
181 , postBuild = \ _ flags _ lbi -> do
169 , postBuild = \ _ flags _ lbi -> do
182 let verb = S.fromFlag $ S.buildVerbosity flags
170 let verb = S.fromFlag $ S.buildVerbosity flags
183− let distdir = buildDir lbi
184− buildRTS distdir verb
185 let withoutEffects = noEffectsFlag $ configFlags lbi
171 let withoutEffects = noEffectsFlag $ configFlags lbi
186 checkStdLib lbi withoutEffects verb
172 checkStdLib lbi withoutEffects verb
187 when (javaFlag $ configFlags lbi) (checkJavaLib verb)
173 when (javaFlag $ configFlags lbi) (checkJavaLib verb)
effects/Makefile+4−4
@@ -1,13 +1,13 @@
1
1
2check: .PHONY
2check: .PHONY
3− $(IDRIS) --dynamicrts $(RTS) --build effects.ipkg
3+ $(IDRIS) --build effects.ipkg
4
4
5recheck: clean check
5recheck: clean check
6
6
7−install:
7+install:
8− $(IDRIS) --dynamicrts $(RTS) --install effects.ipkg
8+ $(IDRIS) --install effects.ipkg
9
9
10clean: .PHONY
10clean: .PHONY
11− $(IDRIS) --dynamicrts $(RTS) --clean effects.ipkg
11+ $(IDRIS) --clean effects.ipkg
12
12
13.PHONY:
13.PHONY:
lib/Makefile+3−3
@@ -1,14 +1,14 @@
1
1
2check: .PHONY
2check: .PHONY
3− $(IDRIS) --dynamicrts $(RTS) --build base.ipkg
3+ $(IDRIS) --build base.ipkg
4
4
5recheck: clean check
5recheck: clean check
6
6
7install:
7install:
8− $(IDRIS) --dynamicrts $(RTS) --install base.ipkg
8+ $(IDRIS) --install base.ipkg
9
9
10clean: .PHONY
10clean: .PHONY
11− $(IDRIS) --dynamicrts $(RTS) --clean base.ipkg
11+ $(IDRIS) --clean base.ipkg
12
12
13linecount: .PHONY
13linecount: .PHONY
14 wc -l *.idr Network/*.idr Language/*.idr Prelude/*.idr Data/*.idr Control/Monad/*.idr Control/*.idr
14 wc -l *.idr Network/*.idr Language/*.idr Prelude/*.idr Data/*.idr Control/Monad/*.idr Control/*.idr
rts/Makefile+1−15
@@ -8,13 +8,7 @@ ifneq ($(GMP_INCLUDE_DIR),)
8 CFLAGS += -isystem $(GMP_INCLUDE_DIR)
8 CFLAGS += -isystem $(GMP_INCLUDE_DIR)
9endif
9endif
10
10
11−# Build a fat lib on Mac OS X
12−ifeq ($(OS),darwin)
13− CFLAGS += -arch $(shell ghc -e System.Info.arch | tr -d '"')
14−endif
15−
16LIBTARGET = libidris_rts.a
11LIBTARGET = libidris_rts.a
17−DYLIBTARGET = libidris_rts$(SHLIB_SUFFIX)
18
12
19check : $(LIBTARGET) $(DYLIBTARGET)
13check : $(LIBTARGET) $(DYLIBTARGET)
20
14
@@ -22,17 +16,9 @@ $(LIBTARGET) : $(OBJS)
22 ar r $(LIBTARGET) $(OBJS)
16 ar r $(LIBTARGET) $(OBJS)
23 ranlib $(LIBTARGET)
17 ranlib $(LIBTARGET)
24
18
25−$(DYLIBTARGET) : $(OBJS)
26− $(CC) $(CFLAGS) -lgmp -shared -o $(DYLIBTARGET) $(OBJS)
27−
28−build: $(DYLIBTARGET)
29− mkdir -p $(DIST)/rts
30− install $(DYLIBTARGET) $(DIST)/rts
31−
32−
33install : .PHONY
19install : .PHONY
34 mkdir -p $(TARGET)
20 mkdir -p $(TARGET)
35− install $(LIBTARGET) $(DYLIBTARGET) $(HDRS) $(TARGET)
21+ install $(LIBTARGET) $(HDRS) $(TARGET)
36
22
37clean : .PHONY
23clean : .PHONY
38 rm -f $(OBJS) $(LIBTARGET) $(DYLIBTARGET)
24 rm -f $(OBJS) $(LIBTARGET) $(DYLIBTARGET)
rts/idris_stdfgn.c−24
@@ -25,30 +25,6 @@ int fileError(void* h) {
25 return ferror(f);
25 return ferror(f);
26}
26}
27
27
28−char* freadStr(void* h) {
29− FILE* f = (FILE*)h;
30− char* str;
31− printf("foo");
32− if (f != NULL) {
33− fseek(f, 0L, SEEK_END);
34− size_t size = ftell(f);
35− rewind(f);
36− printf("bar");
37− str = malloc(size + sizeof(char));
38− if (str != NULL && fread(str, size, 1, f)) {
39− (*(str + size)) = '\0';
40− printf("asf");
41− } else {
42− printf("Failed to allocate string from file\n");
43− exit(1);
44− }
45− } else {
46− str = malloc(sizeof(char));
47− str[0] = '\0';
48− }
49− return str;
50−}
51−
52void fputStr(void* h, char* str) {
28void fputStr(void* h, char* str) {
53 FILE* f = (FILE*)h;
29 FILE* f = (FILE*)h;
54 fputs(str, f);
30 fputs(str, f);
rts/idris_stdfgn.h−1
@@ -8,7 +8,6 @@ void putStr(char* str);
8
8
9void* fileOpen(char* f, char* mode);
9void* fileOpen(char* f, char* mode);
10void fileClose(void* h);
10void fileClose(void* h);
11−char* freadStr(void* h);
12void fputStr(void*h, char* str);
11void fputStr(void*h, char* str);
13
12
14int isNull(void* ptr);
13int isNull(void* ptr);
src/Idris/AbsSyntaxTree.hs−1
@@ -232,7 +232,6 @@ data Opt = Filename String
232 | UseTarget Target
232 | UseTarget Target
233 | OutputTy OutputType
233 | OutputTy OutputType
234 | Extension LanguageExt
234 | Extension LanguageExt
235− | DynamicRTS FilePath
236 deriving (Show, Eq)
235 deriving (Show, Eq)
237
236
238-- Parsed declarations
237-- Parsed declarations
src/Idris/REPL.hs+1−6
@@ -496,7 +496,6 @@ parseArgs ("--dumpdefuns":n:ns) = DumpDefun n : (parseArgs ns)
496parseArgs ("--dumpcases":n:ns) = DumpCases n : (parseArgs ns)
496parseArgs ("--dumpcases":n:ns) = DumpCases n : (parseArgs ns)
497parseArgs ("--target":n:ns) = UseTarget (parseTarget n) : (parseArgs ns)
497parseArgs ("--target":n:ns) = UseTarget (parseTarget n) : (parseArgs ns)
498parseArgs ("-XTypeProviders":ns) = Extension TypeProviders : (parseArgs ns)
498parseArgs ("-XTypeProviders":ns) = Extension TypeProviders : (parseArgs ns)
499−parseArgs ("--dynamicrts":f:ns) = DynamicRTS f : (parseArgs ns)
500parseArgs (n:ns) = Filename n : (parseArgs ns)
499parseArgs (n:ns) = Filename n : (parseArgs ns)
501
500
502helphead =
501helphead =
@@ -637,12 +636,8 @@ getLanguageExt :: Opt -> Maybe LanguageExt
637getLanguageExt (Extension e) = Just e
636getLanguageExt (Extension e) = Just e
638getLanguageExt _ = Nothing
637getLanguageExt _ = Nothing
639
638
640−getDynamicRTS :: Opt -> Maybe FilePath
641−getDynamicRTS (DynamicRTS f) = Just f
642−getDynamicRTS _ = Nothing
643−
644opt :: (Opt -> Maybe a) -> [Opt] -> [a]
639opt :: (Opt -> Maybe a) -> [Opt] -> [a]
645−opt = mapMaybe
640+opt = mapMaybe
646
641
647ver = showVersion version
642ver = showVersion version
648
643
src/Main.hs−14
@@ -49,7 +49,6 @@ runIdris opts = do
49 when (ShowIncs `elem` opts) $ liftIO showIncs
49 when (ShowIncs `elem` opts) $ liftIO showIncs
50 when (ShowLibs `elem` opts) $ liftIO showLibs
50 when (ShowLibs `elem` opts) $ liftIO showLibs
51 when (ShowLibdir `elem` opts) $ liftIO showLibdir
51 when (ShowLibdir `elem` opts) $ liftIO showLibdir
52− loadRTS opts
53 case opt getPkgClean opts of
52 case opt getPkgClean opts of
54 [] -> return ()
53 [] -> return ()
55 fs -> do liftIO $ mapM_ cleanPkg fs
54 fs -> do liftIO $ mapM_ cleanPkg fs
@@ -97,17 +96,4 @@ usagemsg = "Idris version " ++ ver ++ "\n" ++
97 "\t--include Show C include directories and exit (for C linking)\n" ++
96 "\t--include Show C include directories and exit (for C linking)\n" ++
98 "\t--target [target] Type the target: C, Java, bytecode, javascript, node\n"
97 "\t--target [target] Type the target: C, Java, bytecode, javascript, node\n"
99
98
100−-- | Attempt to load the RTS as a shared lib in the interpreter
101−loadRTS :: [Opt] -> Idris ()
102−loadRTS opts = (flip idrisCatch) (\e -> iputStrLn (show e)) $
103− do rtslib <- liftIO $
104− case listToMaybe . catMaybes . map getDynamicRTS $ opts of
105− Just path -> return path
106− Nothing -> getDataFileName ("rts" </> "libidris_rts")
107− handle <- liftIO (tryLoadLib rtslib)
108− case handle of
109− Nothing -> return ()
110− Just x -> do i <- getIState
111− let libs = idris_dynamic_libs i
112− putIState $ i { idris_dynamic_libs = x:libs }
113
99