@@ -1,3 +1,4 @@
1import Distribution.Simple
2import Distribution.Simple
2import Distribution.Simple.LocalBuildInfo
3import Distribution.Simple.LocalBuildInfo
3import Distribution.Simple.Setup
4import Distribution.Simple.Setup
@@ -13,10 +14,13 @@ import System.Exit
13main = defaultMainWithHooks hk
14main = defaultMainWithHooks hk
15 hk = simpleUserHooks { buildHook = \pd lbi uh bf -> do
16 hk = simpleUserHooks { buildHook = \pd lbi uh bf -> do
16− let ccProg = Program "gcc" undefined undefined undefined
17+ let ccProg0 = Program "gcc" undefined undefined undefined
18+ ccProg1 = Program "clang" undefined undefined undefined
17− mConf = lookupProgram ccProg (withPrograms lbi)
19+ f x = lookupProgram x (withPrograms lbi)
20+ mConf = f ccProg0 `mplus` f ccProg1
18 err = error "Could not determine C compiler"
21 err = error "Could not determine C compiler"
19 cc = locationPath . programLocation . maybe err id $ mConf
22 cc = locationPath . programLocation . maybe err id $ mConf
23+ print (withPrograms lbi)
20 b <- canUseRDRAND cc
24 b <- canUseRDRAND cc
21 let newWithPrograms1 = userSpecifyArgs "gcc" cArgs (withPrograms lbi)
25 let newWithPrograms1 = userSpecifyArgs "gcc" cArgs (withPrograms lbi)
22 newWithPrograms = userSpecifyArgs "ghc" cArgsHC newWithPrograms1
26 newWithPrograms = userSpecifyArgs "ghc" cArgsHC newWithPrograms1
@@ -33,6 +37,7 @@ cArgsHC = map ("-optc" ++) cArgs
33canUseRDRAND :: FilePath -> IO Bool
37canUseRDRAND :: FilePath -> IO Bool
34canUseRDRAND cc = do
38canUseRDRAND cc = do
35 withTempDirectory normal "" "testRDRAND" $ \tmpDir -> do
39 withTempDirectory normal "" "testRDRAND" $ \tmpDir -> do
40+ -- withTempDirectory normal False "" "testRDRAND" $ \tmpDir -> do
36 writeFile (tmpDir ++ "/testRDRAND.c")
41 writeFile (tmpDir ++ "/testRDRAND.c")
37 (unlines [ "#include <stdint.h>"
42 (unlines [ "#include <stdint.h>"
38 , "int main() {"
43 , "int main() {"