Rodrigo Mesquita pushed to branch wip/romes/24212 at Glasgow Haskell Compiler / GHC

Commits:

9 changed files:

Changes:

  • compiler/GHC/SysTools/BaseDir.hs
    ... ... @@ -90,13 +90,10 @@ the build system finds and wires through the toolchain information.
    90 90
     3) The next step is to generate the settings file: The file
    
    91 91
       `cfg/system.config.in` is preprocessed by configure and the output written to
    
    92 92
       `system.config`.  This serves the same purpose as `config.mk` but it rewrites
    
    93
    -  the values that were exported.  As an example `SettingsCCompilerCommand` is
    
    94
    -  rewritten to `settings-c-compiler-command`.
    
    93
    +  the values that were exported.
    
    95 94
     
    
    96 95
       Next up is `src/Oracles/Settings.hs` which makes from some Haskell ADT to
    
    97
    -  the settings `keys` in the `system.config`.  As an example,
    
    98
    -  `settings-c-compiler-command` is mapped to
    
    99
    -  `SettingsFileSetting_CCompilerCommand`.
    
    96
    +  the settings `keys` in the `system.config`.
    
    100 97
     
    
    101 98
       The last part of this is the `generateSettings` in `src/Rules/Generate.hs`
    
    102 99
       which produces the desired settings file out of Hadrian. This is the
    

  • distrib/configure.ac.in
    ... ... @@ -89,7 +89,7 @@ AC_ARG_ENABLE(distro-toolchain,
    89 89
     [AS_HELP_STRING([--enable-distro-toolchain],
    
    90 90
                     [Do not use bundled Windows toolchain binaries.])],
    
    91 91
       [FP_CAPITALIZE_YES_NO(["$enableval"], [EnableDistroToolchain])],
    
    92
    -  [EnableDistroToolchain=@SettingsUseDistroMINGW@]
    
    92
    +  [EnableDistroToolchain=@EnableDistroToolchain@]
    
    93 93
     )
    
    94 94
     
    
    95 95
     if test "$HostOS" = "mingw32" -a "$EnableDistroToolchain" = "NO"; then
    

  • hadrian/bindist/Makefile
    ... ... @@ -85,62 +85,14 @@ WrapperBinsDir=${bindir}
    85 85
     # N.B. this is duplicated from includes/ghc.mk.
    
    86 86
     lib/settings : config.mk
    
    87 87
     	@rm -f $@
    
    88
    -	@echo '[("C compiler command", "$(SettingsCCompilerCommand)")' >> $@
    
    89
    -	@echo ',("C compiler flags", "$(SettingsCCompilerFlags)")' >> $@
    
    90
    -	@echo ',("C++ compiler command", "$(SettingsCxxCompilerCommand)")' >> $@
    
    91
    -	@echo ',("C++ compiler flags", "$(SettingsCxxCompilerFlags)")' >> $@
    
    92
    -	@echo ',("C compiler link flags", "$(SettingsCCompilerLinkFlags)")' >> $@
    
    93
    -	@echo ',("C compiler supports -no-pie", "$(SettingsCCompilerSupportsNoPie)")' >> $@
    
    94
    -	@echo ',("CPP command", "$(SettingsCPPCommand)")' >> $@
    
    95
    -	@echo ',("CPP flags", "$(SettingsCPPFlags)")' >> $@
    
    96
    -	@echo ',("Haskell CPP command", "$(SettingsHaskellCPPCommand)")' >> $@
    
    97
    -	@echo ',("Haskell CPP flags", "$(SettingsHaskellCPPFlags)")' >> $@
    
    98
    -	@echo ',("JavaScript CPP command", "$(SettingsJavaScriptCPPCommand)")' >> $@
    
    99
    -	@echo ',("JavaScript CPP flags", "$(SettingsJavaScriptCPPFlags)")' >> $@
    
    100
    -	@echo ',("C-- CPP command", "$(SettingsCmmCPPCommand)")' >> $@
    
    101
    -	@echo ',("C-- CPP flags", "$(SettingsCmmCPPFlags)")' >> $@
    
    102
    -	@echo ',("C-- CPP supports -g0", "$(SettingsCmmCPPSupportsG0)")' >> $@
    
    103
    -	@echo ',("ld supports compact unwind", "$(LdHasNoCompactUnwind)")' >> $@
    
    104
    -	@echo ',("ld supports filelist", "$(LdHasFilelist)")' >> $@
    
    105
    -	@echo ',("ld supports single module", "$(LdHasSingleModule)")' >> $@
    
    106
    -	@echo ',("ld is GNU ld", "$(LdIsGNULd)")' >> $@
    
    107
    -	@echo ',("Merge objects command", "$(SettingsMergeObjectsCommand)")' >> $@
    
    108
    -	@echo ',("Merge objects flags", "$(SettingsMergeObjectsFlags)")' >> $@
    
    109
    -	@echo ',("Merge objects supports response files", "$(MergeObjsSupportsResponseFiles)")' >> $@
    
    110
    -	@echo ',("ar command", "$(SettingsArCommand)")' >> $@
    
    111
    -	@echo ',("ar flags", "$(ArArgs)")' >> $@
    
    112
    -	@echo ',("ar supports at file", "$(ArSupportsAtFile)")' >> $@
    
    113
    -	@echo ',("ar supports -L", "$(ArSupportsDashL)")' >> $@
    
    114
    -	@echo ',("ranlib command", "$(SettingsRanlibCommand)")' >> $@
    
    115
    -	@echo ',("otool command", "$(SettingsOtoolCommand)")' >> $@
    
    116
    -	@echo ',("install_name_tool command", "$(SettingsInstallNameToolCommand)")' >> $@
    
    117
    -	@echo ',("windres command", "$(SettingsWindresCommand)")' >> $@
    
    118
    -	@echo ',("unlit command", "$$topdir/../bin/$(CrossCompilePrefix)unlit")' >> $@
    
    119
    -	@echo ',("cross compiling", "$(CrossCompiling)")' >> $@
    
    120
    -	@echo ',("target platform string", "$(TARGETPLATFORM)")' >> $@
    
    121
    -	@echo ',("target os", "$(HaskellTargetOs)")' >> $@
    
    88
    +	@echo '[("target os", "$(HaskellTargetOs)")' >> $@
    
    122 89
     	@echo ',("target arch", "$(HaskellTargetArch)")' >> $@
    
    123
    -	@echo ',("target word size", "$(TargetWordSize)")' >> $@
    
    124
    -	@echo ',("target word big endian", "$(TargetWordBigEndian)")' >> $@
    
    125
    -	@echo ',("target has GNU nonexec stack", "$(TargetHasGnuNonexecStack)")' >> $@
    
    126
    -	@echo ',("target has .ident directive", "$(TargetHasIdentDirective)")' >> $@
    
    127
    -	@echo ',("target has subsections via symbols", "$(TargetHasSubsectionsViaSymbols)")' >> $@
    
    128
    -	@echo ',("target has libm", "$(TargetHasLibm)")' >> $@
    
    129
    -	@echo ',("Unregisterised", "$(GhcUnregisterised)")' >> $@
    
    130
    -	@echo ',("LLVM target", "$(LLVMTarget)")' >> $@
    
    131
    -	@echo ',("LLVM llc command", "$(SettingsLlcCommand)")' >> $@
    
    132
    -	@echo ',("LLVM opt command", "$(SettingsOptCommand)")' >> $@
    
    133
    -	@echo ',("LLVM llvm-as command", "$(SettingsLlvmAsCommand)")' >> $@
    
    134
    -	@echo ',("LLVM llvm-as flags", "$(SettingsLlvmAsFlags)")' >> $@
    
    135
    -	@echo ',("Use inplace MinGW toolchain", "$(SettingsUseDistroMINGW)")' >> $@
    
    136
    -	@echo
    
    90
    +	@echo ',("unlit command", "$$topdir/../bin/$(CrossCompilePrefix)unlit")' >> $@
    
    91
    +	@echo ',("Use inplace MinGW toolchain", "$(EnableDistroToolchain)")' >> $@
    
    137 92
     	@echo ',("target RTS linker only supports shared libraries", "$(TargetRTSLinkerOnlySupportsSharedLibs)")' >> $@
    
    138 93
     	@echo ',("Use interpreter", "$(GhcWithInterpreter)")' >> $@
    
    139 94
     	@echo ',("Support SMP", "$(GhcWithSMP)")' >> $@
    
    140 95
     	@echo ',("RTS ways", "$(GhcRTSWays)")' >> $@
    
    141
    -	@echo ',("Tables next to code", "$(TablesNextToCode)")' >> $@
    
    142
    -	@echo ',("Leading underscore", "$(LeadingUnderscore)")' >> $@
    
    143
    -	@echo ',("Use LibFFI", "$(UseLibffiForAdjustors)")' >> $@
    
    144 96
     	@echo ',("RTS expects libdw", "$(GhcRtsWithLibdw)")' >> $@
    
    145 97
     	@echo ',("Relative Global Package DB", "package.conf.d")' >> $@
    
    146 98
     	@echo ',("base unit-id", "$(BaseUnitId)")' >> $@
    
    ... ... @@ -167,7 +119,7 @@ install_bin_direct:
    167 119
     	$(INSTALL_PROGRAM) ./bin/* "$(DESTDIR)$(WrapperBinsDir)/"
    
    168 120
     
    
    169 121
     .PHONY: install_lib
    
    170
    -install_lib: lib/settings
    
    122
    +install_lib: lib/settings lib/targets/default.target
    
    171 123
     	@echo "Copying libraries to $(DESTDIR)$(ActualLibsDir)"
    
    172 124
     	$(INSTALL_DIR) "$(DESTDIR)$(ActualLibsDir)"
    
    173 125
     
    

  • hadrian/bindist/config.mk.in
    ... ... @@ -133,7 +133,7 @@ INSTALL_DIR = $(INSTALL) -m 755 -d
    133 133
     CrossCompiling        = @CrossCompiling@
    
    134 134
     CrossCompilePrefix    = @CrossCompilePrefix@
    
    135 135
     GhcUnregisterised     = @Unregisterised@
    
    136
    -EnableDistroToolchain = @SettingsUseDistroMINGW@
    
    136
    +EnableDistroToolchain = @EnableDistroToolchain@
    
    137 137
     BaseUnitId            = @BaseUnitId@
    
    138 138
     
    
    139 139
     # The THREADED_RTS requires `BaseReg` to be in a register and the
    
    ... ... @@ -206,25 +206,6 @@ TablesNextToCode = @TablesNextToCode@
    206 206
     LeadingUnderscore = @LeadingUnderscore@
    
    207 207
     LlvmTarget = @LlvmTarget@
    
    208 208
     
    
    209
    -SettingsCCompilerCommand = @SettingsCCompilerCommand@
    
    210
    -SettingsCxxCompilerCommand = @SettingsCxxCompilerCommand@
    
    211
    -SettingsCPPCommand = @SettingsCPPCommand@
    
    212
    -SettingsCPPFlags = @SettingsCPPFlags@
    
    213
    -SettingsHaskellCPPCommand = @SettingsHaskellCPPCommand@
    
    214
    -SettingsHaskellCPPFlags = @SettingsHaskellCPPFlags@
    
    215
    -SettingsJavaScriptCPPCommand = @SettingsJavaScriptCPPCommand@
    
    216
    -SettingsJavaScriptCPPFlags = @SettingsJavaScriptCPPFlags@
    
    217
    -SettingsCmmCPPCommand = @SettingsCmmCPPCommand@
    
    218
    -SettingsCmmCPPFlags = @SettingsCmmCPPFlags@
    
    219
    -SettingsCmmCPPSupportsG0 = @SettingsCmmCPPSupportsG0@
    
    220
    -SettingsCCompilerFlags = @SettingsCCompilerFlags@
    
    221
    -SettingsCxxCompilerFlags = @SettingsCxxCompilerFlags@
    
    222
    -SettingsCCompilerLinkFlags = @SettingsCCompilerLinkFlags@
    
    223
    -SettingsCCompilerSupportsNoPie = @SettingsCCompilerSupportsNoPie@
    
    224
    -SettingsMergeObjectsCommand = @SettingsMergeObjectsCommand@
    
    225
    -SettingsMergeObjectsFlags = @SettingsMergeObjectsFlags@
    
    226
    -SettingsArCommand = @SettingsArCommand@
    
    227
    -SettingsOtoolCommand = @SettingsOtoolCommand@
    
    228 209
     SettingsInstallNameToolCommand = @SettingsInstallNameToolCommand@
    
    229 210
     SettingsRanlibCommand = @SettingsRanlibCommand@
    
    230 211
     SettingsWindresCommand = @SettingsWindresCommand@
    
    ... ... @@ -232,4 +213,3 @@ SettingsLibtoolCommand = @SettingsLibtoolCommand@
    232 213
     SettingsLlcCommand = @SettingsLlcCommand@
    
    233 214
     SettingsOptCommand = @SettingsOptCommand@
    
    234 215
     SettingsLlvmAsCommand = @SettingsLlvmAsCommand@
    235
    -SettingsUseDistroMINGW = @SettingsUseDistroMINGW@

  • hadrian/cfg/system.config.in
    ... ... @@ -79,7 +79,7 @@ project-git-commit-id = @ProjectGitCommitId@
    79 79
     # generated by configure, to generated being by the build system. Many of these
    
    80 80
     # might become redundant.
    
    81 81
     # See Note [tooldir: How GHC finds mingw on Windows]
    
    82
    -settings-use-distro-mingw = @SettingsUseDistroMINGW@
    
    82
    +settings-use-distro-mingw = @EnableDistroToolchain@
    
    83 83
     
    
    84 84
     target-has-libm = @TargetHasLibm@
    
    85 85
     
    

  • hadrian/src/Rules/BinaryDist.hs
    ... ... @@ -141,6 +141,7 @@ bindistRules = do
    141 141
             installPrefix <- fromMaybe (error prefixErr) <$> cmdPrefix
    
    142 142
             installTo NotRelocatable installPrefix
    
    143 143
     
    
    144
    +    -- TODO: ROMES: TOUCH HERE?
    
    144 145
         phony "binary-dist-dir" $ do
    
    145 146
             version        <- setting ProjectVersion
    
    146 147
             targetPlatform <- setting TargetPlatformFull
    

  • hadrian/src/Rules/Generate.hs
    ... ... @@ -425,7 +425,7 @@ bindistRules = do
    425 425
         , interpolateSetting "LlvmMinVersion" LlvmMinVersion
    
    426 426
         , interpolateVar "LlvmTarget" $ getTarget tgtLlvmTarget
    
    427 427
         , interpolateSetting "ProjectVersion" ProjectVersion
    
    428
    -    , interpolateVar "SettingsUseDistroMINGW" $ lookupSystemConfig "settings-use-distro-mingw"
    
    428
    +    , interpolateVar "EnableDistroToolchain" $ lookupSystemConfig "settings-use-distro-mingw"
    
    429 429
         , interpolateVar "TablesNextToCode" $ yesNo <$> getTarget tgtTablesNextToCode
    
    430 430
         , interpolateVar "TargetHasLibm" $ lookupSystemConfig "target-has-libm"
    
    431 431
         , interpolateVar "TargetPlatform" $ getTarget targetPlatformTriple
    

  • m4/fp_settings.m4
    ... ... @@ -52,32 +52,7 @@ AC_DEFUN([SUBST_TOOLDIR],
    52 52
     # Set the variables used in the settings file
    
    53 53
     AC_DEFUN([FP_SETTINGS],
    
    54 54
     [
    
    55
    -    SettingsUseDistroMINGW="$EnableDistroToolchain"
    
    56
    -
    
    57
    -    SettingsCCompilerCommand="$CC"
    
    58
    -    SettingsCCompilerFlags="$CONF_CC_OPTS_STAGE2"
    
    59
    -    SettingsCxxCompilerCommand="$CXX"
    
    60
    -    SettingsCxxCompilerFlags="$CONF_CXX_OPTS_STAGE2"
    
    61
    -    SettingsCPPCommand="$CPPCmd"
    
    62
    -    SettingsCPPFlags="$CONF_CPP_OPTS_STAGE2"
    
    63
    -    SettingsHaskellCPPCommand="$HaskellCPPCmd"
    
    64
    -    SettingsHaskellCPPFlags="$HaskellCPPArgs"
    
    65
    -    SettingsJavaScriptCPPCommand="$JavaScriptCPPCmd"
    
    66
    -    SettingsJavaScriptCPPFlags="$JavaScriptCPPArgs"
    
    67
    -    SettingsCmmCPPCommand="$CmmCPPCmd"
    
    68
    -    SettingsCmmCPPFlags="$CmmCPPArgs"
    
    69
    -    SettingsCCompilerLinkFlags="$CONF_GCC_LINKER_OPTS_STAGE2"
    
    70
    -    SettingsArCommand="$ArCmd"
    
    71 55
         SettingsRanlibCommand="$RanlibCmd"
    
    72
    -    SettingsMergeObjectsCommand="$MergeObjsCmd"
    
    73
    -    SettingsMergeObjectsFlags="$MergeObjsArgs"
    
    74
    -
    
    75
    -    AS_CASE(
    
    76
    -      ["$CmmCPPSupportsG0"],
    
    77
    -      [True], [SettingsCmmCPPSupportsG0=YES],
    
    78
    -      [False], [SettingsCmmCPPSupportsG0=NO],
    
    79
    -      [AC_MSG_ERROR(Unknown CPPSupportsG0 value $CmmCPPSupportsG0)]
    
    80
    -    )
    
    81 56
     
    
    82 57
         if test -z "$WindresCmd"; then
    
    83 58
             SettingsWindresCommand="/bin/false"
    
    ... ... @@ -94,13 +69,8 @@ AC_DEFUN([FP_SETTINGS],
    94 69
         if test "$EnableDistroToolchain" = "YES"; then
    
    95 70
             # If the user specified --enable-distro-toolchain then we just use the
    
    96 71
             # executable names, not paths.
    
    97
    -        SettingsCCompilerCommand="$(basename $SettingsCCompilerCommand)"
    
    98
    -        SettingsHaskellCPPCommand="$(basename $SettingsHaskellCPPCommand)"
    
    99
    -        SettingsCmmCPPCommand="$(basename $SettingsCmmCPPCommand)"
    
    100
    -        SettingsJavaScriptCPPCommand="$(basename $SettingsJavaScriptCPPCommand)"
    
    72
    +        dnl XXX="$(basename XXX)"
    
    101 73
             SettingsLdCommand="$(basename $SettingsLdCommand)"
    
    102
    -        SettingsMergeObjectsCommand="$(basename $SettingsMergeObjectsCommand)"
    
    103
    -        SettingsArCommand="$(basename $SettingsArCommand)"
    
    104 74
             SettingsWindresCommand="$(basename $SettingsWindresCommand)"
    
    105 75
             SettingsLlcCommand="$(basename $SettingsLlcCommand)"
    
    106 76
             SettingsOptCommand="$(basename $SettingsOptCommand)"
    
    ... ... @@ -111,22 +81,7 @@ AC_DEFUN([FP_SETTINGS],
    111 81
             # Handle the Windows toolchain installed in FP_SETUP_WINDOWS_TOOLCHAIN.
    
    112 82
             # We need to issue a substitution to use $tooldir,
    
    113 83
             # See Note [tooldir: How GHC finds mingw on Windows]
    
    114
    -        SUBST_TOOLDIR([SettingsCCompilerCommand])
    
    115
    -        SUBST_TOOLDIR([SettingsCCompilerFlags])
    
    116
    -        SUBST_TOOLDIR([SettingsCxxCompilerCommand])
    
    117
    -        SUBST_TOOLDIR([SettingsCxxCompilerFlags])
    
    118
    -        SUBST_TOOLDIR([SettingsCCompilerLinkFlags])
    
    119
    -        SUBST_TOOLDIR([SettingsCPPCommand])
    
    120
    -        SUBST_TOOLDIR([SettingsCPPFlags])
    
    121
    -        SUBST_TOOLDIR([SettingsHaskellCPPCommand])
    
    122
    -        SUBST_TOOLDIR([SettingsHaskellCPPFlags])
    
    123
    -        SUBST_TOOLDIR([SettingsCmmCPPCommand])
    
    124
    -        SUBST_TOOLDIR([SettingsCmmCPPFlags])
    
    125
    -        SUBST_TOOLDIR([SettingsJavaScriptCPPCommand])
    
    126
    -        SUBST_TOOLDIR([SettingsJavaScriptCPPFlags])
    
    127
    -        SUBST_TOOLDIR([SettingsMergeObjectsCommand])
    
    128
    -        SUBST_TOOLDIR([SettingsMergeObjectsFlags])
    
    129
    -        SUBST_TOOLDIR([SettingsArCommand])
    
    84
    +        dnl SUBST_TOOLDIR([XXX])
    
    130 85
             SUBST_TOOLDIR([SettingsRanlibCommand])
    
    131 86
             SUBST_TOOLDIR([SettingsWindresCommand])
    
    132 87
             SUBST_TOOLDIR([SettingsLlcCommand])
    
    ... ... @@ -135,37 +90,14 @@ AC_DEFUN([FP_SETTINGS],
    135 90
             SUBST_TOOLDIR([SettingsLlvmAsFlags])
    
    136 91
         fi
    
    137 92
     
    
    138
    -    # Mac-only tools
    
    139
    -    SettingsOtoolCommand="$OtoolCmd"
    
    140 93
         SettingsInstallNameToolCommand="$InstallNameToolCmd"
    
    141 94
     
    
    142
    -    SettingsCCompilerSupportsNoPie="$CONF_GCC_SUPPORTS_NO_PIE"
    
    143
    -
    
    144
    -    AC_SUBST(SettingsCCompilerCommand)
    
    145
    -    AC_SUBST(SettingsCxxCompilerCommand)
    
    146
    -    AC_SUBST(SettingsCPPCommand)
    
    147
    -    AC_SUBST(SettingsCPPFlags)
    
    148
    -    AC_SUBST(SettingsHaskellCPPCommand)
    
    149
    -    AC_SUBST(SettingsHaskellCPPFlags)
    
    150
    -    AC_SUBST(SettingsCmmCPPCommand)
    
    151
    -    AC_SUBST(SettingsCmmCPPFlags)
    
    152
    -    AC_SUBST(SettingsCmmCPPSupportsG0)
    
    153
    -    AC_SUBST(SettingsJavaScriptCPPCommand)
    
    154
    -    AC_SUBST(SettingsJavaScriptCPPFlags)
    
    155
    -    AC_SUBST(SettingsCCompilerFlags)
    
    156
    -    AC_SUBST(SettingsCxxCompilerFlags)
    
    157
    -    AC_SUBST(SettingsCCompilerLinkFlags)
    
    158
    -    AC_SUBST(SettingsCCompilerSupportsNoPie)
    
    159
    -    AC_SUBST(SettingsMergeObjectsCommand)
    
    160
    -    AC_SUBST(SettingsMergeObjectsFlags)
    
    161
    -    AC_SUBST(SettingsArCommand)
    
    95
    +    AC_SUBST(EnableDistroToolchain)
    
    162 96
         AC_SUBST(SettingsRanlibCommand)
    
    163
    -    AC_SUBST(SettingsOtoolCommand)
    
    164 97
         AC_SUBST(SettingsInstallNameToolCommand)
    
    165 98
         AC_SUBST(SettingsWindresCommand)
    
    166 99
         AC_SUBST(SettingsLlcCommand)
    
    167 100
         AC_SUBST(SettingsOptCommand)
    
    168 101
         AC_SUBST(SettingsLlvmAsCommand)
    
    169 102
         AC_SUBST(SettingsLlvmAsFlags)
    
    170
    -    AC_SUBST(SettingsUseDistroMINGW)
    
    171 103
     ])

  • mk/hsc2hs.in
    1
    -HSC2HS_C="@SettingsCCompilerFlags@"
    
    1
    +HSC2HS_C="@CONF_CC_OPTS_STAGE2@"
    
    2 2
     
    
    3
    -HSC2HS_L="@SettingsCCompilerLinkFlags@"
    
    3
    +HSC2HS_L="@CONF_GCC_LINKER_OPTS_STAGE2@"
    
    4 4
     
    
    5 5
     tflag="--template=$libdir/template-hsc.h"
    
    6 6
     Iflag="-I$includedir/include/"