@@ -137,17 +137,33 @@ generateTargetModule verbosity dir targetDir = do
137 ++ " dir <- getDataDir\n"
137 ++ " dir <- getDataDir\n"
138 ++ " return (dir ++ \"/\" ++ name)"
138 ++ " return (dir ++ \"/\" ++ name)"
140+-- a module that has info about existence and location of a bundled toolchain
141+generateToolchainModule verbosity srcDir toolDir = do
142+ let commonContent = "module Tools_idris where\n\n"
143+ let toolContent = case toolDir of
144+ Just dir -> "hasBundledToolchain = True\n" ++
145+ "getToolchainDir = \"" ++ dir ++ "\"\n"
146+ Nothing -> "hasBundledToolchain = False\n" ++
147+ "getToolchainDir = \"\""
148+ let toolPath = srcDir </> "Tools_idris" Px.<.> "hs"
149+ createDirectoryIfMissingVerbose verbosity True srcDir
150+ rewriteFile toolPath (commonContent ++ toolContent)
141idrisConfigure _ flags _ local = do
152idrisConfigure _ flags _ local = do
142− configureRTS
153+ configureRTS
143− generateVersionModule verbosity (autogenModulesDir local) (isRelease (configFlags local))
154+ generateVersionModule verbosity (autogenModulesDir local) (isRelease (configFlags local))
144− when (isFreestanding $ configFlags local) (do
155+ if (isFreestanding $ configFlags local)
157+ toolDir <- lookupEnv "IDRIS_TOOLCHAIN_DIR"
158+ generateToolchainModule verbosity (autogenModulesDir local) toolDir
145− targetDir <- lookupEnv "IDRIS_INSTALL_DIR"
159+ targetDir <- lookupEnv "IDRIS_LIB_DIR"
146 case targetDir of
160 case targetDir of
147 Just d -> generateTargetModule verbosity (autogenModulesDir local) d
161 Just d -> generateTargetModule verbosity (autogenModulesDir local) d
148 Nothing -> error $ "Trying to build freestanding without a target directory."
162 Nothing -> error $ "Trying to build freestanding without a target directory."
149− ++ " Set it by defining IDRIS_INSTALL_DIR.")
163+ ++ " Set it by defining IDRIS_LIB_DIR.")
165+ generateToolchainModule verbosity (autogenModulesDir local) Nothing
151 verbosity = S.fromFlag $ S.configVerbosity flags
167 verbosity = S.fromFlag $ S.configVerbosity flags
152 version = pkgVersion . package $ localPkgDescr local
168 version = pkgVersion . package $ localPkgDescr local
@@ -162,6 +178,7 @@ idrisPreSDist args flags = do
162 let verb = S.fromFlag (S.sDistVerbosity flags)
178 let verb = S.fromFlag (S.sDistVerbosity flags)
163 generateVersionModule verb ("src") True
179 generateVersionModule verb ("src") True
164 generateTargetModule verb "src" "./libs"
180 generateTargetModule verb "src" "./libs"
181+ generateToolchainModule verb "src" Nothing
165 preSDist simpleUserHooks args flags
182 preSDist simpleUserHooks args flags
167idrisPostSDist args flags desc lbi = do
184idrisPostSDist args flags desc lbi = do