1
1
mirror of https://github.com/nmattia/snack.git synced 2024-09-21 00:29:37 +03:00

Pass in ghc opts everywhere

This commit is contained in:
Nicolas Mattia 2018-06-09 12:37:23 +02:00
parent 1c7fdfadf4
commit b6bfa31b95

View File

@ -86,10 +86,11 @@ let
(dirsByModuleName modName)
) true;
buildModule = ghc: base: mod:
buildModule = ghc: ghcOpts: base: mod:
let
ghcOptsArgs = lib.strings.escapeShellArgs ghcOpts;
objectName = mod.moduleName;
builtDeps = map (buildModule ghc base) mod.moduleDependencies;
builtDeps = map (buildModule ghc ghcOpts base) mod.moduleDependencies;
depsDirs = map (x: x + "/") builtDeps;
makeSymtree =
if lib.lists.length depsDirs >= 1
@ -146,6 +147,7 @@ let
mkdir -p tmp
ghc -tmpdir tmp/ ${moduleToFile mod.moduleName} -c \
-outputdir $out \
${ghcOptsArgs} \
2>&1
echo "Done building module ${mod.moduleName}"
'';
@ -217,7 +219,7 @@ let
# Returns an attribute set where the keys are the module names and the values
# are the '.o's
flattenModuleObjects = ghc: base: mod':
flattenModuleObjects = ghc: ghcOpts: base: mod':
let
go = mod: attrs0:
let
@ -234,7 +236,7 @@ let
then acc
else acc //
{ "${elem.moduleName}" =
"${buildModule ghc base elem}/${objectName elem}";
"${buildModule ghc ghcOpts base elem}/${objectName elem}";
};
in
lib.lists.foldl f attrs1 mod.moduleDependencies;
@ -243,7 +245,7 @@ let
# TODO: it's sad that we pass ghcWithDeps + dependencies
linkModuleObjects = ghc: ghcOpts: dependencies: base: mod:
let
objAttrs = flattenModuleObjects ghc base mod;
objAttrs = flattenModuleObjects ghc ghcOpts base mod;
objList = lib.attrsets.mapAttrsToList (x: y: y) objAttrs;
ghcOptsArgs = lib.strings.escapeShellArgs ghcOpts;
packageList = map (p: "-package ${p}") dependencies;