From 49fb21e21496611dc2ccfd311e2b64fc4eb93023 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Tue, 6 Oct 2009 20:14:15 +0000 Subject: [PATCH] Add --supported-languages support to dummy-ghc We used to call the bootstrapping compiler to get its --supported-languages but that doesn't work when it doesn't support all the extensions that we need. In particular, compiling the new bytestring which needs NamedFieldPuns broken when building with 6.8.2. There's now a rather ugly sed script to extract the extensions from DynFlags.hs. --- utils/ghc-cabal/ghc.mk | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/utils/ghc-cabal/ghc.mk b/utils/ghc-cabal/ghc.mk index 71232fb..b4b599d 100644 --- a/utils/ghc-cabal/ghc.mk +++ b/utils/ghc-cabal/ghc.mk @@ -51,10 +51,34 @@ $(GHC_CABAL_DIR)_dist-dummy-ghc_MODULES = dummy-ghc $(GHC_CABAL_DIR)_dist-dummy-ghc_PROG = dummy-ghc$(exeext) # depend on project.mk, so we pick up the new version number if it changes. -$(GHC_CABAL_DIR)/dist-dummy-ghc/build/dummy-ghc.hs : $(GHC_CABAL_DIR)/ghc.mk mk/project.mk | $$(dir $$@)/. - echo "import System.Environment; import System.Cmd; import System.Exit" >$@ - echo "main :: IO ()" >>$@ - echo "main = do args <- getArgs; if args == [\"--numeric-version\"] then putStrLn \"$(ProjectVersion)\" else do e <- rawSystem \"$(GHC_STAGE0)\" args; exitWith e" >>$@ +$(GHC_CABAL_DIR)/dist-dummy-ghc/build/dummy-ghc.hs : $(GHC_CABAL_DIR)/ghc.mk $(MKDIRHIER) mk/project.mk compiler/main/DynFlags.hs + "$(MKDIRHIER)" $(dir $@) + "$(RM)" $(RM_OPTS) $@ + echo 'import System.Environment' >> $@ + echo 'import System.Cmd' >> $@ + echo 'import System.Exit' >> $@ + echo 'main :: IO ()' >> $@ + echo 'main = do args <- getArgs' >> $@ + echo ' case args of' >> $@ + echo ' ["--numeric-version"] ->' >> $@ + echo ' putStrLn "$(ProjectVersion)"' >> $@ + echo ' ["--supported-languages"] ->' >> $@ + echo ' mapM_ putStrLn extensions' >> $@ + echo ' _ ->' >> $@ + echo ' do e <- rawSystem "$(GHC_STAGE0)" args' >> $@ + echo ' exitWith e' >> $@ +# This unpleasant sed script grabs the lines between the +# xFlags :: +# line and the +# ] +# line of compiler/main/DynFlags.hs, and if they look like +# ( "PostfixOperators", ... +# then it translates them into +# ["PostfixOperators"] ++ + echo 'extensions :: [String]' >> $@ + echo 'extensions =' >> $@ + sed '/^xFlags/,/]/{/^ (/{s/^[^"]*"/ ["/; s/"[^"]*$$/"] ++/; p}}; d' compiler/main/DynFlags.hs >> $@ + echo ' []' >> $@ # We don't build dummy-ghc with Cabal, so we need to pass -package # flags manually -- 1.7.10.4