Move cGHC_UNLIT_PGM to be "unlit command" in settings
authorJohn Ericson <John.Ericson@Obsidian.Systems>
Thu, 4 Apr 2019 17:38:53 +0000 (13:38 -0400)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Wed, 1 May 2019 00:29:31 +0000 (20:29 -0400)
The bulk of the work was done in #712, making settings be make/Hadrian
controlled. This commit then just moves the unlit command rules in
make/Hadrian from the `Config.hs` generator to the `settings` generator
in each build system.

I think this is a good change because the crucial benefit is *settings*
don't affect the build: ghc gets one baby step closer to being a regular
cabal executable, and make/Hadrian just maintains settings as part of
bootstrapping.

compiler/ghc.mk
compiler/main/SysTools.hs
hadrian/src/Rules/Generate.hs
includes/ghc.mk

index 6cd7747..69eff31 100644 (file)
@@ -110,8 +110,6 @@ endif
        @echo 'cGhcEnableTablesNextToCode = "$(GhcEnableTablesNextToCode)"' >> $@
        @echo 'cLeadingUnderscore    :: String'                             >> $@
        @echo 'cLeadingUnderscore    = "$(LeadingUnderscore)"'              >> $@
-       @echo 'cGHC_UNLIT_PGM        :: String'                             >> $@
-       @echo 'cGHC_UNLIT_PGM        = "$(utils/unlit_dist_PROG)"'          >> $@
        @echo 'cLibFFI               :: Bool'                               >> $@
 ifeq "$(UseLibFFIForAdjustors)" "YES"
        @echo 'cLibFFI               = True'                                >> $@
index 5725896..6eccdd7 100644 (file)
@@ -211,9 +211,9 @@ initSysTools top_dir
            ghc_usage_msg_path  = installed "ghc-usage.txt"
            ghci_usage_msg_path = installed "ghci-usage.txt"
 
-             -- For all systems, unlit, split, mangle are GHC utilities
-             -- architecture-specific stuff is done when building Config.hs
-           unlit_path = libexec cGHC_UNLIT_PGM
+       -- For all systems, unlit, split, mangle are GHC utilities
+       -- architecture-specific stuff is done when building Config.hs
+       unlit_path <- getToolSetting "unlit command"
 
        windres_path <- getToolSetting "windres command"
        libtool_path <- getToolSetting "libtool command"
index b167cd1..0c35e85 100644 (file)
@@ -290,6 +290,7 @@ generateSettings = do
         , ("dllwrap command", settingsFileSetting SettingsFileSetting_DllWrapCommand)
         , ("windres command", settingsFileSetting SettingsFileSetting_WindresCommand)
         , ("libtool command", settingsFileSetting SettingsFileSetting_LibtoolCommand)
+        , ("unlit command", ("$topdir/bin/" <>) . takeFileName <$> builderPath Unlit)
         , ("cross compiling", flag' CrossCompiling)
         , ("target os", lookupValueOrError configFile "haskell-target-os")
         , ("target arch", lookupValueOrError configFile "haskell-target-arch")
@@ -335,7 +336,6 @@ generateConfigHs = do
     cGhcWithSMP                <- expr $ yesNo <$> ghcWithSMP
     cGhcEnableTablesNextToCode <- expr $ yesNo <$> ghcEnableTablesNextToCode
     cLeadingUnderscore         <- expr $ yesNo <$> flag LeadingUnderscore
-    cGHC_UNLIT_PGM             <- fmap takeFileName $ getBuilderPath Unlit
     cLibFFI                    <- expr useLibFFIForAdjustors
     rtsWays                    <- getRtsWays
     cGhcRtsWithLibdw           <- getFlag WithLibdw
@@ -393,8 +393,6 @@ generateConfigHs = do
         , "cGhcEnableTablesNextToCode = " ++ show cGhcEnableTablesNextToCode
         , "cLeadingUnderscore    :: String"
         , "cLeadingUnderscore    = " ++ show cLeadingUnderscore
-        , "cGHC_UNLIT_PGM        :: String"
-        , "cGHC_UNLIT_PGM        = " ++ show cGHC_UNLIT_PGM
         , "cLibFFI               :: Bool"
         , "cLibFFI               = " ++ show cLibFFI
         , "cGhcThreaded :: Bool"
index 27b704d..b7bac36 100644 (file)
@@ -197,6 +197,7 @@ $(includes_SETTINGS) : includes/Makefile | $$(dir $$@)/.
        @echo ',("dllwrap command", "$(SettingsDllWrapCommand)")' >> $@
        @echo ',("windres command", "$(SettingsWindresCommand)")' >> $@
        @echo ',("libtool command", "$(SettingsLibtoolCommand)")' >> $@
+       @echo ',("unlit command", "$$topdir/bin/$(utils/unlit_dist_PROG)")' >> $@
        @echo ',("cross compiling", "$(CrossCompiling)")' >> $@
        @echo ',("target os", "$(HaskellTargetOs)")' >> $@
        @echo ',("target arch", "$(HaskellTargetArch)")' >> $@