diff options
author | Ben Gamari <ben@smart-cactus.org> | 2020-04-10 01:24:37 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2020-12-04 15:04:01 -0500 |
commit | 391a3f6d3776a069534a91e34e5915a0c8d0391b (patch) | |
tree | b613d09bd389e5be0e61a1b8ba362a45165bee03 | |
parent | 0f28389c783a54a74c472f176c250ddf7a9c4bf4 (diff) | |
download | haskell-391a3f6d3776a069534a91e34e5915a0c8d0391b.tar.gz |
hadrian: Don't --export-dynamic on Darwin
When fixing #17962 I neglected to consider that --export-dynamic is only
supported on ELF platforms.
(cherry picked from commit 35799dda07813e4c510237290a631d4d11fb92d2)
-rw-r--r-- | hadrian/src/Oracles/Setting.hs | 8 | ||||
-rw-r--r-- | hadrian/src/Settings/Packages.hs | 7 |
2 files changed, 14 insertions, 1 deletions
diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs index 47b988accb..ce0c44b216 100644 --- a/hadrian/src/Oracles/Setting.hs +++ b/hadrian/src/Oracles/Setting.hs @@ -11,6 +11,7 @@ module Oracles.Setting ( -- ** Target platform things anyTargetPlatform, anyTargetOs, anyTargetArch, anyHostOs, + isElfTarget, ArmVersion(..), targetArmVersion, ghcWithInterpreter, useLibFFIForAdjustors @@ -241,6 +242,13 @@ anyTargetArch = matchSetting TargetArch anyHostOs :: [String] -> Action Bool anyHostOs = matchSetting HostOs +-- | Check whether the target OS uses the ELF object format. +isElfTarget :: Action Bool +isElfTarget = anyTargetOs + [ "linux", "freebsd", "dragonfly", "openbsd", "netbsd", "solaris2", "kfreebsdgnu" + , "haiku", "linux-android" + ] + -- | Check whether the host OS supports the @-rpath@ linker option when -- using dynamic linking. -- diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs index 6e6f33f35f..6c994b5995 100644 --- a/hadrian/src/Settings/Packages.hs +++ b/hadrian/src/Settings/Packages.hs @@ -150,7 +150,12 @@ packageArgs = do -- refer to the RTS. This is harmless if you don't use it (adds a bit -- of overhead to startup and increases the binary sizes) but if you -- need it there's no alternative. - , package iserv ? mconcat + -- + -- The Solaris linker does not support --export-dynamic option. It also + -- does not need it since it exports all dynamic symbols by default + , package iserv + ? expr isElfTarget + ? notM (expr $ anyTargetOs ["freebsd", "solaris2"])? mconcat [ builder (Ghc LinkHs) ? arg "-optl-Wl,--export-dynamic" ] -------------------------------- haddock ------------------------------- |