Toolchain Differences (Windows)
Summary
While running configure
to build GHC I was prompted to report a bug by the following message:
There are some differences between the toolchain configured by
"configure"
(hadrian/cfg/default.target
) and the toolchain configured by the"ghc-toolchain"
program (hadrian/cfg/default.target.ghc-toolchain
). in a near future, we will move to configuring toolchains with"ghc-toolchain"
by default, so you might have discovered a future bug. In light of it, if you've spotted this difference, please report a GHC bug at https://www.haskell.org/ghc/reportabug
Click here to uncollapse my toolchain differences
configure: WARNING:
There are some differences between the toolchain configured by "configure" (hadrian/cfg/default.target) and the toolchain configured by the "ghc-toolchain" program (hadrian/cfg/default.target.ghc-toolchain).
1,39c1,39
< Target
< { tgtArchOs = ArchOS {archOS_arch = ArchX86_64, archOS_OS = OSMinGW32}
< , tgtVendor = Just "unknown"
< , tgtLocallyExecutable = True
< , tgtSupportsGnuNonexecStack = False
< , tgtSupportsSubsectionsViaSymbols = False
< , tgtSupportsIdentDirective = False
< , tgtWordSize = WS8
< , tgtEndianness = LittleEndian
< , tgtSymbolsHaveLeadingUnderscore = False
< , tgtLlvmTarget = "x86_64-unknown-windows"
< , tgtUnregisterised = False
< , tgtTablesNextToCode = True
< , tgtUseLibffiForAdjustors = False
< , tgtCCompiler = Cc {ccProgram = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/clang.exe", prgFlags = ["--rtlib=compiler-rt","-D_UCRT","-IC:/Daten/git/ghc/inplace/mingw/include","-Qunused-arguments"]}}
< , tgtCxxCompiler = Cxx {cxxProgram = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/clang++.exe", prgFlags = ["-IC:/Daten/git/ghc/inplace/mingw/include"]}}
< , tgtCPreprocessor = Cpp {cppProgram = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/clang.exe", prgFlags = ["-E","-IC:/Daten/git/ghc/inplace/mingw/include"]}}
< , tgtHsCPreprocessor = HsCpp {hsCppProgram = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/clang.exe", prgFlags = ["-E","-undef","-traditional","-Wno-invalid-pp-token","-Wno-unicode","-Wno-trigraphs"]}}
< , tgtCCompilerLink = CcLink
< { ccLinkProgram = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/clang.exe", prgFlags = ["-fuse-ld=lld","--rtlib=compiler-rt","-D_UCRT","-LC:/Daten/git/ghc/inplace/mingw/lib","-LC:/Daten/git/ghc/inplace/mingw/x86_64-w64-mingw32/lib","-fstack-check"]}
< , ccLinkSupportsNoPie = False
< , ccLinkSupportsCompactUnwind = False
< , ccLinkSupportsFilelist = False
< , ccLinkIsGnu = True
< }
<
< , tgtAr = Ar
< { arMkArchive = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/llvm-ar.exe", prgFlags = ["qcls"]}
< , arIsGnu = False
< , arSupportsAtFile = True
< , arSupportsDashL = True
< , arNeedsRanlib = False
< }
<
< , tgtRanlib = Just (Ranlib {ranlibProgram = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/llvm-ranlib.exe", prgFlags = []}})
< , tgtNm = Nm {nmProgram = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/llvm-nm.exe", prgFlags = []}}
< , tgtMergeObjs = Just (MergeObjs {mergeObjsProgram = Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/ld.lld.exe", prgFlags = ["-r"]}, mergeObjsSupportsResponseFiles = False})
< , tgtWindres = Just (Program {prgPath = "C:/Daten/git/ghc/inplace/mingw/bin/llvm-windres.exe", prgFlags = []})
< }
---
> Target
> { tgtArchOs = ArchOS {archOS_arch = ArchX86_64, archOS_OS = OSMinGW32}
> , tgtVendor = Just "unknown"
> , tgtLocallyExecutable = True
> , tgtSupportsGnuNonexecStack = False
> , tgtSupportsSubsectionsViaSymbols = False
> , tgtSupportsIdentDirective = False
> , tgtWordSize = WS8
> , tgtEndianness = LittleEndian
> , tgtSymbolsHaveLeadingUnderscore = False
> , tgtLlvmTarget = "x86_64-unknown-windows"
> , tgtUnregisterised = False
> , tgtTablesNextToCode = True
> , tgtUseLibffiForAdjustors = False
> , tgtCCompiler = Cc {ccProgram = Program {prgPath = "C:\\Daten\\git\\ghc\\inplace\\mingw\\bin\\clang.exe", prgFlags = ["-Qunused-arguments"]}}
> , tgtCxxCompiler = Cxx {cxxProgram = Program {prgPath = "C:\\Daten\\git\\ghc\\inplace\\mingw\\bin\\clang++.exe", prgFlags = []}}
> , tgtCPreprocessor = Cpp {cppProgram = Program {prgPath = "C:\\Daten\\git\\ghc\\inplace\\mingw\\bin\\clang.exe", prgFlags = ["-E"]}}
> , tgtHsCPreprocessor = HsCpp {hsCppProgram = Program {prgPath = "C:\\Daten\\git\\ghc\\inplace\\mingw\\bin\\clang.exe", prgFlags = ["-E","-undef","-traditional","-Wno-invalid-pp-token","-Wno-unicode","-Wno-trigraphs"]}}
> , tgtCCompilerLink = CcLink
> { ccLinkProgram = Program {prgPath = "C:\\Daten\\git\\ghc\\inplace\\mingw\\bin\\clang.exe", prgFlags = ["-fstack-check"]}
> , ccLinkSupportsNoPie = False
> , ccLinkSupportsCompactUnwind = False
> , ccLinkSupportsFilelist = False
> , ccLinkIsGnu = True
> }
>
> , tgtAr = Ar
> { arMkArchive = Program {prgPath = "C:\\Daten\\git\\ghc\\inplace\\mingw\\bin\\llvm-ar.exe", prgFlags = ["qcls"]}
> , arIsGnu = False
> , arSupportsAtFile = True
> , arSupportsDashL = True
> , arNeedsRanlib = False
> }
>
> , tgtRanlib = Just (Ranlib {ranlibProgram = Program {prgPath = "C:\\Users\\Tobias\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-9.4.5\\mingw\\bin\\ranlib.exe", prgFlags = []}})
> , tgtNm = Nm {nmProgram = Program {prgPath = "C:\\Daten\\git\\ghc\\inplace\\mingw\\bin\\llvm-nm.exe", prgFlags = []}}
> , tgtMergeObjs = Nothing
> , tgtWindres = Just (Program {prgPath = "C:\\Daten\\git\\ghc\\inplace\\mingw\\bin\\llvm-windres.exe", prgFlags = []})
> }
Don't worry! This won't affect your ghc in any way.
However, in a near future, we will move to configuring toolchains with "ghc-toolchain" by default, so you might have discovered a future bug.
In light of it, if you've spotted this difference, please report a GHC bug at https://www.haskell.org/ghc/reportabug
I see at least differences in tgtRanlib
and tgtMergeObjs
.
Steps to reproduce
Following the instructions to build GHC on Windows, specifically method C: Hadrian Build via Stack.
Expected behavior
No prompt to report a bug