diff options
-rw-r--r-- | hadrian/bindist/Makefile | 58 | ||||
-rw-r--r-- | hadrian/src/Rules/BinaryDist.hs | 7 | ||||
-rw-r--r-- | rts/include/ghc.mk | 1 |
3 files changed, 65 insertions, 1 deletions
diff --git a/hadrian/bindist/Makefile b/hadrian/bindist/Makefile index 74d2def7f5..c04e8a75bb 100644 --- a/hadrian/bindist/Makefile +++ b/hadrian/bindist/Makefile @@ -95,6 +95,62 @@ ActualLibsDir=${ghclibdir}/lib endif WrapperBinsDir=${bindir} +# N.B. this is duplicated from includes/ghc.mk. +lib/settings : + $(call removeFiles,$@) + @echo '[("GCC extra via C opts", "$(GccExtraViaCOpts)")' >> $@ + @echo ',("C compiler command", "$(SettingsCCompilerCommand)")' >> $@ + @echo ',("C compiler flags", "$(SettingsCCompilerFlags)")' >> $@ + @echo ',("C++ compiler flags", "$(SettingsCxxCompilerFlags)")' >> $@ + @echo ',("C compiler link flags", "$(SettingsCCompilerLinkFlags)")' >> $@ + @echo ',("C compiler supports -no-pie", "$(SettingsCCompilerSupportsNoPie)")' >> $@ + @echo ',("Haskell CPP command", "$(SettingsHaskellCPPCommand)")' >> $@ + @echo ',("Haskell CPP flags", "$(SettingsHaskellCPPFlags)")' >> $@ + @echo ',("ld command", "$(SettingsLdCommand)")' >> $@ + @echo ',("ld flags", "$(SettingsLdFlags)")' >> $@ + @echo ',("ld supports compact unwind", "$(LdHasNoCompactUnwind)")' >> $@ + @echo ',("ld supports build-id", "$(LdHasBuildId)")' >> $@ + @echo ',("ld supports filelist", "$(LdHasFilelist)")' >> $@ + @echo ',("ld is GNU ld", "$(LdIsGNULd)")' >> $@ + @echo ',("Merge objects command", "$(SettingsMergeObjectsCommand)")' >> $@ + @echo ',("Merge objects flags", "$(SettingsMergeObjectsFlags)")' >> $@ + @echo ',("ar command", "$(SettingsArCommand)")' >> $@ + @echo ',("ar flags", "$(ArArgs)")' >> $@ + @echo ',("ar supports at file", "$(ArSupportsAtFile)")' >> $@ + @echo ',("ranlib command", "$(SettingsRanlibCommand)")' >> $@ + @echo ',("otool command", "$(SettingsOtoolCommand)")' >> $@ + @echo ',("install_name_tool command", "$(SettingsInstallNameToolCommand)")' >> $@ + @echo ',("touch command", "$(SettingsTouchCommand)")' >> $@ + @echo ',("dllwrap command", "$(SettingsDllWrapCommand)")' >> $@ + @echo ',("windres command", "$(SettingsWindresCommand)")' >> $@ + @echo ',("libtool command", "$(SettingsLibtoolCommand)")' >> $@ + @echo ',("unlit command", "$$topdir/bin/unlit")' >> $@ + @echo ',("cross compiling", "$(CrossCompiling)")' >> $@ + @echo ',("target platform string", "$(TARGETPLATFORM)")' >> $@ + @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 RTS linker", "$(TargetHasRTSLinker)")' >> $@ + @echo ',("Unregisterised", "$(GhcUnregisterised)")' >> $@ + @echo ',("LLVM target", "$(LLVMTarget_CPP)")' >> $@ + @echo ',("LLVM llc command", "$(SettingsLlcCommand)")' >> $@ + @echo ',("LLVM opt command", "$(SettingsOptCommand)")' >> $@ + @echo ',("LLVM clang command", "$(SettingsClangCommand)")' >> $@ + @echo + @echo ',("bignum backend", "$(BIGNUM_BACKEND)")' >> $@ + @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 "]" >> $@ + # We need to install binaries relative to libraries. BINARIES = $(wildcard ./bin/*) install_bin_libdir: @@ -110,7 +166,7 @@ install_bin_direct: cp ./bin/* "$(WrapperBinsDir)/" LIBRARIES = $(wildcard ./lib/*) -install_lib: +install_lib: lib/settings @echo "Copying libraries to $(ActualLibsDir)" $(INSTALL_DIR) "$(ActualLibsDir)" for i in $(LIBRARIES); do \ diff --git a/hadrian/src/Rules/BinaryDist.hs b/hadrian/src/Rules/BinaryDist.hs index 43a0f62f8c..8a03064ffd 100644 --- a/hadrian/src/Rules/BinaryDist.hs +++ b/hadrian/src/Rules/BinaryDist.hs @@ -193,6 +193,13 @@ bindistRules = do copyDirectory (ghcBuildDir -/- "lib") bindistFilesDir copyDirectory (rtsIncludeDir) bindistFilesDir + -- The settings file must be regenerated by the bindist installation + -- logic to account for the environment discovered by the bindist + -- configure script on the host. Not on Windows, however, where + -- we do not ship a configure script with the bindist. See #20254. + unless windowsHost $ + removeFile (bindistFilesDir -/- "lib" -/- "settings") + -- Call ghc-pkg recache, after copying so the package.cache is -- accurate, then it's on the distributor to use `cp -a` to install -- a relocatable bindist. diff --git a/rts/include/ghc.mk b/rts/include/ghc.mk index 88cb12caff..26275075bd 100644 --- a/rts/include/ghc.mk +++ b/rts/include/ghc.mk @@ -207,6 +207,7 @@ $(eval $(call includesHeaderPlatform,1)) includes_SETTINGS = rts/include/dist/build/settings +# N.B. this is duplicated in hadrian/bindist/Makefile. $(includes_SETTINGS) : rts/include/Makefile | $$(dir $$@)/. $(call removeFiles,$@) @echo '[("GCC extra via C opts", "$(GccExtraViaCOpts)")' >> $@ |