summaryrefslogtreecommitdiff
path: root/hadrian/src/Settings/Builders/Cabal.hs
diff options
context:
space:
mode:
authorZejun Wu <watashi@fb.com>2019-01-06 07:40:05 -0500
committerBen Gamari <ben@smart-cactus.org>2019-01-06 07:40:11 -0500
commit9ea8dcea3e5ba96808ef91028e0efde9d31f7272 (patch)
tree5625c92a5d885083eef3634797f13d2bf25f6b65 /hadrian/src/Settings/Builders/Cabal.hs
parentbbd58fb5f029b632e2d8977518723feee0737ba7 (diff)
downloadhaskell-9ea8dcea3e5ba96808ef91028e0efde9d31f7272.tar.gz
Hadrian: merge sections in profiling _p.a to .p_o for ghci
This is the hadrain version of {D5169} * We build squashed .o and .p_o for ghci when `dynamicGhcPrograms` is `False` * We no longer build them for rts as ghci never loads it we need https://github.com/haskell/cabal/pull/5592 for cabal to copy the built `.p_o` file. Test Plan: ``` $ grep dynamicGhc hadrian/UserSettings.hs , dynamicGhcPrograms = return False $ touch ... $ hadrian/build.sh --flavour=user -j --digest-or $ find _build/stage1/libraries/ -name 'HS*-*.*o' | wc 62 62 3664 ``` ``` $ grep -C3 dynamicGhc hadrian/UserSettings.hs userFlavour :: Flavour userFlavour = performanceFlavour { name = "user" , dynamicGhcPrograms = return False } $ hadrian/build.sh -j --flavour=user test --verbose Unexpected results from: TEST="T3807 T9208 T9293 annth_make ghci057 haddock.Cabal haddock.base haddock.compiler" SUMMARY for test run started at Wed Dec 5 17:45:39 2018 PST 0:03:16 spent to go through 6708 total tests, which gave rise to 26015 test cases, of which 19290 were skipped 29 had missing libraries 6600 expected passes 88 expected failures 3 caused framework failures 0 caused framework warnings 1 unexpected passes 7 unexpected failures 0 unexpected stat failures $ find _build -name 'HSbase*.*o' _build/stage1/lib/x86_64-linux-ghc-8.7.20181204/base-4.12.0.0/HSbase-4.1 2.0.0.o _build/stage1/lib/x86_64-linux-ghc-8.7.20181204/base-4.12.0.0/HSbase-4.1 2.0.0.p_o _build/stage1/libraries/base/build/HSbase-4.12.0.0.o _build/stage1/libraries/base/build/HSbase-4.12.0.0.p_o ``` Reviewers: bgamari, simonmar, snowleopard Reviewed By: snowleopard Subscribers: alpmestan, rwbarton, carter GHC Trac Issues: #15779 Differential Revision: https://phabricator.haskell.org/D5270
Diffstat (limited to 'hadrian/src/Settings/Builders/Cabal.hs')
-rw-r--r--hadrian/src/Settings/Builders/Cabal.hs17
1 files changed, 11 insertions, 6 deletions
diff --git a/hadrian/src/Settings/Builders/Cabal.hs b/hadrian/src/Settings/Builders/Cabal.hs
index f33e9b458c..80b9b67a71 100644
--- a/hadrian/src/Settings/Builders/Cabal.hs
+++ b/hadrian/src/Settings/Builders/Cabal.hs
@@ -57,19 +57,24 @@ libraryArgs :: Args
libraryArgs = do
flavourWays <- getLibraryWays
contextWay <- getWay
+ package <- getPackage
withGhci <- expr ghcWithInterpreter
dynPrograms <- expr (flavour >>= dynamicGhcPrograms)
let ways = flavourWays ++ [contextWay]
- pure [ if vanilla `elem` ways
+ hasVanilla = vanilla `elem` ways
+ hasProfiling = any (wayUnit Profiling) ways
+ hasDynamic = any (wayUnit Dynamic) ways
+ pure [ if hasVanilla
then "--enable-library-vanilla"
else "--disable-library-vanilla"
- , if vanilla `elem` ways && withGhci && not dynPrograms
- then "--enable-library-for-ghci"
- else "--disable-library-for-ghci"
- , if or [Profiling `wayUnit` way | way <- ways]
+ , if hasProfiling
then "--enable-library-profiling"
else "--disable-library-profiling"
- , if or [Dynamic `wayUnit` way | way <- ways]
+ , if (hasVanilla || hasProfiling) &&
+ package /= rts && withGhci && not dynPrograms
+ then "--enable-library-for-ghci"
+ else "--disable-library-for-ghci"
+ , if hasDynamic
then "--enable-shared"
else "--disable-shared" ]