
Rodrigo Mesquita pushed to branch wip/romes/24212 at Glasgow Haskell Compiler / GHC Commits: b8869714 by Rodrigo Mesquita at 2025-07-10T14:14:23+01:00 hsc2hs vars change - - - - - 5cdbedaf by Rodrigo Mesquita at 2025-07-10T14:14:55+01:00 Delete from bindist settings lines - - - - - d0f598d0 by Rodrigo Mesquita at 2025-07-10T14:15:19+01:00 SettingsUseDistroMINGW - - - - - 46b210fe by Rodrigo Mesquita at 2025-07-10T14:28:30+01:00 SettingsCCompilerCommand - - - - - 6685c953 by Rodrigo Mesquita at 2025-07-10T14:28:54+01:00 Outdated ocmment - - - - - 565ae8d9 by Rodrigo Mesquita at 2025-07-10T14:29:33+01:00 SettingsCCompilerFlags - - - - - c564f8d7 by Rodrigo Mesquita at 2025-07-10T14:30:03+01:00 SettingsCxxCompilerCommand - - - - - 66dc3ce1 by Rodrigo Mesquita at 2025-07-10T14:30:37+01:00 SettingsCxxCompilerFlags - - - - - 754228d7 by Rodrigo Mesquita at 2025-07-10T14:31:02+01:00 SettingsCPPCommand - - - - - 1e474f01 by Rodrigo Mesquita at 2025-07-10T14:31:38+01:00 SettingsCPPFlags - - - - - 40412930 by Rodrigo Mesquita at 2025-07-10T14:32:09+01:00 SettingsHaskellCPP - - - - - 307fa265 by Rodrigo Mesquita at 2025-07-10T14:32:44+01:00 SettingsJavaScriptCPP - - - - - b1183a03 by Rodrigo Mesquita at 2025-07-10T14:34:52+01:00 SettingsCmmCPP - - - - - 3dffa2d5 by Rodrigo Mesquita at 2025-07-10T14:35:20+01:00 SettingsCCompilerLinkFlags - - - - - a60fcd99 by Rodrigo Mesquita at 2025-07-10T14:35:51+01:00 SettingsCCompilerSupportsNoPie - - - - - ad3ae68c by Rodrigo Mesquita at 2025-07-10T14:36:36+01:00 SettingsMergeObjects - - - - - 142de612 by Rodrigo Mesquita at 2025-07-10T14:36:58+01:00 SettingsArCommand - - - - - dd6c7339 by Rodrigo Mesquita at 2025-07-10T14:37:20+01:00 SettingsOtoolCommand - - - - - 9 changed files: - compiler/GHC/SysTools/BaseDir.hs - distrib/configure.ac.in - hadrian/bindist/Makefile - hadrian/bindist/config.mk.in - hadrian/cfg/system.config.in - hadrian/src/Rules/BinaryDist.hs - hadrian/src/Rules/Generate.hs - m4/fp_settings.m4 - mk/hsc2hs.in Changes: ===================================== compiler/GHC/SysTools/BaseDir.hs ===================================== @@ -90,13 +90,10 @@ the build system finds and wires through the toolchain information. 3) The next step is to generate the settings file: The file `cfg/system.config.in` is preprocessed by configure and the output written to `system.config`. This serves the same purpose as `config.mk` but it rewrites - the values that were exported. As an example `SettingsCCompilerCommand` is - rewritten to `settings-c-compiler-command`. + the values that were exported. Next up is `src/Oracles/Settings.hs` which makes from some Haskell ADT to - the settings `keys` in the `system.config`. As an example, - `settings-c-compiler-command` is mapped to - `SettingsFileSetting_CCompilerCommand`. + the settings `keys` in the `system.config`. The last part of this is the `generateSettings` in `src/Rules/Generate.hs` 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, [AS_HELP_STRING([--enable-distro-toolchain], [Do not use bundled Windows toolchain binaries.])], [FP_CAPITALIZE_YES_NO(["$enableval"], [EnableDistroToolchain])], - [EnableDistroToolchain=@SettingsUseDistroMINGW@] + [EnableDistroToolchain=@EnableDistroToolchain@] ) if test "$HostOS" = "mingw32" -a "$EnableDistroToolchain" = "NO"; then ===================================== hadrian/bindist/Makefile ===================================== @@ -85,62 +85,14 @@ WrapperBinsDir=${bindir} # N.B. this is duplicated from includes/ghc.mk. lib/settings : config.mk @rm -f $@ - @echo '[("C compiler command", "$(SettingsCCompilerCommand)")' >> $@ - @echo ',("C compiler flags", "$(SettingsCCompilerFlags)")' >> $@ - @echo ',("C++ compiler command", "$(SettingsCxxCompilerCommand)")' >> $@ - @echo ',("C++ compiler flags", "$(SettingsCxxCompilerFlags)")' >> $@ - @echo ',("C compiler link flags", "$(SettingsCCompilerLinkFlags)")' >> $@ - @echo ',("C compiler supports -no-pie", "$(SettingsCCompilerSupportsNoPie)")' >> $@ - @echo ',("CPP command", "$(SettingsCPPCommand)")' >> $@ - @echo ',("CPP flags", "$(SettingsCPPFlags)")' >> $@ - @echo ',("Haskell CPP command", "$(SettingsHaskellCPPCommand)")' >> $@ - @echo ',("Haskell CPP flags", "$(SettingsHaskellCPPFlags)")' >> $@ - @echo ',("JavaScript CPP command", "$(SettingsJavaScriptCPPCommand)")' >> $@ - @echo ',("JavaScript CPP flags", "$(SettingsJavaScriptCPPFlags)")' >> $@ - @echo ',("C-- CPP command", "$(SettingsCmmCPPCommand)")' >> $@ - @echo ',("C-- CPP flags", "$(SettingsCmmCPPFlags)")' >> $@ - @echo ',("C-- CPP supports -g0", "$(SettingsCmmCPPSupportsG0)")' >> $@ - @echo ',("ld supports compact unwind", "$(LdHasNoCompactUnwind)")' >> $@ - @echo ',("ld supports filelist", "$(LdHasFilelist)")' >> $@ - @echo ',("ld supports single module", "$(LdHasSingleModule)")' >> $@ - @echo ',("ld is GNU ld", "$(LdIsGNULd)")' >> $@ - @echo ',("Merge objects command", "$(SettingsMergeObjectsCommand)")' >> $@ - @echo ',("Merge objects flags", "$(SettingsMergeObjectsFlags)")' >> $@ - @echo ',("Merge objects supports response files", "$(MergeObjsSupportsResponseFiles)")' >> $@ - @echo ',("ar command", "$(SettingsArCommand)")' >> $@ - @echo ',("ar flags", "$(ArArgs)")' >> $@ - @echo ',("ar supports at file", "$(ArSupportsAtFile)")' >> $@ - @echo ',("ar supports -L", "$(ArSupportsDashL)")' >> $@ - @echo ',("ranlib command", "$(SettingsRanlibCommand)")' >> $@ - @echo ',("otool command", "$(SettingsOtoolCommand)")' >> $@ - @echo ',("install_name_tool command", "$(SettingsInstallNameToolCommand)")' >> $@ - @echo ',("windres command", "$(SettingsWindresCommand)")' >> $@ - @echo ',("unlit command", "$$topdir/../bin/$(CrossCompilePrefix)unlit")' >> $@ - @echo ',("cross compiling", "$(CrossCompiling)")' >> $@ - @echo ',("target platform string", "$(TARGETPLATFORM)")' >> $@ - @echo ',("target os", "$(HaskellTargetOs)")' >> $@ + @echo '[("target os", "$(HaskellTargetOs)")' >> $@ @echo ',("target arch", "$(HaskellTargetArch)")' >> $@ - @echo ',("target word size", "$(TargetWordSize)")' >> $@ - @echo ',("target word big endian", "$(TargetWordBigEndian)")' >> $@ - @echo ',("target has GNU nonexec stack", "$(TargetHasGnuNonexecStack)")' >> $@ - @echo ',("target has .ident directive", "$(TargetHasIdentDirective)")' >> $@ - @echo ',("target has subsections via symbols", "$(TargetHasSubsectionsViaSymbols)")' >> $@ - @echo ',("target has libm", "$(TargetHasLibm)")' >> $@ - @echo ',("Unregisterised", "$(GhcUnregisterised)")' >> $@ - @echo ',("LLVM target", "$(LLVMTarget)")' >> $@ - @echo ',("LLVM llc command", "$(SettingsLlcCommand)")' >> $@ - @echo ',("LLVM opt command", "$(SettingsOptCommand)")' >> $@ - @echo ',("LLVM llvm-as command", "$(SettingsLlvmAsCommand)")' >> $@ - @echo ',("LLVM llvm-as flags", "$(SettingsLlvmAsFlags)")' >> $@ - @echo ',("Use inplace MinGW toolchain", "$(SettingsUseDistroMINGW)")' >> $@ - @echo + @echo ',("unlit command", "$$topdir/../bin/$(CrossCompilePrefix)unlit")' >> $@ + @echo ',("Use inplace MinGW toolchain", "$(EnableDistroToolchain)")' >> $@ @echo ',("target RTS linker only supports shared libraries", "$(TargetRTSLinkerOnlySupportsSharedLibs)")' >> $@ @echo ',("Use interpreter", "$(GhcWithInterpreter)")' >> $@ @echo ',("Support SMP", "$(GhcWithSMP)")' >> $@ @echo ',("RTS ways", "$(GhcRTSWays)")' >> $@ - @echo ',("Tables next to code", "$(TablesNextToCode)")' >> $@ - @echo ',("Leading underscore", "$(LeadingUnderscore)")' >> $@ - @echo ',("Use LibFFI", "$(UseLibffiForAdjustors)")' >> $@ @echo ',("RTS expects libdw", "$(GhcRtsWithLibdw)")' >> $@ @echo ',("Relative Global Package DB", "package.conf.d")' >> $@ @echo ',("base unit-id", "$(BaseUnitId)")' >> $@ @@ -167,7 +119,7 @@ install_bin_direct: $(INSTALL_PROGRAM) ./bin/* "$(DESTDIR)$(WrapperBinsDir)/" .PHONY: install_lib -install_lib: lib/settings +install_lib: lib/settings lib/targets/default.target @echo "Copying libraries to $(DESTDIR)$(ActualLibsDir)" $(INSTALL_DIR) "$(DESTDIR)$(ActualLibsDir)" ===================================== hadrian/bindist/config.mk.in ===================================== @@ -133,7 +133,7 @@ INSTALL_DIR = $(INSTALL) -m 755 -d CrossCompiling = @CrossCompiling@ CrossCompilePrefix = @CrossCompilePrefix@ GhcUnregisterised = @Unregisterised@ -EnableDistroToolchain = @SettingsUseDistroMINGW@ +EnableDistroToolchain = @EnableDistroToolchain@ BaseUnitId = @BaseUnitId@ # The THREADED_RTS requires `BaseReg` to be in a register and the @@ -206,25 +206,6 @@ TablesNextToCode = @TablesNextToCode@ LeadingUnderscore = @LeadingUnderscore@ LlvmTarget = @LlvmTarget@ -SettingsCCompilerCommand = @SettingsCCompilerCommand@ -SettingsCxxCompilerCommand = @SettingsCxxCompilerCommand@ -SettingsCPPCommand = @SettingsCPPCommand@ -SettingsCPPFlags = @SettingsCPPFlags@ -SettingsHaskellCPPCommand = @SettingsHaskellCPPCommand@ -SettingsHaskellCPPFlags = @SettingsHaskellCPPFlags@ -SettingsJavaScriptCPPCommand = @SettingsJavaScriptCPPCommand@ -SettingsJavaScriptCPPFlags = @SettingsJavaScriptCPPFlags@ -SettingsCmmCPPCommand = @SettingsCmmCPPCommand@ -SettingsCmmCPPFlags = @SettingsCmmCPPFlags@ -SettingsCmmCPPSupportsG0 = @SettingsCmmCPPSupportsG0@ -SettingsCCompilerFlags = @SettingsCCompilerFlags@ -SettingsCxxCompilerFlags = @SettingsCxxCompilerFlags@ -SettingsCCompilerLinkFlags = @SettingsCCompilerLinkFlags@ -SettingsCCompilerSupportsNoPie = @SettingsCCompilerSupportsNoPie@ -SettingsMergeObjectsCommand = @SettingsMergeObjectsCommand@ -SettingsMergeObjectsFlags = @SettingsMergeObjectsFlags@ -SettingsArCommand = @SettingsArCommand@ -SettingsOtoolCommand = @SettingsOtoolCommand@ SettingsInstallNameToolCommand = @SettingsInstallNameToolCommand@ SettingsRanlibCommand = @SettingsRanlibCommand@ SettingsWindresCommand = @SettingsWindresCommand@ @@ -232,4 +213,3 @@ SettingsLibtoolCommand = @SettingsLibtoolCommand@ SettingsLlcCommand = @SettingsLlcCommand@ SettingsOptCommand = @SettingsOptCommand@ SettingsLlvmAsCommand = @SettingsLlvmAsCommand@ -SettingsUseDistroMINGW = @SettingsUseDistroMINGW@ ===================================== hadrian/cfg/system.config.in ===================================== @@ -79,7 +79,7 @@ project-git-commit-id = @ProjectGitCommitId@ # generated by configure, to generated being by the build system. Many of these # might become redundant. # See Note [tooldir: How GHC finds mingw on Windows] -settings-use-distro-mingw = @SettingsUseDistroMINGW@ +settings-use-distro-mingw = @EnableDistroToolchain@ target-has-libm = @TargetHasLibm@ ===================================== hadrian/src/Rules/BinaryDist.hs ===================================== @@ -141,6 +141,7 @@ bindistRules = do installPrefix <- fromMaybe (error prefixErr) <$> cmdPrefix installTo NotRelocatable installPrefix + -- TODO: ROMES: TOUCH HERE? phony "binary-dist-dir" $ do version <- setting ProjectVersion targetPlatform <- setting TargetPlatformFull ===================================== hadrian/src/Rules/Generate.hs ===================================== @@ -425,7 +425,7 @@ bindistRules = do , interpolateSetting "LlvmMinVersion" LlvmMinVersion , interpolateVar "LlvmTarget" $ getTarget tgtLlvmTarget , interpolateSetting "ProjectVersion" ProjectVersion - , interpolateVar "SettingsUseDistroMINGW" $ lookupSystemConfig "settings-use-distro-mingw" + , interpolateVar "EnableDistroToolchain" $ lookupSystemConfig "settings-use-distro-mingw" , interpolateVar "TablesNextToCode" $ yesNo <$> getTarget tgtTablesNextToCode , interpolateVar "TargetHasLibm" $ lookupSystemConfig "target-has-libm" , interpolateVar "TargetPlatform" $ getTarget targetPlatformTriple ===================================== m4/fp_settings.m4 ===================================== @@ -52,32 +52,7 @@ AC_DEFUN([SUBST_TOOLDIR], # Set the variables used in the settings file AC_DEFUN([FP_SETTINGS], [ - SettingsUseDistroMINGW="$EnableDistroToolchain" - - SettingsCCompilerCommand="$CC" - SettingsCCompilerFlags="$CONF_CC_OPTS_STAGE2" - SettingsCxxCompilerCommand="$CXX" - SettingsCxxCompilerFlags="$CONF_CXX_OPTS_STAGE2" - SettingsCPPCommand="$CPPCmd" - SettingsCPPFlags="$CONF_CPP_OPTS_STAGE2" - SettingsHaskellCPPCommand="$HaskellCPPCmd" - SettingsHaskellCPPFlags="$HaskellCPPArgs" - SettingsJavaScriptCPPCommand="$JavaScriptCPPCmd" - SettingsJavaScriptCPPFlags="$JavaScriptCPPArgs" - SettingsCmmCPPCommand="$CmmCPPCmd" - SettingsCmmCPPFlags="$CmmCPPArgs" - SettingsCCompilerLinkFlags="$CONF_GCC_LINKER_OPTS_STAGE2" - SettingsArCommand="$ArCmd" SettingsRanlibCommand="$RanlibCmd" - SettingsMergeObjectsCommand="$MergeObjsCmd" - SettingsMergeObjectsFlags="$MergeObjsArgs" - - AS_CASE( - ["$CmmCPPSupportsG0"], - [True], [SettingsCmmCPPSupportsG0=YES], - [False], [SettingsCmmCPPSupportsG0=NO], - [AC_MSG_ERROR(Unknown CPPSupportsG0 value $CmmCPPSupportsG0)] - ) if test -z "$WindresCmd"; then SettingsWindresCommand="/bin/false" @@ -94,13 +69,8 @@ AC_DEFUN([FP_SETTINGS], if test "$EnableDistroToolchain" = "YES"; then # If the user specified --enable-distro-toolchain then we just use the # executable names, not paths. - SettingsCCompilerCommand="$(basename $SettingsCCompilerCommand)" - SettingsHaskellCPPCommand="$(basename $SettingsHaskellCPPCommand)" - SettingsCmmCPPCommand="$(basename $SettingsCmmCPPCommand)" - SettingsJavaScriptCPPCommand="$(basename $SettingsJavaScriptCPPCommand)" + dnl XXX="$(basename XXX)" SettingsLdCommand="$(basename $SettingsLdCommand)" - SettingsMergeObjectsCommand="$(basename $SettingsMergeObjectsCommand)" - SettingsArCommand="$(basename $SettingsArCommand)" SettingsWindresCommand="$(basename $SettingsWindresCommand)" SettingsLlcCommand="$(basename $SettingsLlcCommand)" SettingsOptCommand="$(basename $SettingsOptCommand)" @@ -111,22 +81,7 @@ AC_DEFUN([FP_SETTINGS], # Handle the Windows toolchain installed in FP_SETUP_WINDOWS_TOOLCHAIN. # We need to issue a substitution to use $tooldir, # See Note [tooldir: How GHC finds mingw on Windows] - SUBST_TOOLDIR([SettingsCCompilerCommand]) - SUBST_TOOLDIR([SettingsCCompilerFlags]) - SUBST_TOOLDIR([SettingsCxxCompilerCommand]) - SUBST_TOOLDIR([SettingsCxxCompilerFlags]) - SUBST_TOOLDIR([SettingsCCompilerLinkFlags]) - SUBST_TOOLDIR([SettingsCPPCommand]) - SUBST_TOOLDIR([SettingsCPPFlags]) - SUBST_TOOLDIR([SettingsHaskellCPPCommand]) - SUBST_TOOLDIR([SettingsHaskellCPPFlags]) - SUBST_TOOLDIR([SettingsCmmCPPCommand]) - SUBST_TOOLDIR([SettingsCmmCPPFlags]) - SUBST_TOOLDIR([SettingsJavaScriptCPPCommand]) - SUBST_TOOLDIR([SettingsJavaScriptCPPFlags]) - SUBST_TOOLDIR([SettingsMergeObjectsCommand]) - SUBST_TOOLDIR([SettingsMergeObjectsFlags]) - SUBST_TOOLDIR([SettingsArCommand]) + dnl SUBST_TOOLDIR([XXX]) SUBST_TOOLDIR([SettingsRanlibCommand]) SUBST_TOOLDIR([SettingsWindresCommand]) SUBST_TOOLDIR([SettingsLlcCommand]) @@ -135,37 +90,14 @@ AC_DEFUN([FP_SETTINGS], SUBST_TOOLDIR([SettingsLlvmAsFlags]) fi - # Mac-only tools - SettingsOtoolCommand="$OtoolCmd" SettingsInstallNameToolCommand="$InstallNameToolCmd" - SettingsCCompilerSupportsNoPie="$CONF_GCC_SUPPORTS_NO_PIE" - - AC_SUBST(SettingsCCompilerCommand) - AC_SUBST(SettingsCxxCompilerCommand) - AC_SUBST(SettingsCPPCommand) - AC_SUBST(SettingsCPPFlags) - AC_SUBST(SettingsHaskellCPPCommand) - AC_SUBST(SettingsHaskellCPPFlags) - AC_SUBST(SettingsCmmCPPCommand) - AC_SUBST(SettingsCmmCPPFlags) - AC_SUBST(SettingsCmmCPPSupportsG0) - AC_SUBST(SettingsJavaScriptCPPCommand) - AC_SUBST(SettingsJavaScriptCPPFlags) - AC_SUBST(SettingsCCompilerFlags) - AC_SUBST(SettingsCxxCompilerFlags) - AC_SUBST(SettingsCCompilerLinkFlags) - AC_SUBST(SettingsCCompilerSupportsNoPie) - AC_SUBST(SettingsMergeObjectsCommand) - AC_SUBST(SettingsMergeObjectsFlags) - AC_SUBST(SettingsArCommand) + AC_SUBST(EnableDistroToolchain) AC_SUBST(SettingsRanlibCommand) - AC_SUBST(SettingsOtoolCommand) AC_SUBST(SettingsInstallNameToolCommand) AC_SUBST(SettingsWindresCommand) AC_SUBST(SettingsLlcCommand) AC_SUBST(SettingsOptCommand) AC_SUBST(SettingsLlvmAsCommand) AC_SUBST(SettingsLlvmAsFlags) - AC_SUBST(SettingsUseDistroMINGW) ]) ===================================== mk/hsc2hs.in ===================================== @@ -1,6 +1,6 @@ -HSC2HS_C="@SettingsCCompilerFlags@" +HSC2HS_C="@CONF_CC_OPTS_STAGE2@" -HSC2HS_L="@SettingsCCompilerLinkFlags@" +HSC2HS_L="@CONF_GCC_LINKER_OPTS_STAGE2@" tflag="--template=$libdir/template-hsc.h" Iflag="-I$includedir/include/" View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e4b51a4f2800cd8de1ca157cd7acbad... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e4b51a4f2800cd8de1ca157cd7acbad... You're receiving this email because of your account on gitlab.haskell.org.